finalrequest #59

Closed
SinusFox wants to merge 10 commits from Documentation into main
30 changed files with 43413 additions and 23 deletions
Showing only changes of commit adbe6f8a25 - Show all commits
+8
View File
@@ -0,0 +1,8 @@
{
"extends": ["next/core-web-vitals", "next/typescript"],
"rules": {
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-explicit-any": "off",
"prefer-const": "off"
}
}
+96
View File
@@ -0,0 +1,96 @@
# Sample workflow for building and deploying a Next.js site to GitHub Pages
#
# To get started with Next.js see: https://nextjs.org/docs/getting-started
#
name: Deploy Next.js site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Automatically run on Pull Request
pull_request:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Detect package manager
id: detect-package-manager
run: |
if [ -f "${{ github.workspace }}/yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
exit 0
elif [ -f "${{ github.workspace }}/package.json" ]; then
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
exit 0
else
echo "Unable to determine package manager"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"
cache: ${{ steps.detect-package-manager.outputs.manager }}
- name: Setup Pages
uses: actions/configure-pages@v5
with:
# Automatically inject basePath in your Next.js configuration file and disable
# server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized).
#
# You may remove this line if you want to manage the configuration yourself.
static_site_generator: next
- name: Restore cache
uses: actions/cache@v4
with:
path: |
.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json', '**/yarn.lock') }}-
- name: Install dependencies
run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
- name: Build with Next.js
run: ${{ steps.detect-package-manager.outputs.runner }} next build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./out
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+43
View File
@@ -851,3 +851,46 @@ FodyWeavers.xsd
/.idea/modules.xml
/.idea/Operations-Research-Tool.iml
/.idea/vcs.xml
### Added by npx/npm for Next.JS ###
# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
## adding local stuff
# idea
/.idea
# Writerside
/Writerside
-21
View File
@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Marcel Pöppe
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+362
View File
@@ -0,0 +1,362 @@
Mozilla Public License, version 2.0
1. Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to the
creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used by a
Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached the
notice in Exhibit A, the Executable Form of such Source Code Form, and
Modifications of such Source Code Form, in each case including portions
thereof.
1.5. "Incompatible With Secondary Licenses"
means
a. that the initial Contributor has attached the notice described in
Exhibit B to the Covered Software; or
b. that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the terms of
a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in a
separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible, whether
at the time of the initial grant or subsequently, any and all of the
rights conveyed by this License.
1.10. "Modifications"
means any of the following:
a. any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered Software; or
b. any new file in Source Code Form that contains any Covered Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the License,
by the making, using, selling, offering for sale, having made, import,
or transfer of either its Contributions or its Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU Lesser
General Public License, Version 2.1, the GNU Affero General Public
License, Version 3.0, or any later versions of those licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that controls, is
controlled by, or is under common control with You. For purposes of this
definition, "control" means (a) the power, direct or indirect, to cause
the direction or management of such entity, whether by contract or
otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
a. under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
b. under Patent Claims of such Contributor to make, use, sell, offer for
sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
a. for any code that a Contributor has removed from Covered Software; or
b. for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
c. under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights to
grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
a. such Covered Software must also be made available in Source Code Form,
as described in Section 3.1, and You must inform recipients of the
Executable Form how they can obtain a copy of such Source Code Form by
reasonable means in a timely manner, at a charge no more than the cost
of distribution to the recipient; and
b. You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter the
recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty, or
limitations of liability) contained within the Source Code Form of the
Covered Software, except that You may alter any license notices to the
extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Covered Software due to statute,
judicial order, or regulation then You must: (a) comply with the terms of
this License to the maximum extent possible; and (b) describe the
limitations and the code they affect. Such description must be placed in a
text file included with all distributions of the Covered Software under
this License. Except to the extent prohibited by statute or regulation,
such description must be sufficiently detailed for a recipient of ordinary
skill to be able to understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You
fail to comply with any of its terms. However, if You become compliant,
then the rights granted under this License from a particular Contributor
are reinstated (a) provisionally, unless and until such Contributor
explicitly and finally terminates Your grants, and (b) on an ongoing
basis, if such Contributor fails to notify You of the non-compliance by
some reasonable means prior to 60 days after You have come back into
compliance. Moreover, Your grants from a particular Contributor are
reinstated on an ongoing basis if such Contributor notifies You of the
non-compliance by some reasonable means, this is the first time You have
received notice of non-compliance with this License from such
Contributor, and You become compliant prior to 30 days after Your receipt
of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
license agreements (excluding distributors and resellers) which have been
validly granted by You or Your distributors under this License prior to
termination shall survive termination.
6. Disclaimer of Warranty
Covered Software is provided under this License on an "as is" basis,
without warranty of any kind, either expressed, implied, or statutory,
including, without limitation, warranties that the Covered Software is free
of defects, merchantable, fit for a particular purpose or non-infringing.
The entire risk as to the quality and performance of the Covered Software
is with You. Should any Covered Software prove defective in any respect,
You (not any Contributor) assume the cost of any necessary servicing,
repair, or correction. This disclaimer of warranty constitutes an essential
part of this License. No use of any Covered Software is authorized under
this License except under this disclaimer.
7. Limitation of Liability
Under no circumstances and under no legal theory, whether tort (including
negligence), contract, or otherwise, shall any Contributor, or anyone who
distributes Covered Software as permitted above, be liable to You for any
direct, indirect, special, incidental, or consequential damages of any
character including, without limitation, damages for lost profits, loss of
goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses, even if such party shall have been
informed of the possibility of such damages. This limitation of liability
shall not apply to liability for death or personal injury resulting from
such party's negligence to the extent applicable law prohibits such
limitation. Some jurisdictions do not allow the exclusion or limitation of
incidental or consequential damages, so this exclusion and limitation may
not apply to You.
8. Litigation
Any litigation relating to this License may be brought only in the courts
of a jurisdiction where the defendant maintains its principal place of
business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions. Nothing
in this Section shall prevent a party's ability to bring cross-claims or
counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides that
the language of a contract shall be construed against the drafter shall not
be used to construe this License against a Contributor.
10. Versions of the License
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses If You choose to distribute Source Code Form that is
Incompatible With Secondary Licenses under the terms of this version of
the License, the notice described in Exhibit B of this License must be
attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file,
then You may include the notice in a location (such as a LICENSE file in a
relevant directory) where a recipient would be likely to look for such a
notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
This Source Code Form is "Incompatible
With Secondary Licenses", as defined by
the Mozilla Public License, v. 2.0.
-2
View File
@@ -66,5 +66,3 @@ If you have the desire to contact the team behind this project, use the contact
+ [widepoeppihappy](https://github.com/widepoeppihappy)
# Troubleshooting
If you find bug, please contact us by [creating an issue](https://github.com/Spaceholder-Programming/Operations-Research-Tool/issues/new).
+48
View File
@@ -0,0 +1,48 @@
\*for functions box: *\
Maximize
obj: + 786433 x1 + 655361 x2 + 589825 x3 + 557057 x4
+ 540673 x5 + 532481 x6 + 528385 x7 + 526337 x8 + 525313 x9
+ 524801 x10 + 524545 x11 + 524417 x12 + 524353 x13
+ 524321 x14 + 524305 x15
Subject To
cap: + 786433 x1 + 655361 x2 + 589825 x3 + 557057 x4
+ 540673 x5 + 532481 x6 + 528385 x7 + 526337 x8 + 525313 x9
+ 524801 x10 + 524545 x11 + 524417 x12 + 524353 x13
+ 524321 x14 + 524305 x15 <= 4194303.5
Bounds
0 <= x1 <= 1
0 <= x2 <= 1
0 <= x3 <= 1
0 <= x4 <= 1
0 <= x5 <= 1
0 <= x6 <= 1
0 <= x7 <= 1
0 <= x8 <= 1
0 <= x9 <= 1
0 <= x10 <= 1
0 <= x11 <= 1
0 <= x12 <= 1
0 <= x13 <= 1
0 <= x14 <= 1
0 <= x15 <= 1
\*for var box*\
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
x13
x14
x15
+11
View File
@@ -0,0 +1,11 @@
maximize objective: x+y
subject to
+1 x + 2 y <= 15
+3 x + 1 y <= 20
bounds
x >= 0
y >= 0
x
y
+4
View File
@@ -0,0 +1,4 @@
/** @type {import('next').NextConfig} */
const nextConfig = {};
export default nextConfig;
+5721
View File
File diff suppressed because it is too large Load Diff
+34
View File
@@ -0,0 +1,34 @@
{
"name": "or-tool",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"glpk.js": "^4.0.2",
"i18n": "^0.15.1",
"i18next": "^23.15.2",
"i18next-browser-languagedetector": "^8.0.0",
"next": "14.2.11",
"next-i18next": "^15.3.1",
"react": "^18",
"react-dom": "^18",
"react-i18next": "^15.0.2",
"react-popup": "^0.11.2",
"reactjs-popup": "^2.0.6"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.11",
"postcss": "^8",
"tailwindcss": "^3.4.1",
"typescript": "^5"
}
}
+8
View File
@@ -0,0 +1,8 @@
/** @type {import('postcss-load-config').Config} */
const config = {
plugins: {
tailwindcss: {},
},
};
export default config;
+60
View File
@@ -0,0 +1,60 @@
import { NextApiRequest, NextApiResponse } from 'next';
import GLPK from 'glpk.js';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method === 'POST') {
const { objective, constraints } = req.body;
try {
const glpk = await GLPK();
const options = {
msglev: glpk.GLP_MSG_ALL,
presol: true,
cb: {
call: (progress: any) => console.log(progress),
each: 1
}
};
const problem = {
name: 'LP',
objective: {
direction: objective.direction === 'max' ? glpk.GLP_MAX : glpk.GLP_MIN,
name: 'obj',
vars: objective.vars
},
subjectTo: constraints.map((c: any) => ({
name: c.name,
vars: c.vars,
bnds: {
type: glpk.GLP_UP,
ub: c.bnds.ub,
lb: c.bnds.lb
}
}))
};
const result = glpk.solve(problem, options);
const lpFormat = `\n# Problem Definition\n
name: ${problem.name}\n
# Objective Function\n
${problem.objective.direction === glpk.GLP_MAX ? 'max' : 'min'} ${problem.objective.vars.map((v: any) => `${v.coef} ${v.name}`).join(' + ')}\n
# Constraints\n
${problem.subjectTo.map((c: any) => `${c.vars.map((v: any) => `${v.coef} ${v.name}`).join(' + ')} ${c.bnds.ub ? `<= ${c.bnds.ub}` : ''}`).join('\n')}\n`;
res.status(200).json({ result, lpFormat });
} catch (error: unknown) {
// Type Assertion to access properties of the error object
if (error instanceof Error) {
console.error('Error processing optimization:', error);
res.status(500).json({ message: 'Error processing optimization', error: error.message });
} else {
console.error('Unknown error:', error);
res.status(500).json({ message: 'Error processing optimization', error: 'Unknown error' });
}
}
} else {
res.status(405).json({ message: 'Only POST method is allowed' });
}
}
+76
View File
@@ -0,0 +1,76 @@
import { NextApiRequest, NextApiResponse } from 'next';
import GLPK from 'glpk.js';
interface Variable {
name: string;
coef: number;
}
interface Constraint {
name: string;
vars: Variable[];
bnds: {
lb: number;
ub: number;
};
}
interface Objective {
direction: 'max' | 'min';
vars: Variable[];
}
interface RequestBody {
objective: Objective;
constraints: Constraint[];
bounds?: any;
}
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method === 'POST') {
const { objective, constraints, bounds }: RequestBody = req.body;
if (!objective || !constraints) {
return res.status(400).json({ message: 'Invalid input data. Ensure that "objective" and "constraints" are provided correctly.' });
}
try {
const glpk = await GLPK();
const options = { msglev: glpk.GLP_MSG_ALL, presol: true };
const problem = {
name: 'MIP',
objective: {
direction: objective.direction === 'max' ? glpk.GLP_MAX : glpk.GLP_MIN,
name: 'obj',
vars: objective.vars.map((v: Variable) => ({ name: v.name, coef: v.coef }))
},
subjectTo: constraints.map((c: Constraint) => ({
name: c.name,
vars: c.vars.map((v: Variable) => ({ name: v.name, coef: v.coef })),
bnds: {
type: glpk.GLP_UP,
lb: c.bnds.lb,
ub: c.bnds.ub
}
})),
binaries: objective.vars.map((v: Variable) => v.name),
generals: objective.vars.map((v: Variable) => v.name)
};
const result = glpk.solve(problem, options);
res.status(200).json({ result });
} catch (error: unknown) {
// Type Assertion to access properties of the error object
if (error instanceof Error) {
console.error('Error processing optimization:', error);
res.status(500).json({ message: 'Error processing optimization', error: error.message });
} else {
console.error('Unknown error:', error);
res.status(500).json({ message: 'Error processing optimization', error: 'Unknown error' });
}
}
} else {
res.status(405).json({ message: 'Only POST method is allowed' });
}
}
+10
View File
@@ -0,0 +1,10 @@
import type { NextApiRequest, NextApiResponse } from 'next';
export default function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method === 'POST') {
res.status(200).json({ message: 'API is working!' });
} else {
res.status(405).json({ message: 'Method not allowed' });
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.
Binary file not shown.
+174
View File
@@ -0,0 +1,174 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
--background: #171717;
--foreground: #ffffff;
}
@media (prefers-color-scheme: dark) {
:root {
--background: #0a0a0a;
--foreground: #ededed;
}
}
body {
color: var(--foreground);
background: var(--background);
font-family: Arial, Helvetica, sans-serif;
}
@layer utilities {
.text-balance {
text-wrap: balance;
}
}
.container {
display: flex;
justify-content: space-between; /* Optional: sorgt für Abstand */
width: 100%; /* Optional: gibt dem Container eine Breite */
}
.header {
font-size: 36px;
text-align: center;
}
.header_box {
flex: 1; /* Teilt den verfügbaren Platz auf die Textboxen auf */
margin: 10px 10px; /* Optional: fügt einen horizontalen Abstand hinzu */
padding: 10px; /* Optional: fügt einen inneren Abstand hinzu */
/* font-size: 16px; // Optional: definiert die Schriftgröße */
border-radius: 20px;
border: 20px solid #202020;
background-color: #202020;
}
.header_copyright {
font-size: 16px;
color:#707070;
padding-top: 10px;
}
.button {
border: 2px solid #5353535c;
background-color: #1010105c;
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.button:hover {
border: 2px solid #5353535c;
background-color: #5353535c;
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.button_green {
border: 2px solid #4795475c;
background-color: #247d245c;
/* border-radius: 20px; */
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.button_red {
border: 2px solid #9547475c;
background-color: #7d24245c;
/* border-radius: 20px 10px; */
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.button_green:hover {
border: 2px solid #4795475c;
background-color: #4795475c;
/* border-radius: 20px; */
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.button_red:hover {
border: 2px solid #9547475c;
background-color: #9547475c;
/* border-radius: 20px 10px; */
border-radius: 20px;
margin: 10px;
padding: 10px;
}
.box {
width: 100%;
padding: 10px;
height: 20px;
}
.main_div {
flex: 1;
border-width: 0px;
}
.body_box {
flex: 1; /* Teilt den verfügbaren Platz auf die Textboxen auf */
padding: 10px; /* Optional: fügt einen inneren Abstand hinzu */
width: 100%;
/* font-size: 16px; // Optional: definiert die Schriftgröße */
border-radius: 20px;
border: 2px solid #8d8d8d;
background-color: #474747;
font-size: 10;
}
.body_title {
font-size: 20px;
margin: 10px;
}
.text {
margin: 10px;
}
.output_box {
flex: 1; /* Teilt den verfügbaren Platz auf die Textboxen auf */
padding: 10px; /* Optional: fügt einen inneren Abstand hinzu */
width: 100%;
/* font-size: 16px; // Optional: definiert die Schriftgröße */
border-radius: 20px;
border: 2px solid #8d8d8d;
background-color: #4dc3435c;
font-size: 10;
height: fit-content 100%;
}
.popup_bg {
width: 2000px;
padding: 20px;
box-shadow: 0 2px 10px #7c7c7c;
background: black;
}
.popup-overlay {
background: rgba(0, 0, 0, 0.5);
}
.dropdown-custom {
width: 20%;
background-color: black;
color: white;
border: none;
padding: 10px;
font-size: 16px;
cursor: pointer;
}
.dropdown-custom:hover {
background-color: #444;
}
+204
View File
@@ -0,0 +1,204 @@
export default function text(lang: string, input: string): string {
// German translation
if (lang === "ger") {
switch (input) {
case "header_title":
return "OR-Tool";
case "header_subtitle":
return "von Spaceholder Programming";
case "boxObjTitle":
return "Ziel";
case "boxObjDesc":
return "Geben Sie Ihr Ziel hier ein. Es ist nur ein Ziel erlaubt. Verwenden Sie eine Zeile dafür (kein 'Enter'!). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\nx + y\n-786433 x1 + 655361 x2";
case "boxSubjTitle":
return "Nebenbedingungen";
case "boxSubjDesc":
return "Geben Sie Ihre Nebenbedingungen hier ein. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\n+1 x + 2 y <= 15\n524321 x14 + 524305 x15 <= 4194303.5";
case "boxBoundsTitle":
return "Grenzen";
case "boxBoundsDesc":
return "Geben Sie Ihre Grenzen hier ein. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind 0-9, a-z, A-Z und <>=.\nBeispiel:\nx >= 0\nx > 0\n0 <= x1 <= 1";
case "boxVarsTitle":
return "Variablen";
case "boxVarsDesc":
return "Listen Sie alle Ihre Variablen auf. Eine pro Zeile (mit der 'Enter'-Taste trennen). Erlaubte Symbole sind a-z, A-Z.\nBeispiel:\nx\ny";
case "boxExportLP":
return "Als LP exportieren";
case "boxOut":
return "Geben Sie ein Problem ein und drücken Sie eine Aktionstaste, um die Ausgabe anzuzeigen...";
case "buttonCalc":
return "Berechnen";
case "etime":
return "Berechnungsdauer";
case "seconds":
return "Sekunden";
case "err_invalidInput":
return "Fehler: Ungültige Eingabe in";
case "err_nullInput":
return "Fehler: NULL- oder undefinierte Eingabe in";
case "err_invalidInput":
return "Fehler: Ungültige Eingabe oder fehlendes Zeichen in";
case "input_checks_successful":
return "Alle Eingabeprüfungen erfolgreich.";
case "input_checks_start":
return "Starte Eingabeprüfungen...";
case "obj_box":
return "Zielfeld";
case "subj_box":
return "Bedingungsfeld";
case "bounds_box":
return "Grenzenfeld";
case "vars_box":
return "Variablenfeld";
case "err_emptyBox":
return "Fehler: Leeres Textfeld.";
case "calculating":
return "Berechne...";
case "maximize":
return "Maximieren";
case "minimize":
return "Minimieren";
case "run_optimization":
return "Optimierung mit Eingaben wird ausgeführt";
case "startProblemSetup":
return "Starte Problemerstellung...";
case "succProblemSetup":
return "Problem erstellt.";
case "startScaling":
return "Skalieren des Problems...";
case "succScaling":
return "Skalierung erfolgreich.";
case "startOptimizationSimplex":
return "Starte Simplex-Optimierung...";
case "succOptimizationSimplex":
return "Simplex-Optimierung abgeschlossen.";
case "startOptimizationInteger":
return "Starte Ganzzahloptimierung...";
case "succOptimizationInteger":
return "Ganzzahloptimierung abgeschlossen.";
case "finalObjValue":
return "Endgültiger Zielfunktionswert";
case "varsValues":
return "Wert jeder Variable";
case "dualValues":
return "Dualwerte der Einschränkungen";
case "downloadPrepFileString":
return "Dateiinhalt wird vorbereitet...";
case "downloadPrepFile":
return "Datei wird vorbereitet...";
case "downloadStart":
return "Download wird gestartet.";
case "downloadPrep":
return "Download wird vorbereitet...";
case "downloadFetchInput":
return "Eingaben werden geladen...";
case "importing":
return "Importiere...";
default:
return input;
}
}
// English translation
if (lang === "eng") {
switch (input) {
case "header_title":
return "OR-Tool";
case "header_subtitle":
return "by Spaceholder Programming";
case "boxObjTitle":
return "Objective";
case "boxObjDesc":
return "Insert your objective here. One objective is allowed. Use one line for it (no \"return\"!) Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\nx + y\n-786433 x1 + 655361 x2";
case "boxSubjTitle":
return "Subject";
case "boxSubjDesc":
return "Insert your subject here. One per line (divide by 'return' button). Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\n+1 x + 2 y <= 15\n524321 x14 + 524305 x15 <= 4194303.5";
case "boxBoundsTitle":
return "Bounds";
case "boxBoundsDesc":
return "Insert your bounds here. One per line (divide by 'return' button). Allowed symbols are 0-9, a-z, A-Z and <>=.\nExample:\nx >= 0\nx > 0\n0 <= x1 <= 1";
case "boxVarsTitle":
return "Variables";
case "boxVarsDesc":
return "List all your variables. One per line (divide by 'return' button). Allowed symbols are a-z, A-Z.\nExample:\nx\ny";
case "boxExportLP":
return "Export as LP";
case "boxOut":
return "Input a problem and an action button to display output...";
case "buttonCalc":
return "Calculate";
case "etime":
return "Elapsed time";
case "seconds":
return "seconds";
case "err_invalidInput":
return "Error: Invalid input in";
case "err_nullInput":
return "Error: NULL or undefined input in";
case "err_invalidInput":
return "Error: Invalid input or missing character in";
case "input_checks_successful":
return "All input checks successful."
case "input_checks_start":
return "Starting input checks...";
case "obj_box":
return "object box";
case "subj_box":
return "subject box";
case "bounds_box":
return "bounds box";
case "vars_box":
return "variables box";
case "err_emptyBox":
return "Error: Empty text box.";
case "calculating":
return "Calculating...";
case "maximize":
return "Maximize";
case "minimize":
return "Minimize";
case "run_optimization":
return "Running optimization with input";
case "startProblemSetup":
return "Starting problem setup...";
case "succProblemSetup":
return "Problem created.";
case "startScaling":
return "Scaling problem...";
case "succScaling":
return "Scaling successful.";
case "startOptimizationSimplex":
return "Starting simplex optimization...";
case "succOptimizationSimplex":
return "Simplex optimization complete.";
case "startOptimizationInteger":
return "Starting integer optimization...";
case "succOptimizationInteger":
return "Integer optimization complete.";
case "finalObjValue":
return "Final objective value";
case "varsValues":
return "Value of each variable";
case "dualValues":
return "Dual values of constraints";
case "downloadPrepFileString":
return "Preparing file content string...";
case "downloadPrepFile":
return "Preparing file...";
case "downloadStart":
return "Starting download.";
case "downloadPrep":
return "Preparing download...";
case "downloadFetchInput":
return "Fetching input...";
case "importing":
return "Importing...";
default:
return input;
}
}
return "Error: Translation Module - Language Not Known.";
}
+85
View File
@@ -0,0 +1,85 @@
import type { Metadata } from "next";
import Image from "next/image";
import localFont from "next/font/local";
import "./globals.css";
const geistSans = localFont({
src: "./fonts/GeistVF.woff",
variable: "--font-geist-sans",
weight: "100 900",
});
const geistMono = localFont({
src: "./fonts/GeistMonoVF.woff",
variable: "--font-geist-mono",
weight: "100 900",
});
export const metadata: Metadata = {
title: "OR-Tool by Spaceholder Programming",
description: "OR-Tool by Spaceholder Programming",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
>
{children}
<div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
<footer className=" flex gap-6 flex-wrap items-center justify-center">
<a
className="flex items-center gap-2 hover:underline hover:underline-offset-4"
href="https://github.com/Spaceholder-Programming/Operations-Research-Tool/wiki"
target="_blank"
rel="noopener noreferrer"
>
<Image
aria-hidden
src="https://nextjs.org/icons/file.svg"
alt="File icon"
width={16}
height={16}
/>
Docs
</a>
<a
className="flex items-center gap-2 hover:underline hover:underline-offset-4"
href="https://github.com/Spaceholder-Programming/Operations-Research-Tool/"
target="_blank"
rel="noopener noreferrer"
>
<Image
aria-hidden
src="https://nextjs.org/icons/globe.svg"
alt="Globe icon"
width={16}
height={16}
/>
Source Code
</a>
<a
className="flex items-center gap-2 hover:underline hover:underline-offset-4"
href="https://www.gnu.org/software/glpk/"
target="_blank"
rel="noopener noreferrer"
>
<Image
aria-hidden
src="https://nextjs.org/icons/globe.svg"
alt="Globe icon"
width={16}
height={16}
/>
GLPK
</a>
</footer>
</div>
</body>
</html>
);
}
+50
View File
@@ -0,0 +1,50 @@
import { MouseEventHandler } from "react";
import React from 'react';
import Popup from "reactjs-popup";
export function Box({title, placeholder, id}:
{title:string; placeholder:string; id:string}) {
return(
<div className="main_div">
<div className="body_title">
{title}
</div>
<div className="text">
<textarea
className="body_box"
id={id}
wrap="soft"
rows={6}
placeholder={placeholder}
></textarea>
</div>
</div>
);
}
export function Button({title, className, onClickFunc}:
{title:string; className:string|undefined; onClickFunc: MouseEventHandler}) {
return(
<button
className={className}
onClick={onClickFunc}
>
{title}
</button>
);
}
export function Output({ id, text }: { id: string; text: string }) {
return (
<div className="main_div">
<div className="body_title">Output</div>
<div className="text">
<p className="output_box" id={id}>
{text}
</p>
</div>
</div>
);
}
+80
View File
@@ -0,0 +1,80 @@
'use client'
import React, { useState } from 'react';
import { Box, Button, Output } from "./modules";
import { calculate_clickMaximize, calculate_clickMinimize, downloadLP, import_click } from "./scripts"
import text from "./lang"
export default function Home() {
const [language, setLanguage] = useState('eng');
const tr_hTitle = text(language, 'header_title');
const tr_hSubtitle = text(language, 'header_subtitle');
const tr_boxObjTitle = text(language, 'boxObjTitle');
const tr_boxObjDesc = text(language, "boxObjDesc");
const tr_boxSubjTitle = text(language, 'boxSubjTitle');
const tr_boxSubjDesc = text(language, "boxSubjDesc");
const tr_boxBoundsTitle = text(language, 'boxBoundsTitle');
const tr_boxBoundsDesc = text(language, "boxBoundsDesc");
const tr_boxVarsTitle = text(language, 'boxVarsTitle');
const tr_boxVarsDesc = text(language, "boxVarsDesc");
const tr_boxOut = text(language, "boxOut");
const tr_boxExportLP = text(language, "boxExportLP");
const tr_calc_max = text(language, "maximize");
const tr_calc_min = text(language, "minimize");
const handleLanguageChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
setLanguage(event.target.value);
};
return (
<>
<header className="header">
<div className="title">
<main className="header_box">
{tr_hTitle}
<br></br>
<span className="header_copyright">
<i>{tr_hSubtitle}</i>
</span><br></br>
<select id="language_current" value={language} onChange={handleLanguageChange} className="dropdown-custom">
<option value="ger">Deutsch</option>
<option value="eng">English</option>
</select>
</main>
</div>
</header>
<Box
title={tr_boxObjTitle}
placeholder={tr_boxObjDesc}
id="objective" />
<Box
title={tr_boxSubjTitle}
placeholder={tr_boxSubjDesc}
id="subject" />
<Box
title={tr_boxBoundsTitle}
placeholder={tr_boxBoundsDesc}
id="bounds" />
<Box
title={tr_boxVarsTitle}
placeholder={tr_boxVarsDesc}
id="vars" />
<Button
title={tr_calc_max}
className={"button_green"}
onClickFunc={calculate_clickMaximize} />
<Button
title={tr_calc_min}
className={"button_green"}
onClickFunc={calculate_clickMinimize} />
<Button
title={tr_boxExportLP}
className={"button"}
onClickFunc={downloadLP} />
<br></br>
<Output
id="out"
text={tr_boxOut} />
</>
);
}
+400
View File
@@ -0,0 +1,400 @@
import * as MIP from "../parser/parseMIP"
import * as LP from "../parser/parseLP"
import * as LPAPI from "../api/optimizeLP.js"
import * as GLPKAPI from "../solver/glpk.min.js"
import { start } from "repl";
import text from "./lang"
// custom log so we can append the output dynamically
function customLog(input: string) {
// get language
const lang = (document.getElementById('language_current') as HTMLSelectElement)?.value;
// Get Output Box
const outputElement = document.getElementById('out');
// load text
const message: string = text(lang, input);
console.log(message); // Continue to print message inside of box
// Append message if element exists
if (outputElement) {
outputElement.innerHTML += message + "<br>"; // Append message
}
}
function customLogClear() {
const outElement = document.getElementById('out');
if (outElement) {
outElement.innerHTML = "";
}
}
function getTranslation(input: string) {
// get language
const lang = (document.getElementById('language_current') as HTMLSelectElement)?.value;
// return translation
return text(lang, input);
}
function walltimeStopAndPrint(startpoint: number) {
// calculating elapsed time as timestamp
let duration = Date.now() - startpoint;
// Calculate seconds and ms
const seconds = Math.floor(duration / 1000);
const milliseconds = (duration % 1000) / 1000;
// formatting
const durationFormatted = seconds + (milliseconds >= 0 ? "." : ".") + Math.abs(milliseconds).toFixed(3).slice(2);
// Printing elapsed time
customLog(getTranslation("etime") + ": " + durationFormatted + " " + getTranslation("seconds"));
customLog("");
// return durationFormatted;
}
function walltimeStart() {
return Date.now();
}
function isInputValidRegex(obj: string | undefined, subj: string | undefined, bounds: string | undefined, vars: string | undefined): boolean {
customLog("input_checks_start");
// standard case: input is undefined - invalid
if (obj === undefined || obj === null || subj === undefined || subj === null || bounds === undefined || bounds === null || vars === undefined || vars === null) {
customLog(getTranslation("err_nullInput") + "function isInputValidRegex.");
return false;
}
// RegEx check for objective
let regex = /^[ (\n)]*[\+-]? *((\d+(.\d+)? )?[a-zA-Z][a-zA-Z0-9]*)( *[\+-] *((\d+(.\d+)? )?[a-zA-Z][a-zA-Z0-9]*))*[ (\n)]*$/g;
let isValid = regex.test(obj);
if (!isValid) {
customLog(getTranslation("err_invalidInput") + " " + getTranslation("obj_box") + ".");
return false;
}
// RegEx check for subject
regex = /^([ (\n)]*[\+-]* *(\d+(.\d+)? )?[a-zA-Z][a-zA-Z0-9]*( *[\+-] *(\d+(.\d+)? )?[a-zA-Z][a-zA-Z0-9]*)* *((<=?)|(>=?)|=) *[\+-]? *\d+(.\d+)?[ (\n)]*)+$/g;
isValid = regex.test(subj);
if (!isValid) {
customLog(getTranslation("err_invalidInput") + " " + getTranslation("subj_box") + ".");
return false;
}
// RegEx check for subject
regex = /[ (\n)]*(([a-zA-Z][a-zA-Z0-9]* *((<=?)|(>=?)|=) *\d(.\d+)?)|((\d(.\d+)?) *<=? *[a-zA-Z][a-zA-Z0-9]* *<= *(\d(.\d+)?)))[ (\n)]*/g;
isValid = regex.test(bounds);
if (!isValid) {
customLog(getTranslation("err_invalidInput") + " " + getTranslation("bounds_box") + ".");
return false;
}
// RegEx check for variables
regex = /^ *([a-zA-Z][a-zA-Z0-9]*(\n)* *)+$/g;
isValid = regex.test(vars);
if (!isValid) {
customLog(getTranslation("err_invalidInput") + " " + getTranslation("vars_box") + ".");
return false;
}
customLog("input_checks_successful");
customLog("");
return true;
}
function isInputFilled(obj: string | undefined, subj: string | undefined, bounds: string | undefined, vars: string | undefined) {
if (obj == "" || obj == null || obj == undefined) {
customLog("err_emptyBox");
return false;
}
if (subj == "" || subj == null || subj == undefined) {
customLog("err_emptyBox");
return false;
}
if (bounds == "" || bounds == null || bounds == undefined) {
customLog("err_emptyBox");
return false;
}
if (vars == "" || vars == null || vars == undefined) {
customLog("err_emptyBox");
return false;
}
return true;
}
function calculate_click(maximize: boolean) {
customLogClear();
const timer = walltimeStart();
customLog("calculating");
customLog("");
let objective: string | undefined;
const objectiveElement = document.getElementById('objective');
if (objectiveElement !== null) {
objective = (objectiveElement as HTMLInputElement).value;
}
let subject: string | undefined;
const subjectElement = document.getElementById('subject');
if (subjectElement !== null) {
subject = (subjectElement as HTMLInputElement).value;
}
let bounds: string | undefined;
const boundsElement = document.getElementById('bounds');
if (boundsElement !== null) {
bounds = (boundsElement as HTMLInputElement).value;
}
let variables: string | undefined;
const varsElement = document.getElementById('vars');
if (varsElement !== null) {
variables = (varsElement as HTMLInputElement).value;
}
// let funcs:string[] = functions.split(/;/);
// let vars:string[] = variables.split(/;/);
// let direction = null;
// let namesVars:string[] = [];
// let variablesMIP:VariableMIP[];
// let variablesLP:VariableLP[];
// // console.log(vars);
// for (const decider of vars) {
// // match comments
// let regexMatch:RegExpMatchArray|null = decider.match(/#.*/);
// if (regexMatch != null)
// continue;
// regexMatch = decider.match(/var/);
// if (regexMatch != null)
// namesVars.push(regexMatch[1]);
// console.log(regexMatch);
// }
// for (const decider of funcs) {
// let dir = decider.match(/(min|max) .*/);
// if (direction != null && dir != null) {
// document.getElementById('out').innerHTML = "ERROR: Multiple Functions!";
// return;
// }
// if (direction == null && dir != null) {
// direction = dir[1];
// let test = parseFunction(decider);
// console.log(test?.name);
// variablesLP.
// continue;
// }
// console.log(direction);
// document.getElementById('out').innerHTML = direction;
// console.log(parseFunction(decider));
// catch error: empty input field(s)
if (!isInputFilled(objective, subject, bounds, variables)) return;
// catch error: variables field has invalid characters
if (!isInputValidRegex(objective, subject, bounds, variables)) return;
// fetch operator
let operator = "Minimize";
if (maximize) operator = "Maximize";
let wholeText: string = operator + "\n obj: " + objective
+ "\nSubject To \n" + subject
+ "\nBounds \n" + bounds
+ "\nGenerals \n" + variables
+ "\nEnd";
// customLog("<br><br>DEBUGGING<br><br>\nfunctions:<br>" + functions + "<br><br>variables:<br>" + variables + "<br><br>DEBUGGING END<br>");
customLog(getTranslation("run_optimization") + ": \"" + wholeText + "\"");
customLog("");
run(wholeText);
walltimeStopAndPrint(timer);
}
function run(text: string) {
customLog("startProblemSetup");
let lp = GLPKAPI.glp_create_prob();
GLPKAPI.glp_read_lp_from_string(lp, null, text);
customLog("succProblemSetup");
customLog("");
customLog("startScaling");
GLPKAPI.glp_scale_prob(lp, GLPKAPI.GLP_SF_AUTO);
customLog("succScaling");
customLog("");
customLog("startOptimizationSimplex");
let smcp = new GLPKAPI.SMCP({ presolve: GLPKAPI.GLP_ON });
GLPKAPI.glp_simplex(lp, smcp);
customLog("succOptimizationSimplex");
customLog("");
customLog("startOptimizationInteger");
let iocp = new GLPKAPI.IOCP({ presolve: GLPKAPI.GLP_ON });
GLPKAPI.glp_intopt(lp, iocp);
customLog("succOptimizationInteger");
customLog("");
// customLog("obj: " + GLPKAPI.glp_mip_obj_val(lp));
customLog("<i>" + getTranslation("finalObjValue") + ": " + GLPKAPI.glp_mip_obj_val(lp) + "</i>");
customLog("");
customLog(getTranslation("varsValues") + ":");
for (let i = 1; i <= GLPKAPI.glp_get_num_cols(lp); i++) {
customLog(GLPKAPI.glp_get_col_name(lp, i) + " = " + GLPKAPI.glp_mip_col_val(lp, i));
}
customLog("");
customLog(getTranslation("dualValues") + ":");
for (let j = 1; j <= GLPKAPI.glp_get_num_rows(lp); j++) {
const dualValue = GLPKAPI.glp_get_row_dual(lp, j); // fetch dual
const constraintName = GLPKAPI.glp_get_row_name(lp, j);
customLog(constraintName + " dual = " + dualValue);
}
customLog("");
}
function downloadLPFormatting(objective: any, subject: any, bounds: any) {
customLog(getTranslation("downloadPrepFileString"));
customLog("");
// ensure that all vars are strings
const formattedObjective = typeof objective === 'string' ? objective : '';
const formattedSubject = typeof subject === 'string' ? subject : '';
const formattedBounds = typeof bounds === 'string' ? bounds : '';
// Header mit Problemname
const header = "\\ Your problem\n";
// format objective
const objectiveFunction = `Maximize\n obj: ${formattedObjective}\n`;
// turn each subject into a single line
const constraints = `Subject To\n${formattedSubject.split("\n").filter(line => line.trim() !== "").map(line => ` ${line}`).join("\n")}\n`;
// format bounds
const boundsFormatted = `Bounds\n${formattedBounds.split("\n").filter(line => line.trim() !== "").map(line => ` ${line}`).join("\n")}\n`;
// summarizing everything into one var
const lpFormat = `${header}${objectiveFunction}${constraints}${boundsFormatted}End\n`;
return lpFormat;
}
export function calculate_clickMaximize() {
calculate_click(true);
}
export function calculate_clickMinimize() {
calculate_click(false);
}
function downloadProblemDownload(content: string) {
customLog("downloadPrepFile");
customLog("");
const blob = new Blob([content], { type: 'text/plain' });
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = 'problem.txt'; // file name
link.click(); // starting download
customLog("downloadStart");
}
export function downloadLP() {
customLogClear();
customLog("downloadPrep");
customLog("");
customLog("downloadFetchInput");
customLog("");
let objective: string | undefined;
const objectiveElement = document.getElementById('objective');
if (objectiveElement !== null) {
objective = (objectiveElement as HTMLInputElement).value;
}
let subject: string | undefined;
const subjectElement = document.getElementById('subject');
if (subjectElement !== null) {
subject = (subjectElement as HTMLInputElement).value;
}
let bounds: string | undefined;
const boundsElement = document.getElementById('bounds');
if (boundsElement !== null) {
bounds = (boundsElement as HTMLInputElement).value;
}
let variables: string | undefined;
const varsElement = document.getElementById('vars');
if (varsElement !== null) {
variables = (varsElement as HTMLInputElement).value;
}
// catch error: empty input field(s)
if (!isInputFilled(objective, subject, bounds, variables)) return;
const exportString: string = downloadLPFormatting(objective, subject, bounds);
downloadProblemDownload(exportString);
}
// Irgend ein Interface
// document.getElementById('out').innerHTML = funcs;
// output.innerHTML = functions.innerHTML;
// createProblemMIP();
// LPAPI.default();
export function import_click() {
console.log("importing");
}
// export function export_click() {
// console.log("Exporting...");
// }
// function parseFunction(toParse: string) {
// var regex = toParse.match(/([a-zA-Z][a-zA-Z0-9]*):/);
// if (regex == null)
// return;
// var name = regex[1];
// regex = toParse.match(/(?:([0-9]*) *\* *([a-zA-Z][a-zA-Z0-9]*))/g);
// let coefs:number[] = [];
// let vars:string[] = [];
// for (const rg of regex) {
// coefs.push(+rg.match(/([0-9]+)/g));
// vars.push(rg.match(/([a-zA-Z][a-zA-Z0-9]*)/g)[0]);
// }
// return {name, coefs, vars};
// }
+40
View File
@@ -0,0 +1,40 @@
type VariableLP = { name: string; coef: number };
type ConstraintLP = {
name: string;
vars: VariableLP[];
bnds: { ub: number; lb: number };
};
interface ProblemLP {
objective: {
vars: VariableLP[];
};
constraints: ConstraintLP[];
}
function createProblemLP(
objectiveVars: VariableLP[],
constraints: { name: string; vars: VariableLP[]; ub: number; lb: number }[]
): ProblemLP {
const constraintsFormatted: ConstraintLP[] = constraints.map((constraint) => ({
name: constraint.name,
vars: constraint.vars,
bnds: {
ub: constraint.ub,
lb: constraint.lb
}
}));
const problem: ProblemLP = {
objective: {
vars: objectiveVars
},
constraints: constraintsFormatted
};
return problem;
}
export function parseLP(input: string) {
console.log("Parsing LP file:", input);
}
+82
View File
@@ -0,0 +1,82 @@
interface VariableMIP {
name: string;
coef: number;
}
interface Bounds {
type: number;
ub: number;
lb: number;
}
interface ConstraintMIP {
name: string;
vars: VariableMIP[];
bnds: Bounds;
}
interface Options {
mipgap: number;
tmlim: number;
msglev: number;
}
interface Problem {
name: string;
objective: {
direction: "min" | "max";
name: string;
vars: VariableMIP[];
};
constraints: ConstraintMIP[];
binaries?: string[];
generals?: string[];
options: Options;
}
function createProblemMIP(
name: string,
direction: "min" | "max",
objectiveName: string,
objectiveVars: VariableMIP[],
constraints: { name: string; vars: VariableMIP[]; bnds_type: number; ub: number; lb: number }[],
binaries: string[],
generals: string[] = [],
mipgap: number,
tmlim: number,
msglev: number
): Problem {
const constraintsFormatted: ConstraintMIP[] = constraints.map((constraint) => ({
name: constraint.name,
vars: constraint.vars,
bnds: {
type: constraint.bnds_type,
ub: constraint.ub,
lb: constraint.lb
}
}));
const problem: Problem = {
name: name,
objective: {
direction: direction,
name: objectiveName,
vars: objectiveVars
},
constraints: constraintsFormatted,
binaries: binaries.length > 0 ? binaries : undefined,
generals: generals.length > 0 ? generals : undefined,
options: {
mipgap: mipgap,
tmlim: tmlim,
msglev: msglev
}
};
return problem;
}
export function parseLP(input: string) {
console.log("Parsing MIP file:", input);
}
+35162
View File
File diff suppressed because it is too large Load Diff
+610
View File
@@ -0,0 +1,610 @@
/*! glpk.js - v4.49.0
* https://github.com/hgourvest/glpk.js
* Copyright (c) 2013 Henri Gourvest; Licensed GPLv2 */
(function(exports) {
var t=Number.MAX_VALUE,fa=Number.MIN_VALUE;function x(a){throw Error(a);}function y(){}exports.glp_get_print_func=function(){return y};exports.glp_set_print_func=function(a){y=a};function ga(a,b){for(var c in b)a[c]=b[c]}function ha(a,b,c,d,e){for(;0<e;b++,d++,e--)a[b]=c[d]}function ja(a,b,c,d){for(;0<d;b++,d--)a[b]=c}function ka(a,b,c){for(;0<c;b++,c--)a[b]={}}function la(){return(new Date).getTime()}function ma(a){return(la()-a)/1E3}
function na(a,b,c){var d=Array(b);ha(d,0,a,1,b);d.sort(c);ha(a,1,d,0,b)}var pa={},sa=exports.glp_version=function(){return qa+"."+ra};function ta(a){a="string"==typeof a?a.charCodeAt(0):-1;return 0<=a&&31>=a||127==a}function ua(a){a="string"==typeof a?a.charCodeAt(0):-1;return 65<=a&&90>=a||97<=a&&122>=a}function va(a){a="string"==typeof a?a.charCodeAt(0):-1;return 65<=a&&90>=a||97<=a&&122>=a||48<=a&&57>=a}function wa(a){a="string"==typeof a?a.charCodeAt(0):-1;return 48<=a&&57>=a}
function xa(){function a(a,d,e,h,l,n,m){a=a>>>0;e=e&&a&&{2:"0b",8:"0",16:"0x"}[d]||"";a=e+c(a.toString(d),n||0,"0",!1);return b(a,e,h,l,m)}function b(a,b,d,e,l,n){var m=e-a.length;0<m&&(a=d||!l?c(a,e,n,d):a.slice(0,b.length)+c("",m,"0",!0)+a.slice(b.length));return a}function c(a,b,c,d){c||(c=" ");b=a.length>=b?"":Array(1+b-a.length>>>0).join(c);return d?a+b:b+a}var d=arguments,e=0;return d[e++].replace(/%%|%(\d+\$)?([-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g,function(f,
g,k,h,l,n,m){var q,r;if("%%"==f)return"%";var p=!1;r="";var u=l=!1;q=" ";for(var v=k.length,H=0;k&&H<v;H++)switch(k.charAt(H)){case " ":r=" ";break;case "+":r="+";break;case "-":p=!0;break;case "'":q=k.charAt(H+1);break;case "0":l=!0;break;case "#":u=!0}h=h?"*"==h?+d[e++]:"*"==h.charAt(0)?+d[h.slice(1,-1)]:+h:0;0>h&&(h=-h,p=!0);if(!isFinite(h))throw Error("sprintf: (minimum-)width must be finite");n?n="*"==n?+d[e++]:"*"==n.charAt(0)?+d[n.slice(1,-1)]:+n:n=-1<"fFeE".indexOf(m)?6:"d"==m?0:void 0;g=
g?d[g.slice(0,-1)]:d[e++];switch(m){case "s":return m=String(g),null!=n&&(m=m.slice(0,n)),b(m,"",p,h,l,q);case "c":return m=String.fromCharCode(+g),null!=n&&(m=m.slice(0,n)),b(m,"",p,h,l,void 0);case "b":return a(g,2,u,p,h,n,l);case "o":return a(g,8,u,p,h,n,l);case "x":return a(g,16,u,p,h,n,l);case "X":return a(g,16,u,p,h,n,l).toUpperCase();case "u":return a(g,10,u,p,h,n,l);case "i":case "d":return q=+g||0,q=Math.round(q-q%1),f=0>q?"-":r,g=f+c(String(Math.abs(q)),n,"0",!1),b(g,f,p,h,l);case "e":case "E":case "f":case "F":case "g":case "G":return q=
+g,f=0>q?"-":r,r=["toExponential","toFixed","toPrecision"]["efg".indexOf(m.toLowerCase())],m=["toString","toUpperCase"]["eEfFgG".indexOf(m)%2],g=f+Math.abs(q)[r](n),b(g,f,p,h,l)[m]();default:return f}})}function ya(a){a.Ad=3621377730;a.ie=null;a.$=null;a.name=null;a.ib=null;a.dir=za;a.la=0;a.kb=100;a.N=200;a.h=a.n=0;a.O=0;a.o=Array(1+a.kb);a.g=Array(1+a.N);a.gc={};a.Kc={};a.valid=0;a.head=new Int32Array(1+a.kb);a.Pd=null;a.Y=null;a.ra=a.wa=Aa;a.ea=0;a.da=0;a.some=0;a.bf=Aa;a.Zd=0;a.Da=Aa;a.xa=0}
var Ba=exports.glp_create_prob=function(){var a={};ya(a);return a},Ca=exports.glp_set_prob_name=function(a,b){var c=a.$;null!=c&&0!=c.reason&&x("glp_set_prob_name: operation not allowed");a.name=b},Da=exports.glp_set_obj_name=function(a,b){var c=a.$;null!=c&&0!=c.reason&&x("glp_set_obj_name: operation not allowed");a.ib=b},Fa=exports.glp_set_obj_dir=function(a,b){var c=a.$;null!=c&&0!=c.reason&&x("glp_set_obj_dir: operation not allowed");b!=za&&b!=Ea&&x("glp_set_obj_dir: dir = "+b+"; invalid direction flag");
a.dir=b},La=exports.glp_add_rows=function(a,b){var c=a.$,d;1>b&&x("glp_add_rows: nrs = "+b+"; invalid number of rows");b>1E8-a.h&&x("glp_add_rows: nrs = "+b+"; too many rows");var e=a.h+b;if(a.kb<e){for(;a.kb<e;)a.kb+=a.kb;a.o.length=1+a.kb;a.head=new Int32Array(1+a.kb)}for(var f=a.h+1;f<=e;f++){a.o[f]=d={};d.ia=f;d.name=null;d.node=null;d.level=0;d.origin=0;d.qc=0;if(null!=c)switch(c.reason){case Ga:d.level=c.R.level;d.origin=Ha;break;case Ia:d.level=c.R.level,d.origin=Ja}d.type=Ka;d.c=d.f=0;d.l=
null;d.qa=1;d.stat=A;d.bind=0;d.w=d.M=0;d.Tb=d.nc=0;d.Va=0}a.h=e;a.valid=0;null!=c&&0!=c.reason&&(c.ne=1);return e-b+1},Oa=exports.glp_add_cols=function(a,b){var c=a.$;null!=c&&0!=c.reason&&x("glp_add_cols: operation not allowed");1>b&&x("glp_add_cols: ncs = "+b+"; invalid number of columns");b>1E8-a.n&&x("glp_add_cols: ncs = "+b+"; too many columns");var d=a.n+b;if(a.N<d){for(;a.N<d;)a.N+=a.N;a.g.length=1+a.N}for(var e=a.n+1;e<=d;e++)a.g[e]=c={},c.H=e,c.name=null,c.node=null,c.kind=Ma,c.type=C,c.c=
c.f=0,c.B=0,c.l=null,c.za=1,c.stat=Na,c.bind=0,c.w=c.M=0,c.Tb=c.nc=0,c.Va=0;a.n=d;return d-b+1},Pa=exports.glp_set_row_name=function(a,b,c){1<=b&&b<=a.h||x("glp_set_row_name: i = "+b+"; row number out of range");b=a.o[b];null!=b.name&&(delete a.gc[b.name],b.name=null);null!=c&&(b.name=c,a.gc[b.name]=b)},Qa=exports.glp_set_col_name=function(a,b,c){var d=a.$;null!=d&&0!=d.reason&&x("glp_set_col_name: operation not allowed");1<=b&&b<=a.n||x("glp_set_col_name: j = "+b+"; column number out of range");
b=a.g[b];null!=b.name&&(delete a.Kc[b.name],b.name=null);null!=c&&(b.name=c,a.Kc[b.name]=b)},Ua=exports.glp_set_row_bnds=function(a,b,c,d,e){1<=b&&b<=a.h||x("glp_set_row_bnds: i = "+b+"; row number out of range");a=a.o[b];a.type=c;switch(c){case Ka:a.c=a.f=0;a.stat!=A&&(a.stat=Ra);break;case Sa:a.c=d;a.f=0;a.stat!=A&&(a.stat=M);break;case Ta:a.c=0;a.f=e;a.stat!=A&&(a.stat=P);break;case Q:a.c=d;a.f=e;a.stat!=A&&a.stat!=M&&a.stat!=P&&(a.stat=Math.abs(d)<=Math.abs(e)?M:P);break;case C:a.c=a.f=d;a.stat!=
A&&(a.stat=Na);break;default:x("glp_set_row_bnds: i = "+b+"; type = "+c+"; invalid row type")}},Va=exports.glp_set_col_bnds=function(a,b,c,d,e){1<=b&&b<=a.n||x("glp_set_col_bnds: j = "+b+"; column number out of range");a=a.g[b];a.type=c;switch(c){case Ka:a.c=a.f=0;a.stat!=A&&(a.stat=Ra);break;case Sa:a.c=d;a.f=0;a.stat!=A&&(a.stat=M);break;case Ta:a.c=0;a.f=e;a.stat!=A&&(a.stat=P);break;case Q:a.c=d;a.f=e;a.stat!=A&&a.stat!=M&&a.stat!=P&&(a.stat=Math.abs(d)<=Math.abs(e)?M:P);break;case C:a.c=a.f=
d;a.stat!=A&&(a.stat=Na);break;default:x("glp_set_col_bnds: j = "+b+"; type = "+c+"; invalid column type")}},Xa=exports.glp_set_obj_coef=function(a,b,c){var d=a.$;null!=d&&0!=d.reason&&x("glp_set_obj_coef: operation not allowed");0<=b&&b<=a.n||x("glp_set_obj_coef: j = "+b+"; column number out of range");0==b?a.la=c:a.g[b].B=c},Ya=exports.glp_set_mat_row=function(a,b,c,d,e){var f,g,k;1<=b&&b<=a.h||x("glp_set_mat_row: i = "+b+"; row number out of range");for(var h=a.o[b];null!=h.l;)g=h.l,h.l=g.G,f=
g.g,null==g.va?f.l=g.L:g.va.L=g.L,null!=g.L&&(g.L.va=g.va),a.O--,f.stat==A&&(a.valid=0);0<=c&&c<=a.n||x("glp_set_mat_row: i = "+b+"; len = "+c+"; invalid row length ");c>5E8-a.O&&x("glp_set_mat_row: i = "+b+"; len = "+c+"; too many constraint coefficients");for(k=1;k<=c;k++)g=d[k],1<=g&&g<=a.n||x("glp_set_mat_row: i = "+b+"; ind["+k+"] = "+g+"; column index out of range"),f=a.g[g],null!=f.l&&f.l.o.ia==b&&x("glp_set_mat_row: i = "+b+"; ind["+k+"] = "+g+"; duplicate column indices not allowed"),g={},
a.O++,g.o=h,g.g=f,g.j=e[k],g.ya=null,g.G=h.l,g.va=null,g.L=f.l,null!=g.G&&(g.G.ya=g),null!=g.L&&(g.L.va=g),h.l=f.l=g,f.stat==A&&0!=g.j&&(a.valid=0);for(g=h.l;null!=g;g=b)b=g.G,0==g.j&&(null==g.ya?h.l=b:g.ya.G=b,null!=b&&(b.ya=g.ya),g.g.l=g.L,null!=g.L&&(g.L.va=null),a.O--)},Za=exports.glp_set_mat_col=function(a,b,c,d,e){var f=a.$,g,k,h;null!=f&&0!=f.reason&&x("glp_set_mat_col: operation not allowed");1<=b&&b<=a.n||x("glp_set_mat_col: j = "+b+"; column number out of range");for(f=a.g[b];null!=f.l;)k=
f.l,f.l=k.L,g=k.o,null==k.ya?g.l=k.G:k.ya.G=k.G,null!=k.G&&(k.G.ya=k.ya),a.O--;0<=c&&c<=a.h||x("glp_set_mat_col: j = "+b+"; len = "+c+"; invalid column length");c>5E8-a.O&&x("glp_set_mat_col: j = "+b+"; len = "+c+"; too many constraint coefficients");for(h=1;h<=c;h++)k=d[h],1<=k&&k<=a.h||x("glp_set_mat_col: j = "+b+"; ind["+h+"] = "+k+"; row index out of range"),g=a.o[k],null!=g.l&&g.l.g.H==b&&x("glp_set_mat_col: j = "+b+"; ind["+h+"] = "+k+"; duplicate row indices not allowed"),k={},a.O++,k.o=g,
k.g=f,k.j=e[h],k.ya=null,k.G=g.l,k.va=null,k.L=f.l,null!=k.G&&(k.G.ya=k),null!=k.L&&(k.L.va=k),g.l=f.l=k;for(k=f.l;null!=k;k=b)b=k.L,0==k.j&&(k.o.l=k.G,null!=k.G&&(k.G.ya=null),null==k.va?f.l=b:k.va.L=b,null!=b&&(b.va=k.va),a.O--);f.stat==A&&(a.valid=0)};
exports.glp_load_matrix=function(a,b,c,d,e){var f=a.$,g,k,h,l;null!=f&&0!=f.reason&&x("glp_load_matrix: operation not allowed");for(h=1;h<=a.h;h++)for(f=a.o[h];null!=f.l;)k=f.l,f.l=k.G,a.O--;for(k=1;k<=a.n;k++)a.g[k].l=null;0>b&&x("glp_load_matrix: ne = "+b+"; invalid number of constraint coefficients");5E8<b&&x("glp_load_matrix: ne = "+b+"; too many constraint coefficients");for(l=1;l<=b;l++)h=c[l],k=d[l],1<=h&&h<=a.h||x("glp_load_matrix: ia["+l+"] = "+h+"; row index out of range"),f=a.o[h],1<=k&&
k<=a.n||x("glp_load_matrix: ja["+l+"] = "+k+"; column index out of range"),g=a.g[k],k={},a.O++,k.o=f,k.g=g,k.j=e[l],k.ya=null,k.G=f.l,null!=k.G&&(k.G.ya=k),f.l=k;for(h=1;h<=a.h;h++)for(k=a.o[h].l;null!=k;k=k.G){g=k.g;if(null!=g.l&&g.l.o.ia==h){for(l=1;l<=b&&(c[l]!=h||d[l]!=g.H);l++);x("glp_load_mat: ia["+l+"] = "+h+"; ja["+l+"] = "+g.H+"; duplicate indices not allowed")}k.va=null;k.L=g.l;null!=k.L&&(k.L.va=k);g.l=k}for(h=1;h<=a.h;h++)for(f=a.o[h],k=f.l;null!=k;k=b)b=k.G,0==k.j&&(null==k.ya?f.l=b:
k.ya.G=b,null!=b&&(b.ya=k.ya),null==k.va?k.g.l=k.L:k.va.L=k.L,null!=k.L&&(k.L.va=k.va),a.O--);a.valid=0};
exports.glp_check_dup=function(a,b,c,d,e){var f,g,k,h,l;0>a&&x("glp_check_dup: m = %d; invalid parameter");0>b&&x("glp_check_dup: n = %d; invalid parameter");0>c&&x("glp_check_dup: ne = %d; invalid parameter");0<c&&null==d&&x("glp_check_dup: ia = "+d+"; invalid parameter");0<c&&null==e&&x("glp_check_dup: ja = "+e+"; invalid parameter");for(k=1;k<=c;k++)if(f=d[k],g=e[k],!(1<=f&&f<=a&&1<=g&&g<=b))return a=-k;if(0==a||0==b)return 0;h=new Int32Array(1+a);l=new Int32Array(1+c);b=new Int8Array(1+b);for(k=
1;k<=c;k++)f=d[k],l[k]=h[f],h[f]=k;for(f=1;f<=a;f++){for(k=h[f];0!=k;k=l[k]){g=e[k];if(b[g]){for(k=1;k<=c&&(d[k]!=f||e[k]!=g);k++);for(k++;k<=c&&(d[k]!=f||e[k]!=g);k++);return a=+k}b[g]=1}for(k=h[f];0!=k;k=l[k])b[e[k]]=0}return 0};
var $a=exports.glp_sort_matrix=function(a){var b,c,d;null!=a&&3621377730==a.Ad||x("glp_sort_matrix: P = "+a+"; invalid problem object");for(c=a.h;1<=c;c--)a.o[c].l=null;for(d=a.n;1<=d;d--)for(b=a.g[d].l;null!=b;b=b.L)c=b.o.ia,b.ya=null,b.G=a.o[c].l,null!=b.G&&(b.G.ya=b),a.o[c].l=b;for(d=a.n;1<=d;d--)a.g[d].l=null;for(c=a.h;1<=c;c--)for(b=a.o[c].l;null!=b;b=b.G)d=b.g.H,b.va=null,b.L=a.g[d].l,null!=b.L&&(b.L.va=b),a.g[d].l=b},ab=exports.glp_del_rows=function(a,b,c){var d=a.$,e,f,g;1<=b&&b<=a.h||x("glp_del_rows: nrs = "+
b+"; invalid number of rows");for(g=1;g<=b;g++)f=c[g],1<=f&&f<=a.h||x("glp_del_rows: num["+g+"] = "+f+"; row number out of range"),e=a.o[f],null!=d&&0!=d.reason&&(d.reason!=Ga&&d.reason!=Ia&&x("glp_del_rows: operation not allowed"),e.level!=d.R.level&&x("glp_del_rows: num["+g+"] = "+f+"; invalid attempt to delete row created not in current subproblem"),e.stat!=A&&x("glp_del_rows: num["+g+"] = "+f+"; invalid attempt to delete active row (constraint)"),d.pf=1),0==e.ia&&x("glp_del_rows: num["+g+"] = "+
f+"; duplicate row numbers not allowed"),Pa(a,f,null),Ya(a,f,0,null,null),e.ia=0;b=0;for(f=1;f<=a.h;f++)e=a.o[f],0!=e.ia&&(e.ia=++b,a.o[e.ia]=e);a.h=b;a.valid=0};
exports.glp_del_cols=function(a,b,c){var d=a.$,e,f;null!=d&&0!=d.reason&&x("glp_del_cols: operation not allowed");1<=b&&b<=a.n||x("glp_del_cols: ncs = "+b+"; invalid number of columns");for(f=1;f<=b;f++)d=c[f],1<=d&&d<=a.n||x("glp_del_cols: num["+f+"] = "+d+"; column number out of range"),e=a.g[d],0==e.H&&x("glp_del_cols: num["+f+"] = "+d+"; duplicate column numbers not allowed"),Qa(a,d,null),Za(a,d,0,null,null),e.H=0,e.stat==A&&(a.valid=0);b=0;for(d=1;d<=a.n;d++)e=a.g[d],0!=e.H&&(e.H=++b,a.g[e.H]=
e);a.n=b;if(a.valid)for(c=a.h,e=a.head,d=1;d<=b;d++)f=a.g[d].bind,0!=f&&(e[f]=c+d)};
var hb=exports.glp_copy_prob=function(a,b,c){var d=a.$,e={},f,g,k,h;null!=d&&0!=d.reason&&x("glp_copy_prob: operation not allowed");a==b&&x("glp_copy_prob: copying problem object to itself not allowed");c!=bb&&c!=cb&&x("glp_copy_prob: names = "+c+"; invalid parameter");db(a);c&&null!=b.name&&Ca(a,b.name);c&&null!=b.ib&&Da(a,b.ib);a.dir=b.dir;a.la=b.la;0<b.h&&La(a,b.h);0<b.n&&Oa(a,b.n);eb(b,e);fb(a,e);a.ra=b.ra;a.wa=b.wa;a.ea=b.ea;a.some=b.some;a.bf=b.bf;a.Zd=b.Zd;a.Da=b.Da;a.xa=b.xa;for(f=1;f<=b.h;f++)d=
a.o[f],e=b.o[f],c&&null!=e.name&&Pa(a,f,e.name),d.type=e.type,d.c=e.c,d.f=e.f,d.qa=e.qa,d.stat=e.stat,d.w=e.w,d.M=e.M,d.Tb=e.Tb,d.nc=e.nc,d.Va=e.Va;k=new Int32Array(1+b.h);h=new Float64Array(1+b.h);for(f=1;f<=b.n;f++)d=a.g[f],e=b.g[f],c&&null!=e.name&&Qa(a,f,e.name),d.kind=e.kind,d.type=e.type,d.c=e.c,d.f=e.f,d.B=e.B,g=gb(b,f,k,h),Za(a,f,g,k,h),d.za=e.za,d.stat=e.stat,d.w=e.w,d.M=e.M,d.Tb=e.Tb,d.nc=e.nc,d.Va=e.Va},db=exports.glp_erase_prob=function(a){var b=a.$;null!=b&&0!=b.reason&&x("glp_erase_prob: operation not allowed");
a.Ad=1061109567;a.ie=null;a.o=null;a.g=null;a.gc=null;a.Kc=null;a.head=null;a.Pd=null;a.Y=null;ya(a)};exports.glp_get_prob_name=function(a){return a.name};
var ib=exports.glp_get_obj_name=function(a){return a.ib},jb=exports.glp_get_obj_dir=function(a){return a.dir},kb=exports.glp_get_num_rows=function(a){return a.h},lb=exports.glp_get_num_cols=function(a){return a.n},mb=exports.glp_get_row_name=function(a,b){1<=b&&b<=a.h||x("glp_get_row_name: i = "+b+"; row number out of range");return a.o[b].name},nb=exports.glp_get_col_name=function(a,b){1<=b&&b<=a.n||x("glp_get_col_name: j = "+b+"; column number out of range");return a.g[b].name},pb=exports.glp_get_row_type=
function(a,b){1<=b&&b<=a.h||x("glp_get_row_type: i = "+b+"; row number out of range");return a.o[b].type},qb=exports.glp_get_row_lb=function(a,b){var c;1<=b&&b<=a.h||x("glp_get_row_lb: i = "+b+"; row number out of range");switch(a.o[b].type){case Ka:case Ta:c=-t;break;case Sa:case Q:case C:c=a.o[b].c}return c},rb=exports.glp_get_row_ub=function(a,b){var c;1<=b&&b<=a.h||x("glp_get_row_ub: i = "+b+"; row number out of range");switch(a.o[b].type){case Ka:case Sa:c=+t;break;case Ta:case Q:case C:c=a.o[b].f}return c},
sb=exports.glp_get_col_type=function(a,b){1<=b&&b<=a.n||x("glp_get_col_type: j = "+b+"; column number out of range");return a.g[b].type},tb=exports.glp_get_col_lb=function(a,b){var c;1<=b&&b<=a.n||x("glp_get_col_lb: j = "+b+"; column number out of range");switch(a.g[b].type){case Ka:case Ta:c=-t;break;case Sa:case Q:case C:c=a.g[b].c}return c},ub=exports.glp_get_col_ub=function(a,b){var c;1<=b&&b<=a.n||x("glp_get_col_ub: j = "+b+"; column number out of range");switch(a.g[b].type){case Ka:case Sa:c=
+t;break;case Ta:case Q:case C:c=a.g[b].f}return c};exports.glp_get_obj_coef=function(a,b){0<=b&&b<=a.n||x("glp_get_obj_coef: j = "+b+"; column number out of range");return 0==b?a.la:a.g[b].B};exports.glp_get_num_nz=function(a){return a.O};
var vb=exports.glp_get_mat_row=function(a,b,c,d){var e;1<=b&&b<=a.h||x("glp_get_mat_row: i = "+b+"; row number out of range");e=0;for(a=a.o[b].l;null!=a;a=a.G)e++,null!=c&&(c[e]=a.g.H),null!=d&&(d[e]=a.j);return e},gb=exports.glp_get_mat_col=function(a,b,c,d){var e;1<=b&&b<=a.n||x("glp_get_mat_col: j = "+b+"; column number out of range");e=0;for(a=a.g[b].l;null!=a;a=a.L)e++,null!=c&&(c[e]=a.o.ia),null!=d&&(d[e]=a.j);return e},wb=exports.glp_create_index=function(a){var b,c;if(null==a.gc)for(a.gc=
{},c=1;c<=a.h;c++)b=a.o[c],null!=b.name&&(a.gc[b.name]=b);if(null==a.Kc)for(a.Kc={},c=1;c<=a.n;c++)b=a.g[c],null!=b.name&&(a.Kc[b.name]=b)},xb=exports.glp_find_row=function(a,b){var c=0;null==a.gc&&x("glp_find_row: row name index does not exist");var d=a.gc[b];d&&(c=d.ia);return c},yb=exports.glp_find_col=function(a,b){var c=0;null==a.Kc&&x("glp_find_col: column name index does not exist");var d=a.Kc[b];d&&(c=d.H);return c},zb=exports.glp_delete_index=function(a){a.gc=null;a.gc=null},Ab=exports.glp_set_rii=
function(a,b,c){1<=b&&b<=a.h||x("glp_set_rii: i = "+b+"; row number out of range");0>=c&&x("glp_set_rii: i = "+b+"; rii = "+c+"; invalid scale factor");if(a.valid&&a.o[b].qa!=c)for(var d=a.o[b].l;null!=d;d=d.G)if(d.g.stat==A){a.valid=0;break}a.o[b].qa=c},Bb=exports.glp_set_sjj=function(a,b,c){1<=b&&b<=a.n||x("glp_set_sjj: j = "+b+"; column number out of range");0>=c&&x("glp_set_sjj: j = "+b+"; sjj = "+c+"; invalid scale factor");a.valid&&a.g[b].za!=c&&a.g[b].stat==A&&(a.valid=0);a.g[b].za=c},Cb=exports.glp_get_rii=
function(a,b){1<=b&&b<=a.h||x("glp_get_rii: i = "+b+"; row number out of range");return a.o[b].qa},Db=exports.glp_get_sjj=function(a,b){1<=b&&b<=a.n||x("glp_get_sjj: j = "+b+"; column number out of range");return a.g[b].za},Eb=exports.glp_unscale_prob=function(a){var b=kb(a),c=lb(a),d;for(d=1;d<=b;d++)Ab(a,d,1);for(b=1;b<=c;b++)Bb(a,b,1)},Fb=exports.glp_set_row_stat=function(a,b,c){1<=b&&b<=a.h||x("glp_set_row_stat: i = "+b+"; row number out of range");c!=A&&c!=M&&c!=P&&c!=Ra&&c!=Na&&x("glp_set_row_stat: i = "+
b+"; stat = "+c+"; invalid status");b=a.o[b];if(c!=A)switch(b.type){case Ka:c=Ra;break;case Sa:c=M;break;case Ta:c=P;break;case Q:c!=P&&(c=M);break;case C:c=Na}if(b.stat==A&&c!=A||b.stat!=A&&c==A)a.valid=0;b.stat=c},Gb=exports.glp_set_col_stat=function(a,b,c){1<=b&&b<=a.n||x("glp_set_col_stat: j = "+b+"; column number out of range");c!=A&&c!=M&&c!=P&&c!=Ra&&c!=Na&&x("glp_set_col_stat: j = "+b+"; stat = "+c+"; invalid status");b=a.g[b];if(c!=A)switch(b.type){case Ka:c=Ra;break;case Sa:c=M;break;case Ta:c=
P;break;case Q:c!=P&&(c=M);break;case C:c=Na}if(b.stat==A&&c!=A||b.stat!=A&&c==A)a.valid=0;b.stat=c},Hb=exports.glp_std_basis=function(a){var b;for(b=1;b<=a.h;b++)Fb(a,b,A);for(b=1;b<=a.n;b++){var c=a.g[b];c.type==Q&&Math.abs(c.c)>Math.abs(c.f)?Gb(a,b,P):Gb(a,b,M)}},sc=exports.glp_simplex=function(a,b){function c(a,b){var c;if(!Ib(a)&&(c=Jb(a),0!=c&&(c==Kb?b.s>=Mb&&y("glp_simplex: initial basis is invalid"):c==Nb?b.s>=Mb&&y("glp_simplex: initial basis is singular"):c==Ob&&b.s>=Mb&&y("glp_simplex: initial basis is ill-conditioned")),
0!=c))return c;b.hb==Pb?c=Qb(a,b):b.hb==Rb?(c=Sb(a,b),c==Tb&&a.valid&&(c=Qb(a,b))):b.hb==Ub&&(c=Sb(a,b));return c}function d(a,b){function d(){Vb(e,f);f=null;Wb(e,a);return r=0}var e,f=null,g={},r;b.s>=Xb&&y("Preprocessing...");e=Yb();Zb(e,a,$b);r=ac(e,0);0!=r&&(r==bc?b.s>=Xb&&y("PROBLEM HAS NO PRIMAL FEASIBLE SOLUTION"):r==cc&&b.s>=Xb&&y("PROBLEM HAS NO DUAL FEASIBLE SOLUTION"));if(0!=r)return r;f=Ba();dc(e,f);if(0==f.h&&0==f.n)return f.ra=f.wa=ec,f.ea=f.la,b.s>=fc&&0==b.cb&&y(a.da+": obj = "+f.ea+
" infeas = 0.0"),b.s>=Xb&&y("OPTIMAL SOLUTION FOUND BY LP PREPROCESSOR"),d();b.s>=Xb&&y(f.h+" row"+(1==f.h?"":"s")+", "+f.n+" column"+(1==f.n?"":"s")+", "+f.O+" non-zero"+(1==f.O?"":"s")+"");eb(a,g);fb(f,g);var g=pa,p=g.Hb;g.Hb=!p||b.s<Xb?cb:bb;gc(f,hc);g.Hb=p;g=pa;p=g.Hb;g.Hb=!p||b.s<Xb?cb:bb;ic(f);g.Hb=p;f.da=a.da;r=c(f,b);a.da=f.da;return 0!=r||f.ra!=ec||f.wa!=ec?(b.s>=Mb&&y("glp_simplex: unable to recover undefined or non-optimal solution"),0==r&&(f.ra==jc?r=bc:f.wa==jc&&(r=cc)),r):d()}function e(a,
b){function c(){f.stat=M;f.w=f.c}function d(){f.stat=P;f.w=f.f}var e,f,g,p,u;a.valid=0;a.ra=a.wa=ec;a.ea=a.la;p=u=a.some=0;for(g=1;g<=a.h;g++){e=a.o[g];e.stat=A;e.w=e.M=0;if(e.type==Sa||e.type==Q||e.type==C)e.c>+b.Ib&&(a.ra=jc,0==a.some&&b.hb!=Pb&&(a.some=g)),p<+e.c&&(p=+e.c);if(e.type==Ta||e.type==Q||e.type==C)e.f<-b.Ib&&(a.ra=jc,0==a.some&&b.hb!=Pb&&(a.some=g)),p<-e.f&&(p=-e.f)}for(e=g=1;e<=a.n;e++)f=a.g[e],g<Math.abs(f.B)&&(g=Math.abs(f.B));g=(a.dir==za?1:-1)/g;for(e=1;e<=a.n;e++){f=a.g[e];f.type==
Ka?(f.stat=Ra,f.w=0):f.type==Sa?c():f.type==Ta?d():f.type==Q?0<g*f.B?c():0>g*f.B?d():Math.abs(f.c)<=Math.abs(f.f)?c():d():f.type==C&&(f.stat=Na,f.w=f.c);f.M=f.B;a.ea+=f.B*f.w;if(f.type==Ka||f.type==Sa)g*f.M<-b.vb&&(a.wa=jc,0==a.some&&b.hb==Pb&&(a.some=a.h+e)),u<-g*f.M&&(u=-g*f.M);if(f.type==Ka||f.type==Ta)g*f.M>+b.vb&&(a.wa=jc,0==a.some&&b.hb==Pb&&(a.some=a.h+e)),u<+g*f.M&&(u=+g*f.M)}b.s>=fc&&0==b.cb&&y("~"+a.da+": obj = "+a.ea+" infeas = "+(b.hb==Pb?p:u)+"");b.s>=Xb&&0==b.cb&&(a.ra==ec&&a.wa==ec?
y("OPTIMAL SOLUTION FOUND"):a.ra==jc?y("PROBLEM HAS NO FEASIBLE SOLUTION"):b.hb==Pb?y("PROBLEM HAS UNBOUNDED SOLUTION"):y("PROBLEM HAS NO DUAL FEASIBLE SOLUTION"))}var f;null!=a&&3621377730==a.Ad||x("glp_simplex: P = "+a+"; invalid problem object");null!=a.$&&0!=a.$.reason&&x("glp_simplex: operation not allowed");null==b&&(b=new kc);b.s!=lc&&b.s!=Mb&&b.s!=fc&&b.s!=Xb&&b.s!=mc&&x("glp_simplex: msg_lev = "+b.s+"; invalid parameter");b.hb!=Pb&&b.hb!=Rb&&b.hb!=Ub&&x("glp_simplex: meth = "+b.hb+"; invalid parameter");
b.ed!=nc&&b.ed!=oc&&x("glp_simplex: pricing = "+b.ed+"; invalid parameter");b.le!=pc&&b.le!=qc&&x("glp_simplex: r_test = "+b.le+"; invalid parameter");0<b.Ib&&1>b.Ib||x("glp_simplex: tol_bnd = "+b.Ib+"; invalid parameter");0<b.vb&&1>b.vb||x("glp_simplex: tol_dj = "+b.vb+"; invalid parameter");0<b.ve&&1>b.ve||x("glp_simplex: tol_piv = "+b.ve+"; invalid parameter");0>b.pc&&x("glp_simplex: it_lim = "+b.pc+"; invalid parameter");0>b.ub&&x("glp_simplex: tm_lim = "+b.ub+"; invalid parameter");1>b.dc&&x("glp_simplex: out_frq = "+
b.dc+"; invalid parameter");0>b.cb&&x("glp_simplex: out_dly = "+b.cb+"; invalid parameter");b.yc!=bb&&b.yc!=cb&&x("glp_simplex: presolve = "+b.yc+"; invalid parameter");a.ra=a.wa=Aa;a.ea=0;a.some=0;for(f=1;f<=a.h;f++){var g=a.o[f];if(g.type==Q&&g.c>=g.f)return b.s>=Mb&&y("glp_simplex: row "+f+": lb = "+g.c+", ub = "+g.f+"; incorrect bounds"),f=rc}for(f=1;f<=a.n;f++)if(g=a.g[f],g.type==Q&&g.c>=g.f)return b.s>=Mb&&y("glp_simplex: column "+f+": lb = "+g.c+", ub = "+g.f+"; incorrect bounds"),f=rc;b.s>=
Xb&&(y("GLPK Simplex Optimizer, v"+sa()+""),y(a.h+" row"+(1==a.h?"":"s")+", "+a.n+" column"+(1==a.n?"":"s")+", "+a.O+" non-zero"+(1==a.O?"":"s")+""));0==a.O?(e(a,b),f=0):f=b.yc?d(a,b):c(a,b);return f},kc=exports.SMCP=function(a){a=a||{};this.s=a.msg_lev||Xb;this.hb=a.meth||Pb;this.ed=a.pricing||oc;this.le=a.r_test||qc;this.Ib=a.tol_bnd||1E-7;this.vb=a.tol_dj||1E-7;this.ve=a.tol_piv||1E-10;this.ef=a.obj_ll||-t;this.ff=a.obj_ul||+t;this.pc=a.it_lim||2147483647;this.ub=a.tm_lim||2147483647;this.dc=a.out_frq||
500;this.cb=a.out_dly||0;this.yc=a.presolve||cb},xc=exports.glp_get_status=function(a){var b;b=tc(a);switch(b){case ec:switch(uc(a)){case ec:b=vc;break;case jc:b=wc}}return b},tc=exports.glp_get_prim_stat=function(a){return a.ra},uc=exports.glp_get_dual_stat=function(a){return a.wa},yc=exports.glp_get_obj_val=function(a){return a.ea},zc=exports.glp_get_row_stat=function(a,b){1<=b&&b<=a.h||x("glp_get_row_stat: i = "+b+"; row number out of range");return a.o[b].stat},Ac=exports.glp_get_row_prim=function(a,
b){1<=b&&b<=a.h||x("glp_get_row_prim: i = "+b+"; row number out of range");return a.o[b].w},Bc=exports.glp_get_row_dual=function(a,b){1<=b&&b<=a.h||x("glp_get_row_dual: i = "+b+"; row number out of range");return a.o[b].M},Cc=exports.glp_get_col_stat=function(a,b){1<=b&&b<=a.n||x("glp_get_col_stat: j = "+b+"; column number out of range");return a.g[b].stat},Dc=exports.glp_get_col_prim=function(a,b){1<=b&&b<=a.n||x("glp_get_col_prim: j = "+b+"; column number out of range");return a.g[b].w},Ec=exports.glp_get_col_dual=
function(a,b){1<=b&&b<=a.n||x("glp_get_col_dual: j = "+b+"; column number out of range");return a.g[b].M};exports.glp_get_unbnd_ray=function(a){var b=a.some;b>a.h+a.n&&(b=0);return b};
var Hc=exports.glp_set_col_kind=function(a,b,c){1<=b&&b<=a.n||x("glp_set_col_kind: j = "+b+"; column number out of range");var d=a.g[b];switch(c){case Ma:d.kind=Ma;break;case Fc:d.kind=Fc;break;case Gc:d.kind=Fc;d.type==Q&&0==d.c&&1==d.f||Va(a,b,Q,0,1);break;default:x("glp_set_col_kind: j = "+b+"; kind = "+c+"; invalid column kind")}},Ic=exports.glp_get_col_kind=function(a,b){1<=b&&b<=a.n||x("glp_get_col_kind: j = "+b+"; column number out of range");var c=a.g[b],d=c.kind;switch(d){case Fc:c.type==
Q&&0==c.c&&1==c.f&&(d=Gc)}return d},Jc=exports.glp_get_num_int=function(a){for(var b,c=0,d=1;d<=a.n;d++)b=a.g[d],b.kind==Fc&&c++;return c},Kc=exports.glp_get_num_bin=function(a){for(var b,c=0,d=1;d<=a.n;d++)b=a.g[d],b.kind==Fc&&b.type==Q&&0==b.c&&1==b.f&&c++;return c};
exports.glp_intopt=function(a,b){function c(a,b){var c;if(xc(a)!=vc)return b.s>=Mb&&y("glp_intopt: optimal basis to initial LP relaxation not provided"),c=Lc;b.s>=Xb&&y("Integer optimization begins...");var d=a.h;c=a.n;var e,f;a.$=e={};e.n=c;e.wc=d;e.cc=new Int8Array(1+d+c);e.ad=new Float64Array(1+d+c);e.bd=new Float64Array(1+d+c);e.jf=new Int8Array(1+d+c);e.hf=new Float64Array(1+d+c);e.gf=new Float64Array(1+d+c);for(f=1;f<=d;f++){var q=a.o[f];e.cc[f]=q.type;e.ad[f]=q.c;e.bd[f]=q.f;e.jf[f]=q.stat;
e.hf[f]=q.w;e.gf[f]=q.M}for(f=1;f<=c;f++)q=a.g[f],e.cc[d+f]=q.type,e.ad[d+f]=q.c,e.bd[d+f]=q.f,e.jf[d+f]=q.stat,e.hf[d+f]=q.w,e.gf[d+f]=q.M;e.dh=a.ea;e.Dd=0;e.Rc=0;e.Ca=null;e.head=e.$a=null;e.Od=e.Vf=e.Fg=0;e.Eg=0;e.qe=null;e.oe=e.re=null;e.pe=null;e.R=null;e.F=a;e.$c=new Int8Array(1+c);e.Bg=e.Cg=0;e.mf=null;e.kf=e.nf=null;e.lf=null;d={size:0};d.head=d.$a=null;d.$g=0;d.R=null;e.local=d;e.Tf=null;e.Le=null;e.Ed=null;e.xg=new Int32Array(1+c);e.Og=new Float64Array(1+c);e.u=b;e.ic=la();e.Hg=0;e.lh=0;
e.reason=0;e.ne=0;e.pf=0;e.Sc=0;e.Ff=0;e.sd=0;e.Cd=0;e.stop=0;Mc(e,null);c=Nc(e);var d=e.F,r=d.h;f=d.n;if(r!=e.wc){var p,r=r-e.wc;p=new Int32Array(1+r);for(q=1;q<=r;q++)p[q]=e.wc+q;ab(d,r,p)}r=e.wc;for(q=1;q<=r;q++)Ua(d,q,e.cc[q],e.ad[q],e.bd[q]),Fb(d,q,e.jf[q]),d.o[q].w=e.hf[q],d.o[q].M=e.gf[q];for(q=1;q<=f;q++)Va(d,q,e.cc[r+q],e.ad[r+q],e.bd[r+q]),Gb(d,q,e.jf[r+q]),d.g[q].w=e.hf[r+q],d.g[q].M=e.gf[r+q];d.ra=d.wa=ec;d.ea=e.dh;Oc(e.local);d.$=null;0==c?a.Da==ec?(b.s>=Xb&&y("INTEGER OPTIMAL SOLUTION FOUND"),
a.Da=vc):(b.s>=Xb&&y("PROBLEM HAS NO INTEGER FEASIBLE SOLUTION"),a.Da=jc):c==Pc?b.s>=Xb&&y("RELATIVE MIP GAP TOLERANCE REACHED; SEARCH TERMINATED"):c==Qc?b.s>=Xb&&y("TIME LIMIT EXCEEDED; SEARCH TERMINATED"):c==Tb?b.s>=Mb&&y("glp_intopt: cannot solve current LP relaxation"):c==Rc&&b.s>=Xb&&y("SEARCH TERMINATED BY APPLICATION");return c}function d(a,b){function d(){Vb(f,m);m=null;Wb(f,a);return r}var e=pa.Hb,f,m=null,q={},r;b.s>=Xb&&y("Preprocessing...");f=Yb();Zb(f,a,Sc);pa.Hb=!e||b.s<Xb?cb:bb;r=Tc(f,
b);pa.Hb=e;0!=r&&(r==bc?b.s>=Xb&&y("PROBLEM HAS NO PRIMAL FEASIBLE SOLUTION"):r==cc&&b.s>=Xb&&y("LP RELAXATION HAS NO DUAL FEASIBLE SOLUTION"));if(0!=r)return r;m=Ba();dc(f,m);if(0==m.h&&0==m.n)return m.Da=vc,m.xa=m.la,b.s>=Xb&&(y("Objective value = "+m.xa+""),y("INTEGER OPTIMAL SOLUTION FOUND BY MIP PREPROCESSOR")),d();if(b.s>=Xb){var p=Jc(m),u=Kc(m);y(m.h+" row"+(1==m.h?"":"s")+", "+m.n+" column"+(1==m.n?"":"s")+", "+m.O+" non-zero"+(1==m.O?"":"s")+"");y(p+" integer variable"+(1==p?"":"s")+", "+
(0==u?"none of":1==p&&1==u?"":1==u?"one of":u==p?"all of":u+" of")+" which "+(1==u?"is":"are")+" binary")}eb(a,q);fb(m,q);pa.Hb=!e||b.s<Xb?cb:bb;gc(m,Uc|Vc|Wc|Xc);pa.Hb=e;pa.Hb=!e||b.s<Xb?cb:bb;ic(m);pa.Hb=e;b.s>=Xb&&y("Solving LP relaxation...");e=new kc;e.s=b.s;m.da=a.da;r=sc(m,e);a.da=m.da;if(0!=r)return b.s>=Mb&&y("glp_intopt: cannot solve LP relaxation"),r=Tb;r=xc(m);r==vc?r=0:r==jc?r=bc:r==wc&&(r=cc);if(0!=r)return r;m.da=a.da;r=c(m,b);a.da=m.da;return m.Da!=vc&&m.Da!=ec?(a.Da=m.Da,r):d()}var e,
f;null!=a&&3621377730==a.Ad||x("glp_intopt: P = "+a+"; invalid problem object");null!=a.$&&x("glp_intopt: operation not allowed");null==b&&(b=new Yc);b.s!=lc&&b.s!=Mb&&b.s!=fc&&b.s!=Xb&&b.s!=mc&&x("glp_intopt: msg_lev = "+b.s+"; invalid parameter");b.Lb!=Zc&&b.Lb!=$c&&b.Lb!=ad&&b.Lb!=bd&&b.Lb!=cd&&x("glp_intopt: br_tech = "+b.Lb+"; invalid parameter");b.lc!=dd&&b.lc!=ed&&b.lc!=fd&&b.lc!=gd&&x("glp_intopt: bt_tech = "+b.lc+"; invalid parameter");0<b.Xb&&1>b.Xb||x("glp_intopt: tol_int = "+b.Xb+"; invalid parameter");
0<b.ue&&1>b.ue||x("glp_intopt: tol_obj = "+b.ue+"; invalid parameter");0>b.ub&&x("glp_intopt: tm_lim = "+b.ub+"; invalid parameter");0>b.dc&&x("glp_intopt: out_frq = "+b.dc+"; invalid parameter");0>b.cb&&x("glp_intopt: out_dly = "+b.cb+"; invalid parameter");0<=b.Ke&&256>=b.Ke||x("glp_intopt: cb_size = "+b.Ke+"; invalid parameter");b.dd!=hd&&b.dd!=id&&b.dd!=jd&&x("glp_intopt: pp_tech = "+b.dd+"; invalid parameter");0>b.ae&&x("glp_intopt: mip_gap = "+b.ae+"; invalid parameter");b.Bd!=bb&&b.Bd!=cb&&
x("glp_intopt: mir_cuts = "+b.Bd+"; invalid parameter");b.yd!=bb&&b.yd!=cb&&x("glp_intopt: gmi_cuts = "+b.yd+"; invalid parameter");b.vd!=bb&&b.vd!=cb&&x("glp_intopt: cov_cuts = "+b.vd+"; invalid parameter");b.td!=bb&&b.td!=cb&&x("glp_intopt: clq_cuts = "+b.td+"; invalid parameter");b.yc!=bb&&b.yc!=cb&&x("glp_intopt: presolve = "+b.yc+"; invalid parameter");b.qd!=bb&&b.qd!=cb&&x("glp_intopt: binarize = "+b.qd+"; invalid parameter");b.Ve!=bb&&b.Ve!=cb&&x("glp_intopt: fp_heur = "+b.Ve+"; invalid parameter");
a.Da=Aa;a.xa=0;for(e=1;e<=a.h;e++)if(f=a.o[e],f.type==Q&&f.c>=f.f)return b.s>=Mb&&y("glp_intopt: row "+e+": lb = "+f.c+", ub = "+f.f+"; incorrect bounds"),e=rc;for(e=1;e<=a.n;e++)if(f=a.g[e],f.type==Q&&f.c>=f.f)return b.s>=Mb&&y("glp_intopt: column "+e+": lb = "+f.c+", ub = "+f.f+"; incorrect bounds"),e=rc;for(e=1;e<=a.n;e++)if(f=a.g[e],f.kind==Fc){if((f.type==Sa||f.type==Q)&&f.c!=Math.floor(f.c))return b.s>=Mb&&y("glp_intopt: integer column "+e+" has non-integer lower bound "+f.c+""),e=rc;if((f.type==
Ta||f.type==Q)&&f.f!=Math.floor(f.f))return b.s>=Mb&&y("glp_intopt: integer column "+e+" has non-integer upper bound "+f.f+""),e=rc;if(f.type==C&&f.c!=Math.floor(f.c))return b.s>=Mb&&y("glp_intopt: integer column "+e+" has non-integer fixed value "+f.c+""),e=rc}b.s>=Xb&&(e=Jc(a),f=Kc(a),y("GLPK Integer Optimizer, v"+sa()+""),y(a.h+" row"+(1==a.h?"":"s")+", "+a.n+" column"+(1==a.n?"":"s")+", "+a.O+" non-zero"+(1==a.O?"":"s")+""),y(e+" integer variable"+(1==e?"":"s")+", "+(0==f?"none of":1==e&&1==f?
"":1==f?"one of":f==e?"all of":f+" of")+" which "+(1==f?"is":"are")+" binary"));return e=b.yc?d(a,b):c(a,b)};
var Yc=exports.IOCP=function(a){a=a||{};this.s=a.msg_lev||Xb;this.Lb=a.br_tech||bd;this.lc=a.bt_tech||fd;this.Xb=a.tol_int||1E-5;this.ue=a.tol_obj||1E-7;this.ub=a.tm_lim||2147483647;this.dc=a.out_frq||5E3;this.cb=a.out_dly||1E4;this.rb=a.cb_func||null;this.Tc=a.cb_info||null;this.Ke=a.cb_size||0;this.dd=a.pp_tech||jd;this.ae=a.mip_gap||0;this.Bd=a.mir_cuts||cb;this.yd=a.gmi_cuts||cb;this.vd=a.cov_cuts||cb;this.td=a.clq_cuts||cb;this.yc=a.presolve||cb;this.qd=a.binarize||cb;this.Ve=a.fp_heur||cb};
exports.glp_mip_status=function(a){return a.Da};exports.glp_mip_obj_val=function(a){return a.xa};
var kd=exports.glp_mip_row_val=function(a,b){1<=b&&b<=a.h||x("glp_mip_row_val: i = "+b+"; row number out of range");return a.o[b].Va},ld=exports.glp_mip_col_val=function(a,b){1<=b&&b<=a.n||x("glp_mip_col_val: j = "+b+"; column number out of range");return a.g[b].Va},Ib=exports.glp_bf_exists=function(a){return 0==a.h||a.valid},Jb=exports.glp_factorize=function(a){function b(a,b,c,d){var e=a.h,f;f=a.head[b];if(f<=e)b=1,c[1]=f,d[1]=1;else for(b=0,a=a.g[f-e].l;null!=a;a=a.L)b++,c[b]=a.o.ia,d[b]=-a.o.qa*
a.j*a.g.za;return b}var c=a.h,d=a.n,e=a.o,f=a.g,g=a.head,k,h,l;k=a.valid=0;for(h=1;h<=c+d;h++)if(h<=c?(l=e[h].stat,e[h].bind=0):(l=f[h-c].stat,f[h-c].bind=0),l==A){k++;if(k>c)return a=Kb;g[k]=h;h<=c?e[h].bind=k:f[h-c].bind=k}if(k<c)return a=Kb;if(0<c){null==a.Y&&(a.Y={valid:0,type:md,jb:null,bb:null,zd:0,ec:.1,xc:4,hc:1,Ob:1E-15,sc:1E10,Zc:100,jc:1E-6,vc:100,jd:1E3,xh:-1,dg:0},nd(a));switch(od(a.Y,c,b,a)){case pd:return a=Nb;case qd:return a=Ob}a.valid=1}return 0};
exports.glp_bf_updated=function(a){0==a.h||a.valid||x("glp_bf_update: basis factorization does not exist");return 0==a.h?0:a.Y.dg};var eb=exports.glp_get_bfcp=function(a,b){var c=a.Pd;null==c?(b.type=md,b.zd=0,b.ec=.1,b.xc=4,b.hc=bb,b.Ob=1E-15,b.sc=1E10,b.Zc=100,b.jc=1E-6,b.vc=100,b.jd=0):ga(b,c)};function nd(a){var b={};eb(a,b);a=a.Y;a.type=b.type;a.zd=b.zd;a.ec=b.ec;a.xc=b.xc;a.hc=b.hc;a.Ob=b.Ob;a.sc=b.sc;a.Zc=b.Zc;a.jc=b.jc;a.vc=b.vc;a.jd=b.jd}
var fb=exports.glp_set_bfcp=function(a,b){var c=a.Pd;null==b?null!=c&&(a.Pd=null):(null==c&&(c=a.Pd={}),ga(c,b),c.type!=md&&c.type!=rd&&c.type!=sd&&x("glp_set_bfcp: type = "+c.type+"; invalid parameter"),0>c.zd&&x("glp_set_bfcp: lu_size = "+c.zd+"; invalid parameter"),0<c.ec&&1>c.ec||x("glp_set_bfcp: piv_tol = "+c.ec+"; invalid parameter"),1>c.xc&&x("glp_set_bfcp: piv_lim = "+c.xc+"; invalid parameter"),c.hc!=bb&&c.hc!=cb&&x("glp_set_bfcp: suhl = "+c.hc+"; invalid parameter"),0<=c.Ob&&1E-6>=c.Ob||
x("glp_set_bfcp: eps_tol = "+c.Ob+"; invalid parameter"),1>c.sc&&x("glp_set_bfcp: max_gro = "+c.sc+"; invalid parameter"),1<=c.Zc&&32767>=c.Zc||x("glp_set_bfcp: nfs_max = "+c.Zc+"; invalid parameter"),0<c.jc&&1>c.jc||x("glp_set_bfcp: upd_tol = "+c.jc+"; invalid parameter"),1<=c.vc&&32767>=c.vc||x("glp_set_bfcp: nrs_max = "+c.vc+"; invalid parameter"),0>c.jd&&x("glp_set_bfcp: rs_size = "+c.vc+"; invalid parameter"),0==c.jd&&(c.jd=20*c.vc));null!=a.Y&&nd(a)},td=exports.glp_get_bhead=function(a,b){0==
a.h||a.valid||x("glp_get_bhead: basis factorization does not exist");1<=b&&b<=a.h||x("glp_get_bhead: k = "+b+"; index out of range");return a.head[b]},ud=exports.glp_get_row_bind=function(a,b){0==a.h||a.valid||x("glp_get_row_bind: basis factorization does not exist");1<=b&&b<=a.h||x("glp_get_row_bind: i = "+b+"; row number out of range");return a.o[b].bind},vd=exports.glp_get_col_bind=function(a,b){0==a.h||a.valid||x("glp_get_col_bind: basis factorization does not exist");1<=b&&b<=a.n||x("glp_get_col_bind: j = "+
b+"; column number out of range");return a.g[b].bind},xd=exports.glp_ftran=function(a,b){var c=a.h,d=a.o,e=a.g,f,g;0==c||a.valid||x("glp_ftran: basis factorization does not exist");for(f=1;f<=c;f++)b[f]*=d[f].qa;0<c&&wd(a.Y,b);for(f=1;f<=c;f++)g=a.head[f],b[f]=g<=c?b[f]/d[g].qa:b[f]*e[g-c].za},zd=exports.glp_btran=function(a,b){var c=a.h,d=a.o,e=a.g,f,g;0==c||a.valid||x("glp_btran: basis factorization does not exist");for(f=1;f<=c;f++)g=a.head[f],b[f]=g<=c?b[f]/d[g].qa:b[f]*e[g-c].za;0<c&&yd(a.Y,
b);for(f=1;f<=c;f++)b[f]*=d[f].qa};
exports.glp_warm_up=function(a){var b,c,d,e,f;a.ra=a.wa=Aa;a.ea=0;a.some=0;for(d=1;d<=a.h;d++)b=a.o[d],b.w=b.M=0;for(d=1;d<=a.n;d++)b=a.g[d],b.w=b.M=0;if(!Ib(a)&&(e=Jb(a),0!=e))return e;e=new Float64Array(1+a.h);for(d=1;d<=a.h;d++)b=a.o[d],b.stat!=A&&(b.stat==M?b.w=b.c:b.stat==P?b.w=b.f:b.stat==Ra?b.w=0:b.stat==Na&&(b.w=b.c),e[d]-=b.w);for(d=1;d<=a.n;d++)if(b=a.g[d],b.stat!=A&&(b.stat==M?b.w=b.c:b.stat==P?b.w=b.f:b.stat==Ra?b.w=0:b.stat==Na&&(b.w=b.c),0!=b.w))for(c=b.l;null!=c;c=c.L)e[c.o.ia]+=c.j*
b.w;xd(a,e);a.ra=ec;for(d=1;d<=a.h;d++)if(b=a.o[d],b.stat==A){b.w=e[b.bind];c=b.type;if(c==Sa||c==Q||c==C)f=1E-6+1E-9*Math.abs(b.c),b.w<b.c-f&&(a.ra=Ad);if(c==Ta||c==Q||c==C)f=1E-6+1E-9*Math.abs(b.f),b.w>b.f+f&&(a.ra=Ad)}for(d=1;d<=a.n;d++)if(b=a.g[d],b.stat==A){b.w=e[b.bind];c=b.type;if(c==Sa||c==Q||c==C)f=1E-6+1E-9*Math.abs(b.c),b.w<b.c-f&&(a.ra=Ad);if(c==Ta||c==Q||c==C)f=1E-6+1E-9*Math.abs(b.f),b.w>b.f+f&&(a.ra=Ad)}a.ea=a.la;for(d=1;d<=a.n;d++)b=a.g[d],a.ea+=b.B*b.w;for(d=1;d<=a.h;d++)e[d]=0;for(d=
1;d<=a.n;d++)b=a.g[d],b.stat==A&&(e[b.bind]=b.B);zd(a,e);a.wa=ec;for(d=1;d<=a.h;d++)if(b=a.o[d],b.stat==A)b.M=0;else if(b.M=-e[d],c=b.stat,b=a.dir==za?+b.M:-b.M,(c==Ra||c==M)&&-1E-5>b||(c==Ra||c==P)&&1E-5<b)a.wa=Ad;for(d=1;d<=a.n;d++)if(b=a.g[d],b.stat==A)b.M=0;else{b.M=b.B;for(c=b.l;null!=c;c=c.L)b.M+=c.j*e[c.o.ia];c=b.stat;b=a.dir==za?+b.M:-b.M;if((c==Ra||c==M)&&-1E-5>b||(c==Ra||c==P)&&1E-5<b)a.wa=Ad}return 0};
var Bd=exports.glp_eval_tab_row=function(a,b,c,d){var e=a.h,f=a.n,g,k,h,l,n,m,q;0==e||a.valid||x("glp_eval_tab_row: basis factorization does not exist");1<=b&&b<=e+f||x("glp_eval_tab_row: k = "+b+"; variable number out of range");g=b<=e?ud(a,b):vd(a,b-e);0==g&&x("glp_eval_tab_row: k = "+b+"; variable must be basic");m=new Float64Array(1+e);l=new Int32Array(1+e);q=new Float64Array(1+e);m[g]=1;zd(a,m);k=0;for(b=1;b<=e+f;b++){if(b<=e){if(zc(a,b)==A)continue;n=-m[b]}else{if(Cc(a,b-e)==A)continue;h=gb(a,
b-e,l,q);n=0;for(g=1;g<=h;g++)n+=m[l[g]]*q[g]}0!=n&&(k++,c[k]=b,d[k]=n)}return k},Cd=exports.glp_eval_tab_col=function(a,b,c,d){var e=a.h,f=a.n,g;0==e||a.valid||x("glp_eval_tab_col: basis factorization does not exist");1<=b&&b<=e+f||x("glp_eval_tab_col: k = "+b+"; variable number out of range");(b<=e?zc(a,b):Cc(a,b-e))==A&&x("glp_eval_tab_col: k = "+b+"; variable must be non-basic");f=new Float64Array(1+e);if(b<=e)f[b]=-1;else for(g=gb(a,b-e,c,d),b=1;b<=g;b++)f[c[b]]=d[b];xd(a,f);g=0;for(b=1;b<=e;b++)0!=
f[b]&&(g++,c[g]=td(a,b),d[g]=f[b]);return g},Dd=exports.glp_transform_row=function(a,b,c,d){var e,f,g,k,h,l,n,m,q,r;Ib(a)||x("glp_transform_row: basis factorization does not exist ");f=kb(a);g=lb(a);m=new Float64Array(1+g);0<=b&&b<=g||x("glp_transform_row: len = "+b+"; invalid row length");for(k=1;k<=b;k++)e=c[k],1<=e&&e<=g||x("glp_transform_row: ind["+k+"] = "+e+"; column index out of range"),0==d[k]&&x("glp_transform_row: val["+k+"] = 0; zero coefficient not allowed"),0!=m[e]&&x("glp_transform_row: ind["+
k+"] = "+e+"; duplicate column indices not allowed"),m[e]=d[k];q=new Float64Array(1+f);for(e=1;e<=f;e++)b=td(a,e),q[e]=b<=f?0:m[b-f];zd(a,q);b=0;for(e=1;e<=f;e++)zc(a,e)!=A&&(n=-q[e],0!=n&&(b++,c[b]=e,d[b]=n));l=new Int32Array(1+f);r=new Float64Array(1+f);for(e=1;e<=g;e++)if(Cc(a,e)!=A){n=m[e];h=gb(a,e,l,r);for(k=1;k<=h;k++)n+=r[k]*q[l[k]];0!=n&&(b++,c[b]=f+e,d[b]=n)}return b};
exports.glp_transform_col=function(a,b,c,d){var e,f,g,k;Ib(a)||x("glp_transform_col: basis factorization does not exist ");f=kb(a);k=new Float64Array(1+f);0<=b&&b<=f||x("glp_transform_col: len = "+b+"; invalid column length");for(g=1;g<=b;g++)e=c[g],1<=e&&e<=f||x("glp_transform_col: ind["+g+"] = "+e+"; row index out of range"),0==d[g]&&x("glp_transform_col: val["+g+"] = 0; zero coefficient not allowed"),0!=k[e]&&x("glp_transform_col: ind["+g+"] = "+e+"; duplicate row indices not allowed"),k[e]=d[g];
xd(a,k);b=0;for(e=1;e<=f;e++)0!=k[e]&&(b++,c[b]=td(a,e),d[b]=k[e]);return b};
var Ed=exports.glp_prim_rtest=function(a,b,c,d,e,f){var g,k,h,l,n,m,q,r,p,u,v,H,E;tc(a)!=ec&&x("glp_prim_rtest: basic solution is not primal feasible ");1!=e&&-1!=e&&x("glp_prim_rtest: dir = "+e+"; invalid parameter");0<f&&1>f||x("glp_prim_rtest: eps = "+f+"; invalid parameter");k=kb(a);h=lb(a);l=0;E=t;r=0;for(n=1;n<=b;n++)if(g=c[n],1<=g&&g<=k+h||x("glp_prim_rtest: ind["+n+"] = "+g+"; variable number out of range"),g<=k?(m=pb(a,g),u=qb(a,g),v=rb(a,g),q=zc(a,g),p=Ac(a,g)):(m=sb(a,g-k),u=tb(a,g-k),
v=ub(a,g-k),q=Cc(a,g-k),p=Dc(a,g-k)),q!=A&&x("glp_prim_rtest: ind["+n+"] = "+g+"; non-basic variable not allowed"),g=0<e?+d[n]:-d[n],m!=Ka){if(m==Sa){if(g>-f)continue;H=(u-p)/g}else if(m==Ta){if(g<+f)continue;H=(v-p)/g}else if(m==Q)if(0>g){if(g>-f)continue;H=(u-p)/g}else{if(g<+f)continue;H=(v-p)/g}else if(m==C){if(-f<g&&g<+f)continue;H=0}0>H&&(H=0);if(E>H||E==H&&r<Math.abs(g))l=n,E=H,r=Math.abs(g)}return l},Fd=exports.glp_dual_rtest=function(a,b,c,d,e,f){var g,k,h,l,n,m,q,r,p,u,v;uc(a)!=ec&&x("glp_dual_rtest: basic solution is not dual feasible");
1!=e&&-1!=e&&x("glp_dual_rtest: dir = "+e+"; invalid parameter");0<f&&1>f||x("glp_dual_rtest: eps = "+f+"; invalid parameter");k=kb(a);h=lb(a);p=jb(a)==za?1:-1;l=0;v=t;q=0;for(n=1;n<=b;n++){g=c[n];1<=g&&g<=k+h||x("glp_dual_rtest: ind["+n+"] = "+g+"; variable number out of range");g<=k?(m=zc(a,g),r=Bc(a,g)):(m=Cc(a,g-k),r=Ec(a,g-k));m==A&&x("glp_dual_rtest: ind["+n+"] = "+g+"; basic variable not allowed");g=0<e?+d[n]:-d[n];if(m==M){if(g<+f)continue;u=p*r/g}else if(m==P){if(g>-f)continue;u=p*r/g}else if(m==
Ra){if(-f<g&&g<+f)continue;u=0}else if(m==Na)continue;0>u&&(u=0);if(v>u||v==u&&q<Math.abs(g))l=n,v=u,q=Math.abs(g)}return l};
function Gd(a,b,c,d,e,f,g){var k,h,l,n=0,m,q;a.ra==Aa&&x("glp_analyze_row: primal basic solution components are undefined");a.wa!=ec&&x("glp_analyze_row: basic solution is not dual feasible");0<=b&&b<=a.n||x("glp_analyze_row: len = "+b+"; invalid row length");q=0;for(k=1;k<=b;k++)h=c[k],1<=h&&h<=a.h+a.n||x("glp_analyze_row: ind["+k+"] = "+h+"; row/column index out of range"),h<=a.h?(a.o[h].stat==A&&x("glp_analyze_row: ind["+k+"] = "+h+"; basic auxiliary variable is not allowed"),m=a.o[h].w):(a.g[h-
a.h].stat==A&&x("glp_analyze_row: ind["+k+"] = "+h+"; basic structural variable is not allowed"),m=a.g[h-a.h].w),q+=d[k]*m;if(e==Sa){if(q>=f)return 1;l=1}else if(e==Ta){if(q<=f)return 1;l=-1}else x("glp_analyze_row: type = "+e+"; invalid parameter");e=f-q;b=Fd(a,b,c,d,l,1E-9);if(0==b)return 2;h=c[b];m=h<=a.h?a.o[h].w:a.g[h-a.h].w;c=e/d[b];g(b,m,c,q,e,h<=a.h?a.o[h].M*c:a.g[h-a.h].M*c);return n}
exports.glp_analyze_bound=function(a,b,c){var d,e,f,g,k,h,l,n,m,q,r,p,u,v;r=p=u=v=null;null!=a&&3621377730==a.Ad||x("glp_analyze_bound: P = "+a+"; invalid problem object");e=a.h;f=a.n;a.ra==ec&&a.wa==ec||x("glp_analyze_bound: optimal basic solution required");0==e||a.valid||x("glp_analyze_bound: basis factorization required");1<=b&&b<=e+f||x("glp_analyze_bound: k = "+b+"; variable number out of range");d=b<=e?a.o[b]:a.g[b-e];g=d.stat;f=d.w;g==A&&x("glp_analyze_bound: k = "+b+"; basic variable not allowed ");
g=new Int32Array(1+e);q=new Float64Array(1+e);h=Cd(a,b,g,q);for(b=-1;1>=b;b+=2)l=Ed(a,h,g,q,b,1E-9),0==l?(k=0,l=0>b?-t:+t):(k=g[l],k<=e?(d=a.o[k],n=qb(a,d.ia),m=rb(a,d.ia)):(d=a.g[k-e],n=tb(a,d.H),m=ub(a,d.H)),d=d.w,d=0>b&&0<q[l]||0<b&&0>q[l]?n-d:m-d,l=f+d/q[l]),0>b?(r=l,p=k):(u=l,v=k);c(r,p,u,v)};
exports.glp_analyze_coef=function(a,b,c){var d,e,f,g,k,h,l,n,m,q,r,p,u,v,H,E,B,J,R,T,O=null,S=null,G=null,Z=null,Y=null,ba=null;null!=a&&3621377730==a.Ad||x("glp_analyze_coef: P = "+a+"; invalid problem object");e=a.h;f=a.n;a.ra==ec&&a.wa==ec||x("glp_analyze_coef: optimal basic solution required");0==e||a.valid||x("glp_analyze_coef: basis factorization required");1<=b&&b<=e+f||x("glp_analyze_coef: k = "+b+"; variable number out of range");b<=e?(d=a.o[b],g=d.type,p=d.c,u=d.f,v=0):(d=a.g[b-e],g=d.type,
p=d.c,u=d.f,v=d.B);k=d.stat;H=d.w;k!=A&&x("glp_analyze_coef: k = "+b+"; non-basic variable not allowed");k=new Int32Array(1+e);T=new Float64Array(1+e);r=new Int32Array(1+f);R=new Float64Array(1+f);m=Bd(a,b,r,R);for(f=-1;1>=f;f+=2)a.dir==za?l=-f:a.dir==Ea&&(l=+f),q=Fd(a,m,r,R,l,1E-9),0==q?(E=0>f?-t:+t,h=0,q=H):(h=r[q],d=h<=e?a.o[h]:a.g[h-e],l=d.M,d=-l/R[q],E=v+d,l=0>f&&0<R[q]||0<f&&0>R[q]?1:-1,a.dir==Ea&&(l=-l),n=Cd(a,h,k,T),d=b<=e?a.o[b]:a.g[b-e],d.type=Ka,d.c=d.f=0,n=Ed(a,n,k,T,l,1E-9),d=b<=e?a.o[b]:
a.g[b-e],d.type=g,d.c=p,d.f=u,0==n?q=0>l&&0<R[q]||0<l&&0>R[q]?-t:+t:(d=k[n],d<=e?(d=a.o[d],B=qb(a,d.ia),J=rb(a,d.ia)):(d=a.g[d-e],B=tb(a,d.H),J=ub(a,d.H)),d=d.w,d=0>l&&0<T[n]||0<l&&0>T[n]?B-d:J-d,q=H+R[q]/T[n]*d)),0>f?(O=E,S=h,G=q):(Z=E,Y=h,ba=q);c(O,S,G,Z,Y,ba)};exports.glp_ios_reason=function(a){return a.reason};exports.glp_ios_get_prob=function(a){return a.F};function Hd(a){a.reason!=Ia&&x("glp_ios_pool_size: operation not allowed");return a.local.size}
function Id(a,b,c,d,e,f,g){a.reason!=Ia&&x("glp_ios_add_row: operation not allowed");var k=a.local,h,l;h={name:null};0<=b&&255>=b||x("glp_ios_add_row: klass = "+b+"; invalid cut class");h.qc=b;h.l=null;0<=c&&c<=a.n||x("glp_ios_add_row: len = "+c+"; invalid cut length");for(l=1;l<=c;l++)b={},1<=d[l]&&d[l]<=a.n||x("glp_ios_add_row: ind["+l+"] = "+d[l]+"; column index out of range"),b.H=d[l],b.j=e[l],b.next=h.l,h.l=b;f!=Sa&&f!=Ta&&f!=C&&x("glp_ios_add_row: type = "+f+"; invalid cut type");h.type=f;h.Zf=
g;h.ga=k.$a;h.next=null;null==h.ga?k.head=h:h.ga.next=h;k.$a=h;k.size++}function Jd(a,b){1<=b&&b<=a.F.n||x("glp_ios_can_branch: j = "+b+"; column number out of range");return a.$c[b]}
function Kd(a,b){var c=a.F,d=a.wc,e=a.n,f,g;g=c.la;for(f=1;f<=e;f++){var k=c.g[f];if(k.kind==Fc&&b[f]!=Math.floor(b[f]))return 1;g+=k.B*b[f]}if(c.Da==ec)switch(c.dir){case za:if(g>=a.F.xa)return 1;break;case Ea:if(g<=a.F.xa)return 1}a.u.s>=fc&&y("Solution found by heuristic: "+g+"");c.Da=ec;c.xa=g;for(f=1;f<=e;f++)c.g[f].Va=b[f];for(e=1;e<=d;e++)for(f=c.o[e],f.Va=0,g=f.l;null!=g;g=g.G)f.Va+=g.j*g.g.Va;return 0}exports.glp_mpl_alloc_wksp=function(){return Ld()};
exports._glp_mpl_init_rand=function(a,b){0!=a.I&&x("glp_mpl_init_rand: invalid call sequence\n");Md(a.Fd,b)};var Od=exports.glp_mpl_read_model=function(a,b,c,d){0!=a.I&&x("glp_mpl_read_model: invalid call sequence");a=Nd(a,b,c,d);1==a||2==a?a=0:4==a&&(a=1);return a};exports.glp_mpl_read_model_from_string=function(a,b,c,d){var e=0;return Od(a,b,function(){return e<c.length?c[e++]:-1},d)};
var Qd=exports.glp_mpl_read_data=function(a,b,c){1!=a.I&&2!=a.I&&x("glp_mpl_read_data: invalid call sequence");a=Pd(a,b,c);2==a?a=0:4==a&&(a=1);return a};exports.glp_mpl_read_data_from_string=function(a,b,c){var d=0;return Qd(a,b,function(){return d<c.length?c[d++]:-1})};exports.glp_mpl_generate=function(a,b,c,d){1!=a.I&&2!=a.I&&x("glp_mpl_generate: invalid call sequence\n");a=Rd(a,b,c,d);3==a?a=0:4==a&&(a=1);return a};
exports.glp_mpl_build_prob=function(a,b){var c,d,e,f,g,k,h;3!=a.I&&x("glp_mpl_build_prob: invalid call sequence\n");db(b);Ca(b,Sd(a));c=Td(a);0<c&&La(b,c);for(d=1;d<=c;d++){Pa(b,d,Ud(a,d));g=Vd(a,d,function(a,b){k=a;h=b});switch(g){case Wd:g=Ka;break;case Xd:g=Sa;break;case Yd:g=Ta;break;case Zd:g=Q;break;case $d:g=C}g==Q&&Math.abs(k-h)<1E-9*(1+Math.abs(k))&&(g=C,Math.abs(k)<=Math.abs(h)?h=k:k=h);Ua(b,d,g,k,h);0!=ae(a,d)&&y("glp_mpl_build_prob: row "+Ud(a,d)+"; constant term "+ae(a,d)+" ignored")}d=
be(a);0<d&&Oa(b,d);for(e=1;e<=d;e++){Qa(b,e,ce(a,e));f=de(a,e);switch(f){case ee:case fe:Hc(b,e,Fc)}g=ge(a,e,function(a,b){k=a;h=b});switch(g){case Wd:g=Ka;break;case Xd:g=Sa;break;case Yd:g=Ta;break;case Zd:g=Q;break;case $d:g=C}if(f==fe){if(g==Ka||g==Ta||0>k)k=0;if(g==Ka||g==Sa||1<h)h=1;g=Q}g==Q&&Math.abs(k-h)<1E-9*(1+Math.abs(k))&&(g=C,Math.abs(k)<=Math.abs(h)?h=k:k=h);Va(b,e,g,k,h)}g=new Int32Array(1+d);e=new Float64Array(1+d);for(d=1;d<=c;d++)f=he(a,d,g,e),Ya(b,d,f,g,e);for(d=1;d<=c;d++)if(f=
ie(a,d),f==je||f==ke){Da(b,Ud(a,d));Fa(b,f==je?za:Ea);Xa(b,0,ae(a,d));f=he(a,d,g,e);for(c=1;c<=f;c++)Xa(b,g[c],e[c]);break}};
exports.glp_mpl_postsolve=function(a,b,c){var d,e,f,g,k,h;(3!=a.I||a.Kf)&&x("glp_mpl_postsolve: invalid call sequence");c!=$b&&c!=le&&c!=Sc&&x("glp_mpl_postsolve: sol = "+c+"; invalid parameter");e=Td(a);f=be(a);e==kb(b)&&f==lb(b)||x("glp_mpl_postsolve: wrong problem object\n");if(!me(a))return 0;for(d=1;d<=e;d++)c==$b?(g=zc(b,d),k=Ac(b,d),h=Bc(b,d)):c==le?(g=0,k=glp_ipt_row_prim(b,d),h=glp_ipt_row_dual(b,d)):c==Sc&&(g=0,k=kd(b,d),h=0),1E-9>Math.abs(k)&&(k=0),1E-9>Math.abs(h)&&(h=0),ne(a,d,g,k,h);
for(d=1;d<=f;d++)c==$b?(g=Cc(b,d),k=Dc(b,d),h=Ec(b,d)):c==le?(g=0,k=glp_ipt_col_prim(b,d),h=glp_ipt_col_dual(b,d)):c==Sc&&(g=0,k=ld(b,d),h=0),1E-9>Math.abs(k)&&(k=0),1E-9>Math.abs(h)&&(h=0),oe(a,d,g,k,h);a=pe(a);3==a?a=0:4==a&&(a=1);return a};
function qe(a,b){var c,d,e;c=null;for(d=a.root;null!=d;)c=d,0>=a.ug(a.info,b,c.key)?(e=0,d=c.left,c.ta++):(e=1,d=c.right);d={};d.key=b;d.type=0;d.link=null;d.ta=1;d.V=c;d.fa=null==c?0:e;d.Aa=0;d.left=null;d.right=null;a.size++;for(null==c?a.root=d:0==e?c.left=d:c.right=d;null!=c;){if(0==e){if(0<c.Aa){c.Aa=0;break}if(0>c.Aa){re(a,c);break}c.Aa=-1}else{if(0>c.Aa){c.Aa=0;break}if(0<c.Aa){re(a,c);break}c.Aa=1}e=c.fa;c=c.V}null==c&&a.height++;return d}
function re(a,b){var c,d,e,f,g;0>b.Aa?(c=b.V,d=b.left,e=d.right,0>=d.Aa?(null==c?a.root=d:0==b.fa?c.left=d:c.right=d,b.ta-=d.ta,d.V=c,d.fa=b.fa,d.Aa++,d.right=b,b.V=d,b.fa=1,b.Aa=-d.Aa,b.left=e,null!=e&&(e.V=b,e.fa=0)):(f=e.left,g=e.right,null==c?a.root=e:0==b.fa?c.left=e:c.right=e,b.ta-=d.ta+e.ta,e.ta+=d.ta,b.Aa=0<=e.Aa?0:1,d.Aa=0>=e.Aa?0:-1,e.V=c,e.fa=b.fa,e.Aa=0,e.left=d,e.right=b,b.V=e,b.fa=1,b.left=g,d.V=e,d.fa=0,d.right=f,null!=f&&(f.V=d,f.fa=1),null!=g&&(g.V=b,g.fa=0))):(c=b.V,d=b.right,e=
d.left,0<=d.Aa?(null==c?a.root=d:0==b.fa?c.left=d:c.right=d,d.ta+=b.ta,d.V=c,d.fa=b.fa,d.Aa--,d.left=b,b.V=d,b.fa=0,b.Aa=-d.Aa,b.right=e,null!=e&&(e.V=b,e.fa=1)):(f=e.left,g=e.right,null==c?a.root=e:0==b.fa?c.left=e:c.right=e,d.ta-=e.ta,e.ta+=b.ta,b.Aa=0>=e.Aa?0:-1,d.Aa=0<=e.Aa?0:1,e.V=c,e.fa=b.fa,e.Aa=0,e.left=b,e.right=d,b.V=e,b.fa=0,b.right=f,d.V=e,d.fa=1,d.left=g,null!=f&&(f.V=b,f.fa=1),null!=g&&(g.V=d,g.fa=0)))}var pd=1,qd=2,se=3,te=4,ue=5;
function od(a,b,c,d){var e,f;f=a.valid=0;switch(a.type){case md:a.bb=null;null==a.jb&&(f={},f.kb=f.h=0,f.valid=0,f.ma=ve(),f.Yd=50,f.Rb=0,f.Xe=f.Ze=f.Ye=null,f.ge=f.fe=null,f.qg=null,f.rg=null,f.jc=1E-6,f.Xf=0,a.jb=f,f=1);break;case rd:case sd:a.jb=null,null==a.bb&&(we&&y("lpf_create_it: warning: debug mode enabled"),f={valid:0},f.Mc=f.cf=0,f.ma=ve(),f.h=0,f.yf=null,f.N=50,f.n=0,f.Ld=f.Kd=null,f.Nd=f.Md=null,f.Pc=null,f.Ee=f.De=null,f.Ge=f.Fe=null,f.Id=1E3,f.md=0,f.Zb=null,f.$b=null,f.mb=f.Gc=null,
a.bb=f,f=1)}null!=a.jb?e=a.jb.ma:null!=a.bb&&(e=a.bb.ma);f&&(e.Ya=a.zd);e.ec=a.ec;e.xc=a.xc;e.hc=a.hc;e.Ob=a.Ob;e.sc=a.sc;null!=a.jb&&(f&&(a.jb.Yd=a.Zc),a.jb.jc=a.jc);null!=a.bb&&(f&&(a.bb.N=a.vc),f&&(a.bb.Id=a.jd));if(null!=a.jb){a:{e=a.jb;1>b&&x("fhv_factorize: m = "+b+"; invalid parameter");1E8<b&&x("fhv_factorize: m = "+b+"; matrix too big");e.h=b;e.valid=0;null==e.Xe&&(e.Xe=new Int32Array(1+e.Yd));null==e.Ze&&(e.Ze=new Int32Array(1+e.Yd));null==e.Ye&&(e.Ye=new Int32Array(1+e.Yd));e.kb<b&&(e.kb=
b+100,e.ge=new Int32Array(1+e.kb),e.fe=new Int32Array(1+e.kb),e.qg=new Int32Array(1+e.kb),e.rg=new Float64Array(1+e.kb));switch(xe(e.ma,b,c,d)){case ye:b=ze;break a;case Ae:b=Be;break a}e.valid=1;e.Rb=0;ha(e.ge,1,e.ma.nb,1,b);ha(e.fe,1,e.ma.xb,1,b);b=e.Xf=0}switch(b){case ze:return a=pd;case Be:return a=qd}}else if(null!=a.bb){a:{e=a.bb;if(we)var g,k,h,l,n,m;1>b&&x("lpf_factorize: m = "+b+"; invalid parameter");1E8<b&&x("lpf_factorize: m = "+b+"; matrix too big");e.cf=e.h=b;e.valid=0;null==e.Ld&&
(e.Ld=new Int32Array(1+e.N));null==e.Kd&&(e.Kd=new Int32Array(1+e.N));null==e.Nd&&(e.Nd=new Int32Array(1+e.N));null==e.Md&&(e.Md=new Int32Array(1+e.N));null==e.Pc&&(f=e.N,Ce&&y("scf_create_it: warning: debug mode enabled"),1<=f&&32767>=f||x("scf_create_it: n_max = "+f+"; invalid parameter"),g={},g.N=f,g.n=0,g.Pb=new Float64Array(1+f*f),g.C=new Float64Array(1+f*(f+1)/2),g.p=new Int32Array(1+f),g.bg=De,g.ta=0,Ce?g.m=new Float64Array(1+f*f):g.m=null,g.eg=new Float64Array(1+f),e.Pc=g);null==e.Zb&&(e.Zb=
new Int32Array(1+e.Id));null==e.$b&&(e.$b=new Float64Array(1+e.Id));e.Mc<b&&(e.Mc=b+100,e.Ee=new Int32Array(1+e.Mc+e.N),e.De=new Int32Array(1+e.Mc+e.N),e.Ge=new Int32Array(1+e.Mc+e.N),e.Fe=new Int32Array(1+e.Mc+e.N),e.mb=new Float64Array(1+e.Mc+e.N),e.Gc=new Float64Array(1+e.Mc+e.N));switch(xe(e.ma,b,c,d)){case ye:b=Ee;break a;case Ae:b=LPF_ECOND;break a}e.valid=1;if(we){e.yf=n=new Float64Array(1+b*b);l=new Int32Array(1+b);m=new Float64Array(1+b);for(f=1;f<=b*b;f++)n[f]=0;for(k=1;k<=b;k++)for(h=c(d,
k,l,m),f=1;f<=h;f++)g=l[f],n[(g-1)*b+k]=m[f]}e.n=0;c=e.Pc;c.n=c.ta=0;for(f=1;f<=b;f++)e.Ee[f]=e.De[f]=f,e.Ge[f]=e.Fe[f]=f;e.md=1;b=0}switch(b){case 0:switch(a.type){case rd:a.bb.Pc.bg=De;break;case sd:a.bb.Pc.bg=Fe}break;case Ee:return a=pd;case LPF_ECOND:return a=qd}}a.valid=1;return a.dg=0}
function wd(a,b){if(null!=a.jb){var c=a.jb,d=c.ma.nb,e=c.ma.xb,f=c.ge,g=c.fe;c.valid||x("fhv_ftran: the factorization is not valid");c.ma.nb=f;c.ma.xb=g;Ge(c.ma,0,b);c.ma.nb=d;c.ma.xb=e;He(c,0,b);Ie(c.ma,0,b)}else if(null!=a.bb){var c=a.bb,d=c.cf,e=c.h,k=c.n,h=c.De,f=c.Fe,g=c.mb,l,n;if(we)var m;c.valid||x("lpf_ftran: the factorization is not valid");if(we)for(m=new Float64Array(1+e),l=1;l<=e;l++)m[l]=b[l];for(l=1;l<=d+k;l++)g[l]=(n=h[l])<=e?b[n]:0;Ge(c.ma,0,g);Je(c,g,d,g);Ke(c.Pc,0,g,d);k=c.n;h=c.Ld;
l=c.Kd;n=c.Zb;var q=c.$b,r,p,u,v;for(r=1;r<=k;r++)if(0!=g[r+d])for(v=-1*g[r+d],p=h[r],u=p+l[r];p<u;p++)g[n[p]]+=v*q[p];Ie(c.ma,0,g);for(l=1;l<=e;l++)b[l]=g[f[l]];we&&check_error(c,0,b,m)}}
function yd(a,b){if(null!=a.jb){var c=a.jb,d=c.ma.nb,e=c.ma.xb,f=c.ge,g=c.fe;c.valid||x("fhv_btran: the factorization is not valid");Ie(c.ma,1,b);He(c,1,b);c.ma.nb=f;c.ma.xb=g;Ge(c.ma,1,b);c.ma.nb=d;c.ma.xb=e}else if(null!=a.bb){var c=a.bb,d=c.cf,e=c.h,k=c.n,f=c.Ee,h=c.Ge,g=c.mb,l,n;if(we)var m;c.valid||x("lpf_btran: the factorization is not valid");if(we)for(m=new Float64Array(1+e),l=1;l<=e;l++)m[l]=b[l];for(l=1;l<=d+k;l++)g[l]=(n=h[l])<=e?b[n]:0;Ie(c.ma,1,g);Le(c,g,d,g);Ke(c.Pc,1,g,d);k=c.n;h=c.Nd;
l=c.Md;n=c.Zb;var q=c.$b,r,p,u,v;for(r=1;r<=k;r++)if(0!=g[r+d])for(v=-1*g[r+d],p=h[r],u=p+l[r];p<u;p++)g[n[p]]+=v*q[p];Ge(c.ma,1,g);for(l=1;l<=e;l++)b[l]=g[f[l]];we&&check_error(c,1,b,m)}}
function Me(a,b,c,d,e,f){if(null!=a.jb)switch(Ne(a.jb,b,c,d,e,f)){case ze:return a.valid=0,a=pd;case Oe:return a.valid=0,a=se;case Pe:return a.valid=0,a=te;case Qe:return a.valid=0,a=ue}else if(null!=a.bb){a:{var g=a.bb,k=g.cf,h=g.h;if(we)var l=g.yf;var n=g.n,m=g.Ld,q=g.Kd,r=g.Nd,p=g.Md,u=g.Ee,v=g.De,H=g.Ge,E=g.Fe,B=g.md,J=g.Zb,R=g.$b,T=g.Gc,O=g.mb,S=g.Gc,G,Z,Y;g.valid||x("lpf_update_it: the factorization is not valid");1<=b&&b<=h||x("lpf_update_it: j = "+b+"; column number out of range");if(n==g.N)g.valid=
0,b=LPF_ELIMIT;else{for(G=1;G<=h;G++)T[G]=0;for(Y=1;Y<=c;Y++)G=d[e+Y],1<=G&&G<=h||x("lpf_update_it: ind["+Y+"] = "+G+"; row number out of range"),0!=T[G]&&x("lpf_update_it: ind["+Y+"] = "+G+"; duplicate row index not allowed"),0==f[Y]&&x("lpf_update_it: val["+Y+"] = "+f[Y]+"; zero element not allowed"),T[G]=f[Y];if(we)for(G=1;G<=h;G++)l[(G-1)*h+b]=T[G];for(G=1;G<=k+n;G++)O[G]=(Z=v[G])<=h?T[Z]:0;for(G=1;G<=k+n;G++)S[G]=0;S[E[b]]=1;Ge(g.ma,0,O);Ie(g.ma,1,S);if(g.Id<B+k+k){G=g.Id;c=g.md-1;d=g.Zb;for(e=
g.$b;G<B+k+k;)G+=G;g.Id=G;g.Zb=new Int32Array(1+G);g.$b=new Float64Array(1+G);ha(g.Zb,1,d,1,c);ha(g.$b,1,e,1,c);J=g.Zb;R=g.$b}m[n+1]=B;for(G=1;G<=k;G++)0!=O[G]&&(J[B]=G,R[B]=O[G],B++);q[n+1]=B-g.md;g.md=B;r[n+1]=B;for(G=1;G<=k;G++)0!=S[G]&&(J[B]=G,R[B]=S[G],B++);p[n+1]=B-g.md;g.md=B;Je(g,O,0,O);Le(g,S,0,S);q=0;for(G=1;G<=k;G++)q-=S[G]*O[G];m=g.Pc;B=q;G=m.N;q=m.n;c=m.Pb;d=m.C;e=m.p;if(Ce)var ba=m.m;p=m.eg;r=0;if(q==G)r=Re;else{m.n=++q;f=1;for(h=(f-1)*m.N+q;f<q;f++,h+=G)c[h]=0;h=1;for(f=(q-1)*m.N+h;h<
q;h++,f++)c[f]=0;for(f=c[(q-1)*m.N+q]=1;f<q;f++){J=0;h=1;for(l=(f-1)*m.N+1;h<q;h++,l++)J+=c[l]*O[h+k];d[Se(m,f,q)]=J}for(h=1;h<q;h++)p[h]=S[e[h]+k];p[q]=B;e[q]=q;if(Ce){f=1;for(h=(f-1)*m.N+q;f<q;f++,h+=G)ba[h]=O[f+k];h=1;for(f=(q-1)*m.N+h;h<q;h++,f++)ba[f]=S[h+k];ba[(q-1)*m.N+q]=B}for(O=1;O<q&&0==p[O];O++);switch(m.bg){case De:S=m.n;ba=m.Pb;for(B=m.C;O<S;O++){e=Se(m,O,O);c=(O-1)*m.N+1;f=(S-1)*m.N+1;if(Math.abs(B[e])<Math.abs(p[O])){G=O;for(d=e;G<=S;G++,d++)l=B[d],B[d]=p[G],p[G]=l;G=1;d=c;for(h=f;G<=
S;G++,d++,h++)l=ba[d],ba[d]=ba[h],ba[h]=l}Math.abs(B[e])<Te&&(B[e]=p[O]=0);if(0!=p[O]){l=p[O]/B[e];G=O+1;for(d=e+1;G<=S;G++,d++)p[G]-=l*B[d];G=1;d=c;for(h=f;G<=S;G++,d++,h++)ba[h]-=l*ba[d]}}Math.abs(p[S])<Te&&(p[S]=0);B[Se(m,S,S)]=p[S];break;case Fe:Ue(m,O,p)}G=m.N;O=m.n;S=m.C;B=0;ba=1;for(p=Se(m,ba,ba);ba<=O;ba++,p+=G,G--)0!=S[p]&&B++;m.ta=B;m.ta!=q&&(r=Ve);Ce&&check_error(m,"scf_update_exp")}switch(r){case Ve:g.valid=0;b=Ee;break a}u[k+n+1]=v[k+n+1]=k+n+1;H[k+n+1]=E[k+n+1]=k+n+1;G=E[b];Z=E[k+n+
1];H[G]=k+n+1;E[k+n+1]=G;H[Z]=b;E[b]=Z;g.n++;b=0}}switch(b){case Ee:return a.valid=0,a=pd;case LPF_ELIMIT:return a.valid=0,a=te}}a.dg++;return 0}
var We=exports.glp_read_lp=function(a,b,c){function d(a,b){throw Error(a.count+": "+b);}function e(a,b){y(a.count+": warning: "+b)}function f(a){var b;"\n"==a.m&&a.count++;b=a.Lg();0>b?"\n"==a.m?(a.count--,b=-1):(e(a,"missing final end of line"),b="\n"):"\n"!=b&&(0<=" \t\n\v\f\r".indexOf(b)?b=" ":ta(b)&&d(a,"invalid control character "+b.charCodeAt(0)));a.m=b}function g(a){a.i+=a.m;f(a)}function k(a,b){return a.toLowerCase()==b.toLowerCase()?1:0}function h(a){function b(){for(a.b=9;va(a.m)||0<="!\"#$%&()/,.;?@_`'{}|~".indexOf(a.m);)g(a);
c&&(k(a.i,"minimize")?a.b=1:k(a.i,"minimum")?a.b=1:k(a.i,"min")?a.b=1:k(a.i,"maximize")?a.b=2:k(a.i,"maximum")?a.b=2:k(a.i,"max")?a.b=2:k(a.i,"subject")?" "==a.m&&(f(a),"t"==a.m.toLowerCase()&&(a.b=3,a.i+=" ",g(a),"o"!=a.m.toLowerCase()&&d(a,"keyword `subject to' incomplete"),g(a),ua(a.m)&&d(a,"keyword `"+a.i+a.m+"...' not recognized"))):k(a.i,"such")?" "==a.m&&(f(a),"t"==a.m.toLowerCase()&&(a.b=3,a.i+=" ",g(a),"h"!=a.m.toLowerCase()&&d(a,"keyword `such that' incomplete"),g(a),"a"!=a.m.toLowerCase()&&
d(a,"keyword `such that' incomplete"),g(a),"t"!=a.m.toLowerCase()&&d(a,"keyword `such that' incomplete"),g(a),ua(a.m)&&d(a,"keyword `"+a.i+a.m+"...' not recognized"))):k(a.i,"st")?a.b=3:k(a.i,"s.t.")?a.b=3:k(a.i,"st.")?a.b=3:k(a.i,"bounds")?a.b=4:k(a.i,"bound")?a.b=4:k(a.i,"general")?a.b=5:k(a.i,"generals")?a.b=5:k(a.i,"gen")?a.b=5:k(a.i,"integer")?a.b=6:k(a.i,"integers")?a.b=6:k(a.i,"int")?a.b=6:k(a.i,"binary")?a.b=7:k(a.i,"binaries")?a.b=7:k(a.i,"bin")?a.b=7:k(a.i,"end")&&(a.b=8))}var c;a.b=-1;
a.i="";for(a.value=0;;){for(c=0;" "==a.m;)f(a);if(-1==a.m)a.b=0;else if("\n"==a.m)if(f(a),ua(a.m))c=1,b();else continue;else if("\\"==a.m){for(;"\n"!=a.m;)f(a);continue}else if(ua(a.m)||"."!=a.m&&0<="!\"#$%&()/,.;?@_`'{}|~".indexOf(a.m))b();else if(wa(a.m)||"."==a.m){for(a.b=10;wa(a.m);)g(a);if("."==a.m)for(g(a),1!=a.i.length||wa(a.m)||d(a,"invalid use of decimal point");wa(a.m);)g(a);if("e"==a.m||"E"==a.m)for(g(a),"+"!=a.m&&"-"!=a.m||g(a),wa(a.m)||d(a,"numeric constant `"+a.i+"' incomplete");wa(a.m);)g(a);
a.value=Number(a.i);a.value==Number.NaN&&d(a,"numeric constant `"+a.i+"' out of range")}else"+"==a.m?(a.b=11,g(a)):"-"==a.m?(a.b=12,g(a)):":"==a.m?(a.b=13,g(a)):"<"==a.m?(a.b=14,g(a),"="==a.m&&g(a)):">"==a.m?(a.b=15,g(a),"="==a.m&&g(a)):"="==a.m?(a.b=16,g(a),"<"==a.m?(a.b=14,g(a)):">"==a.m&&(a.b=15,g(a))):d(a,"character `"+a.m+"' not recognized");break}for(;" "==a.m;)f(a)}function l(a,b){var c=yb(a.Oa,b);if(0==c){c=Oa(a.Oa,1);Qa(a.Oa,c,b);if(a.N<c){var d=a.N,e=a.ca,f=a.j,g=a.fa,k=a.c,h=a.f;a.N+=a.N;
a.ca=new Int32Array(1+a.N);ha(a.ca,1,e,1,d);a.j=new Float64Array(1+a.N);ha(a.j,1,f,1,d);a.fa=new Int8Array(1+a.N);ja(a.fa,1,0,a.N);ha(a.fa,1,g,1,d);a.c=new Float64Array(1+a.N);ha(a.c,1,k,1,d);a.f=new Float64Array(1+a.N);ha(a.f,1,h,1,d)}a.c[c]=+t;a.f[c]=-t}return c}function n(a){for(var b,c=0,e,f;;)if(11==a.b?(e=1,h(a)):12==a.b?(e=-1,h(a)):e=1,10==a.b?(f=a.value,h(a)):f=1,9!=a.b&&d(a,"missing variable name"),b=l(a,a.i),a.fa[b]&&d(a,"multiple use of variable `"+a.i+"' not allowed"),c++,a.ca[c]=b,a.j[c]=
e*f,a.fa[b]=1,h(a),11!=a.b&&12!=a.b){for(b=1;b<=c;b++)a.fa[a.ca[b]]=0;e=0;for(b=1;b<=c;b++)0!=a.j[b]&&(e++,a.ca[e]=a.ca[b],a.j[e]=a.j[b]);break}return e}function m(a,b,c){a.c[b]!=+t&&e(a,"lower bound of variable `"+nb(a.Oa,b)+"' redefined");a.c[b]=c}function q(a,b,c){a.f[b]!=-t&&e(a,"upper bound of variable `"+nb(a.Oa,b)+"' redefined");a.f[b]=c}function r(a){var b,c,e,f;for(h(a);11==a.b||12==a.b||10==a.b||9==a.b;)11==a.b||12==a.b?(c=1,f=11==a.b?1:-1,h(a),10==a.b?(e=f*a.value,h(a)):k(a.i,"infinity")||
k(a.i,"inf")?(0<f&&d(a,"invalid use of `+inf' as lower bound"),e=-t,h(a)):d(a,"missing lower bound")):10==a.b?(c=1,e=a.value,h(a)):c=0,c&&(14!=a.b&&d(a,"missing `<', `<=', or `=<' after lower bound"),h(a)),9!=a.b&&d(a,"missing variable name"),b=l(a,a.i),c&&m(a,b,e),h(a),14==a.b?(h(a),11==a.b||12==a.b?(f=11==a.b?1:-1,h(a),10==a.b?(q(a,b,f*a.value),h(a)):k(a.i,"infinity")||k(a.i,"inf")?(0>f&&d(a,"invalid use of `-inf' as upper bound"),q(a,b,+t),h(a)):d(a,"missing upper bound")):10==a.b?(q(a,b,a.value),
h(a)):d(a,"missing upper bound")):15==a.b?(c&&d(a,"invalid bound definition"),h(a),11==a.b||12==a.b?(f=11==a.b?1:-1,h(a),10==a.b?(m(a,b,f*a.value),h(a)):k(a.i,"infinity")||0==k(a.i,"inf")?(0<f&&d(a,"invalid use of `+inf' as lower bound"),m(a,b,-t),h(a)):d(a,"missing lower bound")):10==a.b?(m(a,b,a.value),h(a)):d(a,"missing lower bound")):16==a.b?(c&&d(a,"invalid bound definition"),h(a),11==a.b||12==a.b?(f=11==a.b?1:-1,h(a),10==a.b?(m(a,b,f*a.value),q(a,b,f*a.value),h(a)):d(a,"missing fixed value")):
10==a.b?(m(a,b,a.value),q(a,b,a.value),h(a)):d(a,"missing fixed value")):k(a.i,"free")?(c&&d(a,"invalid bound definition"),m(a,b,-t),q(a,b,+t),h(a)):c||d(a,"invalid bound definition")}function p(a){var b,c;5==a.b?(c=0,h(a)):6==a.b?(c=0,h(a)):7==a.b&&(c=1,h(a));for(;9==a.b;)b=l(a,a.i),Hc(a.Oa,b,Fc),c&&(m(a,b,0),q(a,b,1)),h(a)}var u={};y("Reading problem data");null==b&&(b={});u.Oa=a;u.u=b;u.Lg=c;u.count=0;u.m="\n";u.b=0;u.i="";u.value=0;u.N=100;u.ca=new Int32Array(1+u.N);u.j=new Float64Array(1+u.N);
u.fa=new Int8Array(1+u.N);ja(u.fa,1,0,u.N);u.c=new Float64Array(1+u.N);u.f=new Float64Array(1+u.N);db(a);wb(a);h(u);1!=u.b&&2!=u.b&&d(u,"`minimize' or `maximize' keyword missing");(function(a){var b,c;1==a.b?Fa(a.Oa,za):2==a.b&&Fa(a.Oa,Ea);h(a);9==a.b&&":"==a.m?(Da(a.Oa,a.i),h(a),h(a)):Da(a.Oa,"obj");c=n(a);for(b=1;b<=c;b++)Xa(a.Oa,a.ca[b],a.j[b])})(u);3!=u.b&&d(u,"constraints section missing");(function(a){var b,c,e;for(h(a);b=La(a.Oa,1),9==a.b&&":"==a.m?(0!=xb(a.Oa,a.i)&&d(a,"constraint `"+a.i+
"' multiply defined"),Pa(a.Oa,b,a.i),h(a),h(a)):Pa(a.Oa,b,"r."+a.count),c=n(a),Ya(a.Oa,b,c,a.ca,a.j),14==a.b?(e=Ta,h(a)):15==a.b?(e=Sa,h(a)):16==a.b?(e=C,h(a)):d(a,"missing constraint sense"),11==a.b?(c=1,h(a)):12==a.b?(c=-1,h(a)):c=1,10!=a.b&&d(a,"missing right-hand side"),Ua(a.Oa,b,e,c*a.value,c*a.value),"\n"!=a.m&&-1!=a.m&&d(a,"invalid symbol(s) beyond right-hand side"),h(a),11==a.b||12==a.b||10==a.b||9==a.b;);})(u);for(4==u.b&&r(u);5==u.b||6==u.b||7==u.b;)p(u);8==u.b?h(u):0==u.b?e(u,"keyword `end' missing"):
d(u,"symbol "+u.i+" in wrong position");0!=u.b&&d(u,"extra symbol(s) detected beyond `end'");var v,H;for(b=1;b<=a.n;b++)v=u.c[b],H=u.f[b],v==+t&&(v=0),H==-t&&(H=+t),c=v==-t&&H==+t?Ka:H==+t?Sa:v==-t?Ta:v!=H?Q:C,Va(u.Oa,b,c,v,H);y(a.h+" row"+(1==a.h?"":"s")+", "+a.n+" column"+(1==a.n?"":"s")+", "+a.O+" non-zero"+(1==a.O?"":"s"));0<Jc(a)&&(b=Jc(a),c=Kc(a),1==b?0==c?y("One variable is integer"):y("One variable is binary"):(v=b+" integer variables, ",y((0==c?v+"none":1==c?v+"one":c==b?v+"all":v+c)+" of which "+
(1==c?"is":"are")+" binary")));y(u.count+" lines were read");zb(a);$a(a);return 0};
exports.glp_write_lp=function(a,b,c){function d(a){if("."==a[0]||wa(a[0]))return 1;for(var b=0;b<a.length;b++)if(!va(a[b])&&0>"!\"#$%&()/,.;?@_`'{}|~".indexOf(a[b]))return 1;return 0}function e(a){for(var b=0;b<a.length;b++)" "==a[b]?a[b]="_":"-"==a[b]?a[b]="~":"["==a[b]?a[b]="(":"]"==a[b]&&(a[b]=")")}function f(a,b){var c;c=0==b?ib(a.Oa):mb(a.Oa,b);if(null==c)return 0==b?"obj":"r_"+b;e(c);return d(c)?0==b?"obj":"r_"+b:c}function g(a,b){var c=nb(a.Oa,b);if(null==c)return"x_"+b;e(c);return d(c)?"x_"+
b:c}function k(){c("End");r++;y(r+" lines were written");return 0}var h={},l,n,m,q,r,p;y("Writing problem data");null==b&&(b={});h.Oa=a;h.u=b;r=0;c("\\* Problem: "+(null==a.name?"Unknown":a.name)+" *\\");r++;c("");r++;if(!(0<a.h&&0<a.n))return y("Warning: problem has no rows/columns"),c("\\* WARNING: PROBLEM HAS NO ROWS/COLUMNS *\\"),r++,c(""),r++,k();a.dir==za?(c("Minimize"),r++):a.dir==Ea&&(c("Maximize"),r++);b=f(h,0);p=" "+b+":";n=0;for(m=1;m<=a.n;m++)if(l=a.g[m],0!=l.B||null==l.l)n++,b=g(h,m),
q=0==l.B?" + 0 "+b:1==l.B?" + "+b:-1==l.B?" - "+b:0<l.B?" + "+l.B+" "+b:" - "+-l.B+" "+b,72<p.length+q.length&&(c(p),p="",r++),p+=q;0==n&&(q=" 0 "+g(h,1),p+=q);c(p);r++;0!=a.la&&(c("\\* constant term = "+a.la+" *\\"),r++);c("");r++;c("Subject To");r++;for(m=1;m<=a.h;m++)if(l=a.o[m],l.type!=Ka){b=f(h,m);p=" "+b+":";for(n=l.l;null!=n;n=n.G)b=g(h,n.g.H),q=1==n.j?" + "+b:-1==n.j?" - "+b:0<n.j?" + "+n.j+" "+b:" - "+-n.j+" "+b,72<p.length+q.length&&(c(p),p="",r++),p+=q;l.type==Q?(q=" - ~r_"+m,72<p.length+
q.length&&(c(p),p="",r++),p+=q):null==l.l&&(q=" 0 "+g(h,1),p+=q);if(l.type==Sa)q=" >= "+l.c;else if(l.type==Ta)q=" <= "+l.f;else if(l.type==Q||l.type==C)q=" = "+l.c;72<p.length+q.length&&(c(p),p="",r++);p+=q;c(p);r++}c("");r++;q=0;for(m=1;m<=a.h;m++)l=a.o[m],l.type==Q&&(q||(c("Bounds"),q=1,r++),c(" 0 <= ~r_"+m+" <= "+(l.f-l.c)),r++);for(m=1;m<=a.n;m++)if(l=a.g[m],l.type!=Sa||0!=l.c)q||(c("Bounds"),q=1,r++),b=g(h,m),l.type==Ka?(c(" "+b+" free"),r++):l.type==Sa?(c(" "+b+" >= "+l.c),r++):l.type==Ta?
(c(" -Inf <= "+b+" <= "+l.f),r++):l.type==Q?(c(" "+l.c+" <= "+b+" <= "+l.f),r++):l.type==C&&(c(" "+b+" = "+l.c),r++);q&&c("");r++;q=0;for(m=1;m<=a.n;m++)l=a.g[m],l.kind!=Ma&&(q||(c("Generals"),q=1,r++),c(" "+g(h,m)),r++);q&&(c(""),r++);return k()};exports.glp_read_lp_from_string=function(a,b,c){var d=0;return We(a,b,function(){return d<c.length?c[d++]:-1})};var ze=1,Be=2,Oe=3,Pe=4,Qe=5;
function He(a,b,c){var d=a.Rb,e=a.Xe,f=a.Ze,g=a.Ye,k=a.ma.yb,h=a.ma.zb,l,n,m;a.valid||x("fhv_h_solve: the factorization is not valid");if(b)for(b=d;1<=b;b--){if(a=e[b],m=c[a],0!=m)for(l=f[b],n=l+g[b]-1;l<=n;l++)c[k[l]]-=h[l]*m}else for(b=1;b<=d;b++){a=e[b];m=c[a];l=f[b];for(n=l+g[b]-1;l<=n;l++)m-=h[l]*c[k[l]];c[a]=m}}
function Ne(a,b,c,d,e,f){var g=a.h,k=a.ma,h=k.Fc,l=k.Ec,n=k.nd,m=k.wf,q=k.Dc,r=k.Cc,p=k.Qc,u=k.nb,v=k.xb,H=k.of,E=k.ke,B=k.yb,J=k.zb,R=k.xe,T=k.Ob,O=a.Xe,S=a.Ze,G=a.Ye,Z=a.ge,Y=a.fe,ba=a.qg,oa=a.rg,z=a.jc,F,D;a.valid||x("fhv_update_it: the factorization is not valid");1<=b&&b<=g||x("fhv_update_it: j = "+b+"; column number out of range");if(a.Rb==a.Yd)return a.valid=0,a=Pe;for(F=1;F<=g;F++)oa[F]=0;for(D=1;D<=c;D++)F=d[e+D],1<=F&&F<=g||x("fhv_update_it: ind["+D+"] = "+F+"; row number out of range"),
0!=oa[F]&&x("fhv_update_it: ind["+D+"] = "+F+"; duplicate row index not allowed"),0==f[D]&&x("fhv_update_it: val["+D+"] = "+f[D]+"; zero element not allowed"),oa[F]=f[D];a.ma.nb=Z;a.ma.xb=Y;Ge(a.ma,0,oa);a.ma.nb=u;a.ma.xb=v;He(a,0,oa);c=0;for(F=1;F<=g;F++)e=oa[F],0==e||Math.abs(e)<T||(c++,ba[c]=F,oa[c]=e);Y=q[b];for(Z=Y+r[b]-1;Y<=Z;Y++){F=B[Y];f=h[F];for(D=f+l[F]-1;B[f]!=b;f++);B[f]=B[D];J[f]=J[D];l[F]--}k.Sb-=r[b];r[b]=0;e=H[b];d=0;for(D=1;D<=c;D++){F=ba[D];if(l[F]+1>n[F]&&Xe(k,F,l[F]+10))return a.valid=
0,k.Ya=k.Ka+k.Ka,a=Qe;f=h[F]+l[F];B[f]=b;J[f]=oa[D];l[F]++;d<v[F]&&(d=v[F])}if(p[b]<c&&Ye(k,b,c))return a.valid=0,k.Ya=k.Ka+k.Ka,a=Qe;Y=q[b];ha(B,Y,ba,1,c);ha(J,Y,oa,1,c);r[b]=c;k.Sb+=c;if(e>d)return a.valid=0,a=ze;F=u[e];b=E[e];for(D=e;D<d;D++)u[D]=u[D+1],v[u[D]]=D,E[D]=E[D+1],H[E[D]]=D;u[d]=F;v[F]=d;E[d]=b;H[b]=d;for(b=1;b<=g;b++)R[b]=0;f=h[F];for(D=f+l[F]-1;f<=D;f++){b=B[f];R[b]=J[f];Y=q[b];for(Z=Y+r[b]-1;B[Y]!=F;Y++);B[Y]=B[Z];J[Y]=J[Z];r[b]--}k.Sb-=l[F];l[F]=0;a.Rb++;O[a.Rb]=F;G[a.Rb]=0;if(k.Pa-
k.Ja<d-e&&(Ze(k),k.Pa-k.Ja<d-e))return a.valid=k.valid=0,k.Ya=k.Ka+k.Ka,a=Qe;for(D=e;D<d;D++)if(b=u[D],c=E[D],0!=R[c]){v=R[c]/m[b];H=h[b];for(c=H+l[b]-1;H<=c;H++)R[B[H]]-=v*J[H];k.Pa--;B[k.Pa]=b;J[k.Pa]=v;G[a.Rb]++}0==G[a.Rb]?a.Rb--:(S[a.Rb]=k.Pa,a.Xf+=G[a.Rb]);m[F]=R[E[d]];c=0;for(D=d+1;D<=g;D++)if(b=E[D],e=R[b],!(Math.abs(e)<T)){if(r[b]+1>p[b]&&Ye(k,b,r[b]+10))return a.valid=0,k.Ya=k.Ka+k.Ka,a=Qe;Y=q[b]+r[b];B[Y]=F;J[Y]=e;r[b]++;c++;ba[c]=b;oa[c]=e}if(n[F]<c&&Xe(k,F,c))return a.valid=0,k.Ya=k.Ka+
k.Ka,a=Qe;f=h[F];ha(B,f,ba,1,c);ha(J,f,oa,1,c);l[F]=c;k.Sb+=c;e=0;F=u[d];f=h[F];for(D=f+l[F]-1;f<=D;f++)e<Math.abs(J[f])&&(e=Math.abs(J[f]));b=E[d];Y=q[b];for(Z=Y+r[b]-1;Y<=Z;Y++)e<Math.abs(J[Y])&&(e=Math.abs(J[Y]));return Math.abs(m[F])<z*e?(a.valid=0,a=Oe):0}
function ic(a){function b(a,b,c,d,h,l){var n,m,q,r,p,u,v,H,E,B,J,R,T,O,S=0;0<a&&0<b||x("triang: m = "+a+"; n = "+b+"; invalid dimension");n=new Int32Array(1+(a>=b?a:b));m=new Int32Array(1+a);q=new Int32Array(1+b);r=new Int32Array(1+a);p=new Int32Array(1+a);v=new Int32Array(1+b);H=new Int32Array(1+b);for(B=1;B<=b;B++)J=d(c,-B,n),v[B]=m[J],m[J]=B;for(J=u=0;J<=a;J++)for(B=m[J];0!=B;B=v[B])H[B]=u,u=B;J=0;for(B=u;0!=B;B=H[B])v[B]=J,J=B;for(E=1;E<=a;E++)m[E]=J=d(c,+E,n),r[E]=0,p[E]=q[J],0!=p[E]&&(r[p[E]]=
E),q[J]=E;for(E=1;E<=a;E++)h[E]=0;for(B=1;B<=b;B++)l[B]=0;R=1;for(T=b;R<=T;){E=q[1];if(0!=E){B=0;for(O=d(c,+E,n);1<=O;O--)J=n[O],0==l[J]&&(B=J);h[E]=l[B]=R;R++;S++}else B=u,l[B]=T,T--;0==v[B]?u=H[B]:H[v[B]]=H[B];0!=H[B]&&(v[H[B]]=v[B]);for(O=d(c,-B,n);1<=O;O--)E=n[O],J=m[E],0==r[E]?q[J]=p[E]:p[r[E]]=p[E],0!=p[E]&&(r[p[E]]=r[E]),m[E]=--J,r[E]=0,p[E]=q[J],0!=p[E]&&(r[p[E]]=E),q[J]=E}for(E=1;E<=a;E++)0==h[E]&&(h[E]=R++);for(B=1;B<=b;B++);for(r=1;r<=a;r++)m[r]=0;for(E=1;E<=a;E++)r=h[E],m[r]=E;for(J=1;J<=
b;J++)q[J]=0;for(B=1;B<=b;B++)J=l[B],q[J]=B;for(r=1;r<=S;r++)for(E=m[r],O=d(c,+E,n);1<=O;O--);return S}function c(a,b,c){var d=kb(a);lb(a);var h,l,n,m=0;if(0<b){h=+b;n=vb(a,h,c,null);for(b=1;b<=n;b++)$e(a,c[b],function(a){a!=af&&(c[++m]=d+c[b])});bf(a,h,function(a){a!=af&&(c[++m]=h)})}else n=function(b){b!=af&&(l<=d?c[++m]=l:m=gb(a,l-d,c,null))},l=-b,l<=d?bf(a,l,n):$e(a,l-d,n);return m}function d(a){var d=kb(a),g=lb(a),k,h,l,n,m,q,r,p=new Int32Array(1+d+g);y("Constructing initial basis...");if(0==
d||0==g)Hb(a);else{m=new Int32Array(1+d);h=new Int32Array(1+d+g);n=b(d,d+g,a,c,m,h);3<=cf(a)&&y("Size of triangular part = "+n+"");q=new Int32Array(1+d);r=new Int32Array(1+d+g);for(k=1;k<=d;k++)q[m[k]]=k;for(k=1;k<=d+g;k++)r[h[k]]=k;for(l=1;l<=d+g;l++)p[l]=-1;for(h=1;h<=n;h++)k=r[h],p[k]=df;for(h=n+1;h<=d;h++)k=q[h],p[k]=df;for(l=1;l<=d+g;l++)p[l]!=df&&(n=function(a,b,c){switch(a){case ef:p[l]=ff;break;case gf:p[l]=hf;break;case jf:p[l]=kf;break;case lf:p[l]=Math.abs(b)<=Math.abs(c)?hf:kf;break;case af:p[l]=
mf}},l<=d?bf(a,l,n):$e(a,l-d,n));for(l=1;l<=d+g;l++)l<=d?Fb(a,l,p[l]-df+A):Gb(a,l-d,p[l]-df+A)}}0==a.h||0==a.n?Hb(a):d(a)}
function Mc(a,b){var c,d;if(0==a.Rc)for(c=a.Dd,d=a.Ca,0==c?a.Dd=20:a.Dd=c+c,a.Ca=Array(1+a.Dd),ka(a.Ca,0,1+a.Dd),null!=d&&ha(a.Ca,1,d,1,c),d=a.Dd;d>c;d--)a.Ca[d].node=null,a.Ca[d].next=a.Rc,a.Rc=d;d=a.Rc;a.Rc=a.Ca[d].next;a.Ca[d].next=0;c=d;d={};a.Ca[c].node=d;d.p=c;d.V=b;d.level=null==b?0:b.level+1;d.count=0;d.Qa=null;d.zc=null;d.fc=null;d.ag=0;d.rc=null==b?a.F.dir==za?-t:+t:b.rc;d.bound=null==b?a.F.dir==za?-t:+t:b.bound;d.Sc=0;d.pg=0;d.wg=0;d.Yc=0;d.Qd=0;0==a.u.Ke?d.data=null:d.data={};d.na=null;
d.ga=a.$a;d.next=null;null==a.head?a.head=d:a.$a.next=d;a.$a=d;a.Od++;a.Vf++;a.Fg++;null!=b&&b.count++;return d}
function nf(a,b){var c=a.F,d,e,f,g;d=a.Ca[b].node;a.R=d;e=a.Ca[1].node;if(d!=e){for(d.na=null;null!=d;d=d.V)null!=d.V&&(d.V.na=d);for(d=e;null!=d;d=d.na){var k=c.h;e=c.n;if(null==d.na){a.Bg=k;a.Cg<k+e&&(f=k+e+100,a.Cg=f,a.mf=new Int8Array(1+f),a.kf=new Float64Array(1+f),a.nf=new Float64Array(1+f),a.lf=new Int8Array(1+f));for(f=1;f<=k;f++)g=c.o[f],a.mf[f]=g.type,a.kf[f]=g.c,a.nf[f]=g.f,a.lf[f]=g.stat;for(f=1;f<=e;f++)g=c.g[f],a.mf[c.h+f]=g.type,a.kf[c.h+f]=g.c,a.nf[c.h+f]=g.f,a.lf[c.h+f]=g.stat}for(f=
d.Qa;null!=f;f=f.next)f.k<=k?Ua(c,f.k,f.type,f.c,f.f):Va(c,f.k-k,f.type,f.c,f.f);for(f=d.zc;null!=f;f=f.next)f.k<=k?Fb(c,f.k,f.stat):Gb(c,f.k-k,f.stat);if(null!=d.fc){var h,l,k=new Int32Array(1+e);l=new Float64Array(1+e);for(e=d.fc;null!=e;e=e.next){f=La(c,1);Pa(c,f,e.name);c.o[f].level=d.level;c.o[f].origin=e.origin;c.o[f].qc=e.qc;Ua(c,f,e.type,e.c,e.f);h=0;for(g=e.l;null!=g;g=g.next)h++,k[h]=g.H,l[h]=g.j;Ya(c,f,h,k,l);Ab(c,f,e.qa);Fb(c,f,e.stat)}}}for(d=a.R;null!=d.Qa;)f=d.Qa,d.Qa=f.next;for(;null!=
d.zc;)f=d.zc,d.zc=f.next;for(;null!=d.fc;)for(e=d.fc,d.fc=e.next;null!=e.l;)g=e.l,e.l=g.next}}
function of(a){var b=a.F,c=b.h,d=b.n,e=a.R,f,g,k;if(null==e.V)for(a.Eg=c,a.qe=new Int8Array(1+c+d),a.oe=new Float64Array(1+c+d),a.re=new Float64Array(1+c+d),a.pe=new Int8Array(1+c+d),f=1;f<=c+d;f++)k=f<=c?b.o[f]:b.g[f-c],a.qe[f]=k.type,a.oe[f]=k.c,a.re[f]=k.f,a.pe[f]=k.stat;else{var h=a.Eg,l=a.Bg;for(f=1;f<=l+d;f++){var n,m,q,r,p,u;n=a.mf[f];q=a.kf[f];r=a.nf[f];g=a.lf[f];k=f<=l?b.o[f]:b.g[f-l];m=k.type;p=k.c;u=k.f;k=k.stat;if(n!=m||q!=p||r!=u)n={},n.k=f,n.type=m,n.c=p,n.f=u,n.next=e.Qa,e.Qa=n;g!=
k&&(g={},g.k=f,g.stat=k,g.next=e.zc,e.zc=g)}if(l<c)for(m=new Int32Array(1+d),p=new Float64Array(1+d),g=c;g>l;g--){k=b.o[g];u={};f=mb(b,g);null==f?u.name=null:u.name=f;u.type=k.type;u.c=k.c;u.f=k.f;u.l=null;n=vb(b,g,m,p);for(f=1;f<=n;f++)q={},q.H=m[f],q.j=p[f],q.next=u.l,u.l=q;u.qa=k.qa;u.stat=k.stat;u.next=e.fc;e.fc=u}if(c!=h){c=c-h;e=new Int32Array(1+c);for(g=1;g<=c;g++)e[g]=h+g;ab(b,c,e)}c=b.h;for(g=1;g<=c;g++)Ua(b,g,a.qe[g],a.oe[g],a.re[g]),Fb(b,g,a.pe[g]);for(h=1;h<=d;h++)Va(b,h,a.qe[c+h],a.oe[c+
h],a.re[c+h]),Gb(b,h,a.pe[c+h])}a.R=null}function pf(a,b,c){var d;b=a.Ca[b].node;null==b.ga?a.head=b.next:b.ga.next=b.next;null==b.next?a.$a=b.ga:b.next.ga=b.ga;b.ga=b.next=null;a.Od--;for(d=1;2>=d;d++)c[d]=Mc(a,b).p}
function qf(a,b){var c;c=a.Ca[b].node;null==c.ga?a.head=c.next:c.ga.next=c.next;null==c.next?a.$a=c.ga:c.next.ga=c.ga;c.ga=c.next=null;for(a.Od--;;){for(var d;null!=c.Qa;)d=c.Qa,c.Qa=d.next;for(;null!=c.zc;)d=c.zc,c.zc=d.next;for(;null!=c.fc;){d=c.fc;for(d.name=null;null!=d.l;)d.l=d.l.next;c.fc=d.next}b=c.p;a.Ca[b].node=null;a.Ca[b].next=a.Rc;a.Rc=b;c=c.V;a.Vf--;if(null!=c&&(c.count--,0==c.count))continue;break}}
function rf(a,b,c){var d=a.F,e=d.h,f,g,k,h,l=a.xg,n=a.Og,m,q;xc(d);Ib(d);a=d.g[b].w;b=Bd(d,e+b,l,n);for(f=-1;1>=f;f+=2)if(k=l,g=Fd(d,b,k,n,f,1E-9),g=0==g?0:k[g],0==g)d.dir==za?0>f?m=+t:q=+t:d.dir==Ea&&(0>f?m=-t:q=-t);else{for(k=1;k<=b&&l[k]!=g;k++);k=n[k];g<=e?(h=d.o[g].stat,g=d.o[g].M):(h=d.g[g-e].stat,g=d.g[g-e].M);if(d.dir==za){if(h==M&&0>g||h==P&&0<g||h==Ra)g=0}else d.dir==Ea&&(h==M&&0<g||h==P&&0>g||h==Ra)&&(g=0);h=(0>f?Math.floor(a):Math.ceil(a))-a;h/=k;k=g*h;0>f?m=d.ea+k:q=d.ea+k}c(m,q)}
function sf(a,b){var c=a.F,d=c.n,e,f,g,k=a.xg,h;g=0;h=c.la;e=0;for(f=1;f<=d;f++){var l=c.g[f];if(0!=l.B)if(l.type==C)h+=l.B*l.w;else{if(l.kind!=Fc||l.B!=Math.floor(l.B))return b;2147483647>=Math.abs(l.B)?k[++g]=Math.abs(l.B)|0:e=1}}if(0==e){if(0==g)return b;d=0;for(e=1;e<=g;e++){if(1==e)d=k[1];else for(f=k[e],l=void 0;0<f;)l=d%f,d=f,f=l;if(1==d)break}e=d}c.dir==za?b!=+t&&(c=(b-h)/e,c>=Math.floor(c)+.001&&(c=Math.ceil(c),b=e*c+h)):c.dir==Ea&&b!=-t&&(c=(b-h)/e,c<=Math.ceil(c)-.001&&(c=Math.floor(c),
b=e*c+h));return b}function tf(a,b){var c=a.F,d=1,e;if(c.Da==ec)switch(e=a.u.ue*(1+Math.abs(c.xa)),c.dir){case za:b>=c.xa-e&&(d=0);break;case Ea:b<=c.xa+e&&(d=0)}else switch(c.dir){case za:b==+t&&(d=0);break;case Ea:b==-t&&(d=0)}return d}function uf(a){var b=null;switch(a.F.dir){case za:for(a=a.head;null!=a;a=a.next)if(null==b||b.bound>a.bound)b=a;break;case Ea:for(a=a.head;null!=a;a=a.next)if(null==b||b.bound<a.bound)b=a}return null==b?0:b.p}
var vf=exports.glp_ios_relative_gap=function(a){var b=a.F,c;b.Da==ec?(b=b.xa,c=uf(a),0==c?a=0:(a=a.Ca[c].node.bound,a=Math.abs(b-a)/(Math.abs(b)+2.220446049250313E-16))):a=t;return a};function wf(a){var b=a.F,c=new kc;switch(a.u.s){case lc:c.s=lc;break;case Mb:c.s=Mb;break;case fc:case Xb:c.s=fc;break;case mc:c.s=Xb}c.hb=Rb;a.u.s<mc?c.cb=a.u.cb:c.cb=0;if(b.Da==ec)switch(a.F.dir){case za:c.ff=b.xa;break;case Ea:c.ef=b.xa}b=sc(b,c);a.R.ag++;return b}
function Oc(a){for(;null!=a.head;){var b=a.head;for(a.head=b.next;null!=b.l;)b.l=b.l.next}a.size=0;a.head=a.$a=null;a.$g=0;a.R=null}
function xf(a,b){function c(a,b,c,d,e){var f,g,k;g=k=0;for(f=1;f<=a;f++)if(0<b[f])if(c[f]==-t)if(0==g)g=f;else{k=-t;g=0;break}else k+=b[f]*c[f];else if(0>b[f])if(d[f]==+t)if(0==g)g=f;else{k=-t;g=0;break}else k+=b[f]*d[f];e.Ud=k;e.Qf=g;g=k=0;for(f=1;f<=a;f++)if(0<b[f])if(d[f]==+t)if(0==g)g=f;else{k=+t;g=0;break}else k+=b[f]*d[f];else if(0>b[f])if(c[f]==-t)if(0==g)g=f;else{k=+t;g=0;break}else k+=b[f]*c[f];e.Td=k;e.Pf=g}function d(a,b){b(0==a.Qf?a.Ud:-t,0==a.Pf?a.Td:+t)}function e(a,b,c,d,e,f,g,k){var h,
l,m,p;c==-t||a.Td==+t?h=-t:0==a.Pf?0<b[g]?h=c-(a.Td-b[g]*f[g]):0>b[g]&&(h=c-(a.Td-b[g]*e[g])):h=a.Pf==g?c-a.Td:-t;d==+t||a.Ud==-t?l=+t:0==a.Qf?0<b[g]?l=d-(a.Ud-b[g]*e[g]):0>b[g]&&(l=d-(a.Ud-b[g]*f[g])):l=a.Qf==g?d-a.Ud:+t;1E-6>Math.abs(b[g])?(m=-t,p=+t):0<b[g]?(m=h==-t?-t:h/b[g],p=l==+t?+t:l/b[g]):0>b[g]&&(m=l==+t?-t:l/b[g],p=h==-t?+t:h/b[g]);k(m,p)}function f(a,b,c,e,f){var g=0,k=b[c],h=e[f],l=null,m=null;d(a,function(a,b){l=a;m=b});if(k!=-t&&(a=.001*(1+Math.abs(k)),m<k-a)||h!=+t&&(a=.001*(1+Math.abs(h)),
l>h+a))return 1;k!=-t&&(a=1E-12*(1+Math.abs(k)),l>k-a&&(b[c]=-t));h!=+t&&(a=1E-12*(1+Math.abs(h)),m<h+a&&(e[f]=+t));return g}function g(a,b,c,d,f,g,k,h,l){var m=0,p,n,q=null,r=null;p=f[h];n=g[h];e(a,b,c,d,f,g,h,function(a,b){q=a;r=b});k&&(q!=-t&&(q=.001>q-Math.floor(q)?Math.floor(q):Math.ceil(q)),r!=+t&&(r=.001>Math.ceil(r)-r?Math.ceil(r):Math.floor(r)));if(p!=-t&&(a=.001*(1+Math.abs(p)),r<p-a)||n!=+t&&(a=.001*(1+Math.abs(n)),q>n+a))return 1;q!=-t&&(a=.001*(1+Math.abs(q)),p<q-a&&(p=q));r!=+t&&(a=
.001*(1+Math.abs(r)),n>r+a&&(n=r));p!=-t&&n!=+t&&(a=Math.abs(p),b=Math.abs(n),p>n-1E-10*(1+(a<=b?a:b))&&(p==f[h]?n=p:n==g[h]?p=n:a<=b?n=p:p=n));l(p,n);return m}function k(a,b,c,d,e){var f,g=0;b<d&&(a||b==-t?g++:(f=c==+t?1+Math.abs(b):1+(c-b),d-b>=.25*f&&g++));c>e&&(a||c==+t?g++:(f=b==-t?1+Math.abs(c):1+(c-b),c-e>=.25*f&&g++));return g}var h=a.F,l=h.h,n=h.n,m,q,r,p=0,u,v,H,E;u=new Float64Array(1+l);v=new Float64Array(1+l);switch(h.Da){case Aa:u[0]=-t;v[0]=+t;break;case ec:switch(h.dir){case za:u[0]=
-t;v[0]=h.xa-h.la;break;case Ea:u[0]=h.xa-h.la,v[0]=+t}}for(m=1;m<=l;m++)u[m]=qb(h,m),v[m]=rb(h,m);H=new Float64Array(1+n);E=new Float64Array(1+n);for(m=1;m<=n;m++)H[m]=tb(h,m),E[m]=ub(h,m);q=l+1;r=new Int32Array(1+q);for(m=1;m<=q;m++)r[m]=m-1;if(function(a,b,d,e,h,l,m,p){var n=a.h,q=a.n,r={},u,H,v=0,w,E,L,K,aa,N,da,ea;w=new Int32Array(1+q);E=new Int32Array(1+n+1);L=new Int32Array(1+n+1);K=new Int32Array(1+n+1);aa=new Float64Array(1+q);N=new Float64Array(1+q);da=new Float64Array(1+q);H=0;for(u=1;u<=
l;u++)n=m[u],E[++H]=n,L[n]=1;for(;0<H;)if(n=E[H--],L[n]=0,K[n]++,b[n]!=-t||d[n]!=+t){l=0;if(0==n)for(m=1;m<=q;m++)ea=a.g[m],0!=ea.B&&(l++,w[l]=m,aa[l]=ea.B);else for(m=a.o[n].l;null!=m;m=m.G)l++,w[l]=m.g.H,aa[l]=m.j;for(u=1;u<=l;u++)m=w[u],N[u]=e[m],da[u]=h[m];c(l,aa,N,da,r);if(f(r,b,n,d,n)){v=1;break}if(b[n]!=-t||d[n]!=+t)for(u=1;u<=l;u++){var I,ia=null,Wa=null;m=w[u];ea=a.g[m];I=ea.kind!=Ma;if(g(r,aa,b[n],d[n],N,da,I,u,function(a,b){ia=a;Wa=b}))return v=1;I=k(I,e[m],h[m],ia,Wa);e[m]=ia;h[m]=Wa;
if(0<I)for(m=ea.l;null!=m;m=m.L)ea=m.o.ia,K[ea]>=p||b[ea]==-t&&d[ea]==+t||0!=L[ea]||(E[++H]=ea,L[ea]=1)}}return v}(h,u,v,H,E,q,r,b))return 1;for(m=1;m<=l;m++)zc(h,m)==A&&(u[m]==-t&&v[m]==+t?Ua(h,m,Ka,0,0):v[m]==+t?Ua(h,m,Sa,u[m],0):u[m]==-t&&Ua(h,m,Ta,0,v[m]));for(m=1;m<=n;m++)Va(h,m,H[m]==-t&&E[m]==+t?Ka:E[m]==+t?Sa:H[m]==-t?Ta:H[m]!=E[m]?Q:C,H[m],E[m]);return p}
function Nc(a){function b(a,b){var c,d,e,f;d=a.F.Da==ec?String(a.F.xa):"not found yet";c=uf(a);0==c?e="tree is empty":(c=a.Ca[c].node.bound,c==-t?e="-inf":c==+t?e="+inf":e=c);a.F.dir==za?f=">=":a.F.dir==Ea&&(f="<=");c=vf(a);y("+"+a.F.da+": "+(b?">>>>>":"mip =")+" "+d+" "+f+" "+e+" "+(0==c?" 0.0%":.001>c?" < 0.1%":9.999>=c?" "+Number(100*c).toFixed(1)+"%":"")+" ("+a.Od+"; "+(a.Fg-a.Vf)+")");a.Hg=la()}function c(a,b){return tf(a,a.Ca[b].node.bound)}function d(a){var b=a.F,c,d,e=0,f,g,k,h,l,m=0;for(c=
1;c<=b.n;c++)if(k=b.g[c],a.$c[c]=0,k.kind==Fc&&k.stat==A){d=k.type;f=k.c;g=k.f;k=k.w;if(d==Sa||d==Q||d==C){h=f-a.u.Xb;l=f+a.u.Xb;if(h<=k&&k<=l)continue;if(k<f)continue}if(d==Ta||d==Q||d==C){h=g-a.u.Xb;l=g+a.u.Xb;if(h<=k&&k<=l)continue;if(k>g)continue}h=Math.floor(k+.5)-a.u.Xb;l=Math.floor(k+.5)+a.u.Xb;h<=k&&k<=l||(a.$c[c]=1,e++,h=k-Math.floor(k),l=Math.ceil(k)-k,m+=h<=l?h:l)}a.R.wg=e;a.R.Yc=m;a.u.s>=mc&&(0==e?y("There are no fractional columns"):1==e?y("There is one fractional column, integer infeasibility is "+
m+""):y("There are "+e+" fractional columns, integer infeasibility is "+m+""))}function e(a){var b=a.F,c;b.Da=ec;b.xa=b.ea;for(c=1;c<=b.h;c++){var d=b.o[c];d.Va=d.w}for(c=1;c<=b.n;c++)d=b.g[c],d.kind==Ma?d.Va=d.w:d.kind==Fc&&(d.Va=Math.floor(d.w+.5));a.lh++}function f(a,b,c){var d=a.F,e,f=d.h,g,k,h,l,m,p=Array(3),n,q,r,u,w=null,v=null,L;g=d.g[b].type;n=d.g[b].c;q=d.g[b].f;e=d.g[b].w;r=Math.floor(e);u=Math.ceil(e);switch(g){case Ka:k=Ta;h=Sa;break;case Sa:k=n==r?C:Q;h=Sa;break;case Ta:k=Ta;h=u==q?
C:Q;break;case Q:k=n==r?C:Q,h=u==q?C:Q}rf(a,b,function(a,b){w=a;v=b});g=sf(a,w);L=sf(a,v);l=!tf(a,g);m=!tf(a,L);if(l&&m)return a.u.s>=mc&&y("Both down- and up-branches are hopeless"),2;if(m)return a.u.s>=mc&&y("Up-branch is hopeless"),Va(d,b,k,n,r),a.R.rc=w,d.dir==za?a.R.bound<g&&(a.R.bound=g):d.dir==Ea&&a.R.bound>g&&(a.R.bound=g),1;if(l)return a.u.s>=mc&&y("Down-branch is hopeless"),Va(d,b,h,u,q),a.R.rc=v,d.dir==za?a.R.bound<L&&(a.R.bound=L):d.dir==Ea&&a.R.bound>L&&(a.R.bound=L),1;a.u.s>=mc&&y("Branching on column "+
b+", primal value is "+e+"");l=a.R.p;a.R.Sc=b;a.R.pg=e;of(a);pf(a,l,p);a.u.s>=mc&&y("Node "+p[1]+" begins down branch, node "+p[2]+" begins up branch ");e=a.Ca[p[1]].node;e.Qa={};e.Qa.k=f+b;e.Qa.type=k;e.Qa.c=n;e.Qa.f=r;e.Qa.next=null;e.rc=w;d.dir==za?e.bound<g&&(e.bound=g):d.dir==Ea&&e.bound>g&&(e.bound=g);e=a.Ca[p[2]].node;e.Qa={};e.Qa.k=f+b;e.Qa.type=h;e.Qa.c=u;e.Qa.f=q;e.Qa.next=null;e.rc=v;d.dir==za?e.bound<L&&(e.bound=L):d.dir==Ea&&e.bound>L&&(e.bound=L);c==yf?a.sd=0:c==zf?a.sd=p[1]:c==Af&&
(a.sd=p[2]);return 0}function g(a){var b=a.F,c,d,e=0,f,g,k,h;f=b.ea;for(c=1;c<=b.n;c++)if(h=b.g[c],h.kind==Fc)switch(g=h.c,k=h.f,d=h.stat,h=h.M,b.dir){case za:d==M?(0>h&&(h=0),f+h>=b.xa&&(Va(b,c,C,g,g),e++)):d==P&&(0<h&&(h=0),f-h>=b.xa&&(Va(b,c,C,k,k),e++));break;case Ea:d==M?(0<h&&(h=0),f+h<=b.xa&&(Va(b,c,C,g,g),e++)):d==P&&(0>h&&(h=0),f-h<=b.xa&&(Va(b,c,C,k,k),e++))}a.u.s>=mc&&0!=e&&(1==e?y("One column has been fixed by reduced cost"):y(e+" columns have been fixed by reduced costs"))}function k(a){var b,
c=0,d=null;for(b=a.wc+1;b<=a.F.h;b++)a.F.o[b].origin==Ja&&a.F.o[b].level==a.R.level&&a.F.o[b].stat==A&&(null==d&&(d=new Int32Array(1+a.F.h)),d[++c]=b);0<c&&(ab(a.F,c,d),Jb(a.F))}function h(a){var b=a.F,c,d=0,e=0,f=0,g=0,k=0;for(c=b.h;0<c;c--){var h=b.o[c];h.origin==Ja&&(h.qc==Bf?d++:h.qc==Cf?e++:h.qc==Df?f++:h.qc==Ef?g++:k++)}0<d+e+f+g+k&&(y("Cuts on level "+a.R.level+":"),0<d&&y(" gmi = "+d+";"),0<e&&y(" mir = "+e+";"),0<f&&y(" cov = "+f+";"),0<g&&y(" clq = "+g+";"),0<k&&y(" app = "+k+";"),y(""))}
function l(a){if(a.u.Bd==bb||a.u.yd==bb||a.u.vd==bb||a.u.td==bb){var b,c,d;c=a.n;1E3>c&&(c=1E3);d=0;for(b=a.wc+1;b<=a.F.h;b++)a.F.o[b].origin==Ja&&d++;if(!(d>=c)){a.u.yd==bb&&5>a.R.Qd&&Ff(a);a.u.Bd==bb&&Gf(a,a.Tf);if(a.u.vd==bb){b=a.F;c=kb(b);var e=lb(b),f,g,k,h,l;xc(b);d=new Int32Array(1+e);h=new Float64Array(1+e);l=new Float64Array(1+e);for(e=1;e<=c;e++)for(k=1;2>=k;k++){g=pb(b,e)-Ka+ef;if(1==k){if(g!=jf&&g!=lf)continue;g=vb(b,e,d,h);h[0]=Hf(b,e)}else{if(g!=gf&&g!=lf)continue;g=vb(b,e,d,h);for(f=
1;f<=g;f++)h[f]=-h[f];h[0]=-If(b,e)}a:{var m=b;f=d;for(var p=h,n=l,q=null,r=null,u=Array(5),w=void 0,v=void 0,L=void 0,K=L=void 0,aa=void 0,N=K=K=void 0,L=0,v=1;v<=g;v++)w=f[v],sb(m,w)-Ka+ef==af?p[0]-=p[v]*Jf(m,w):(L++,f[L]=f[v],p[L]=p[v]);g=L;L=0;for(v=1;v<=g;v++)w=f[v],(Ic(m,w)==Ma?Kf:Lf)==Lf&&sb(m,w)-Ka+ef==lf&&0==Jf(m,w)&&1==Mf(m,w)&&(L++,aa=f[L],K=p[L],f[L]=f[v],p[L]=p[v],f[v]=aa,p[v]=K);if(2>L)g=0;else{aa=K=0;for(v=L+1;v<=g;v++){w=f[v];if(sb(m,w)-Ka+ef!=lf){g=0;break a}0<p[v]?(aa+=p[v]*Jf(m,
w),K+=p[v]*Mf(m,w)):(aa+=p[v]*Mf(m,w),K+=p[v]*Jf(m,w))}K-=aa;N=0;for(v=L+1;v<=g;v++)w=f[v],N+=p[v]*Dc(m,w);N-=aa;0>N&&(N=0);N>K&&(N=K);p[0]-=aa;for(v=1;v<=L;v++)w=f[v],n[v]=Dc(m,w),0>n[v]&&(n[v]=0),1<n[v]&&(n[v]=1);for(v=1;v<=L;v++)0>p[v]&&(f[v]=-f[v],p[v]=-p[v],p[0]+=p[v],n[v]=1-n[v]);m=L;v=p[0];w=N;N=void 0;for(N=1;N<=m;N++);for(N=1;N<=m;N++);N=void 0;b:{for(var da=N=void 0,ea=0,I=0,ia=void 0,Wa=void 0,ob=.001,ia=.001*(1+Math.abs(v)),N=1;N<=m;N++)for(da=N+1;da<=m;da++){ea++;if(1E3<ea){N=I;break b}p[N]+
p[da]+w>v+ia&&(Wa=p[N]+p[da]-v,q=1/(Wa+K),r=2-q*Wa,Wa=n[N]+n[da]+q*w-r,ob<Wa&&(ob=Wa,u[1]=N,u[2]=da,I=1))}N=I}da=void 0;if(N)da=2;else{N=void 0;b:{for(var ea=da=N=void 0,ia=I=0,ob=Wa=void 0,Lb=.001,Wa=.001*(1+Math.abs(v)),N=1;N<=m;N++)for(da=N+1;da<=m;da++)for(ea=da+1;ea<=m;ea++){I++;if(1E3<I){N=ia;break b}p[N]+p[da]+p[ea]+w>v+Wa&&(ob=p[N]+p[da]+p[ea]-v,q=1/(ob+K),r=3-q*ob,ob=n[N]+n[da]+n[ea]+q*w-r,Lb<ob&&(Lb=ob,u[1]=N,u[2]=da,u[3]=ea,ia=1))}N=ia}da=void 0;if(N)da=3;else{N=void 0;b:{for(var I=ea=
da=N=void 0,Wa=ia=0,Lb=ob=void 0,bh=.001,ob=.001*(1+Math.abs(v)),N=1;N<=m;N++)for(da=N+1;da<=m;da++)for(ea=da+1;ea<=m;ea++)for(I=ea+1;I<=m;I++){ia++;if(1E3<ia){N=Wa;break b}p[N]+p[da]+p[ea]+p[I]+w>v+ob&&(Lb=p[N]+p[da]+p[ea]+p[I]-v,q=1/(Lb+K),r=4-q*Lb,Lb=n[N]+n[da]+n[ea]+n[I]+q*w-r,bh<Lb&&(bh=Lb,u[1]=N,u[2]=da,u[3]=ea,u[4]=I,Wa=1))}N=Wa}da=N?4:0}}K=da;if(0==K)g=0;else{f[0]=0;p[0]=r;for(w=1;w<=K;w++)u[w]=f[u[w]];for(v=1;v<=K;v++)0<u[v]?(f[v]=+u[v],p[v]=1):(f[v]=-u[v],p[v]=-1,--p[0]);for(v=L+1;v<=g;v++)K++,
f[K]=f[v],p[K]=q*p[v];p[0]+=q*aa;g=K}}}if(0!=g){f=b;p=g;n=d;q=h;r=lb(f);L=u=void 0;aa=0;0>p&&x("lpx_eval_row: len = "+p+"; invalid row length");for(L=1;L<=p;L++)u=n[L],1<=u&&u<=r||x("lpx_eval_row: j = "+u+"; column number out of range"),aa+=q[L]*Dc(f,u);f=aa-h[0];.001>f||Id(a,Df,g,d,h,Ta,h[0])}}}a.u.td==bb&&null!=a.Le&&(0==a.R.level&&50>a.R.Qd||0<a.R.level&&5>a.R.Qd)&&(c=a.Le,d=lb(a.F),b=new Int32Array(1+d),d=new Float64Array(1+d),c=Nf(a.F,c,b,d),0<c&&Id(a,Ef,c,b,d,Ta,d[0]))}}}function n(a){var b,
d,e=0;for(b=a.head;null!=b;b=d)d=b.next,c(a,b.p)||(qf(a,b.p),e++);a.u.s>=mc&&(1==e?y("One hopeless branch has been pruned"):1<e&&y(e+" hopeless branches have been pruned"))}var m,q,r,p,u=0,v=a.ic;for(q=0;;){r=null;switch(q){case 0:if(null==a.head){a.u.s>=mc&&y("Active list is empty!");p=0;r=3;break}if(null!=a.u.rb&&(a.reason=Of,a.u.rb(a,a.u.Tc),a.reason=0,a.stop)){p=Rc;r=3;break}0==a.Cd&&(1==a.Od?a.Cd=a.head.p:0!=a.sd?a.Cd=a.sd:a.Cd=Pf(a));nf(a,a.Cd);a.Cd=a.sd=0;null!=a.R.V&&a.R.V.p!=u&&(u=0);m=a.R.p;
a.u.s>=mc&&(y("------------------------------------------------------------------------"),y("Processing node "+m+" at level "+a.R.level+""));1==m&&(a.u.yd==bb&&a.u.s>=Xb&&y("Gomory's cuts enabled"),a.u.Bd==bb&&(a.u.s>=Xb&&y("MIR cuts enabled"),a.Tf=Qf(a)),a.u.vd==bb&&a.u.s>=Xb&&y("Cover cuts enabled"),a.u.td==bb&&(a.u.s>=Xb&&y("Clique cuts enabled"),a.Le=Rf(a.F)));case 1:(a.u.s>=mc||a.u.s>=fc&&a.u.dc-1<=1E3*ma(a.Hg))&&b(a,0);a.u.s>=Xb&&60<=ma(v)&&(y("Time used: "+ma(a.ic)+" secs"),v=la());if(0<a.u.ae&&
vf(a)<=a.u.ae){a.u.s>=mc&&y("Relative gap tolerance reached; search terminated ");p=Pc;r=3;break}if(2147483647>a.u.ub&&a.u.ub-1<=1E3*ma(a.ic)){a.u.s>=mc&&y("Time limit exhausted; search terminated");p=Qc;r=3;break}if(null!=a.u.rb&&(a.reason=Sf,a.u.rb(a,a.u.Tc),a.reason=0,a.stop)){p=Rc;r=3;break}if(a.u.dd!=hd)if(a.u.dd==id){if(0==a.R.level&&xf(a,100)){r=2;break}}else if(a.u.dd==jd&&xf(a,0==a.R.level?100:10)){r=2;break}if(!c(a,m)){y("*** not tested yet ***");r=2;break}a.u.s>=mc&&y("Solving LP relaxation...");
p=wf(a);if(0!=p&&p!=Tf&&p!=Uf){a.u.s>=Mb&&y("ios_driver: unable to solve current LP relaxation; glp_simplex returned "+p+"");p=Tb;r=3;break}q=a.F.ra;r=a.F.wa;if(q==ec&&r==ec)a.u.s>=mc&&y("Found optimal solution to LP relaxation");else if(r==jc){a.u.s>=Mb&&y("ios_driver: current LP relaxation has no dual feasible solution");p=Tb;r=3;break}else if(q==Ad&&r==ec){a.u.s>=mc&&y("LP relaxation has no solution better than incumbent objective value");r=2;break}else if(q==jc){a.u.s>=mc&&y("LP relaxation has no feasible solution");
r=2;break}q=a.R.rc=a.F.ea;q=sf(a,q);a.F.dir==za?a.R.bound<q&&(a.R.bound=q):a.F.dir==Ea&&a.R.bound>q&&(a.R.bound=q);a.u.s>=mc&&y("Local bound is "+q+"");if(!c(a,m)){a.u.s>=mc&&y("Current branch is hopeless and can be pruned");r=2;break}if(null!=a.u.rb){a.reason=Ga;a.u.rb(a,a.u.Tc);a.reason=0;if(a.stop){p=Rc;r=3;break}if(a.ne){a.ne=a.pf=0;r=1;break}a.pf&&(a.pf=0,Jb(a.F))}d(a);if(0==a.R.wg){a.u.s>=mc&&y("New integer feasible solution found");a.u.s>=Xb&&h(a);e(a);a.u.s>=fc&&b(a,1);if(null!=a.u.rb&&(a.reason=
Vf,a.u.rb(a,a.u.Tc),a.reason=0,a.stop)){p=Rc;r=3;break}r=2;break}a.F.Da==ec&&g(a);if(null!=a.u.rb){a.reason=Wf;a.u.rb(a,a.u.Tc);a.reason=0;if(a.stop){p=Rc;r=3;break}if(!c(a,m)){a.u.s>=mc&&y("Current branch became hopeless and can be pruned");r=2;break}}if(a.u.Ve&&(a.reason=Wf,Xf(a),a.reason=0,!c(a,m))){a.u.s>=mc&&y("Current branch became hopeless and can be pruned");r=2;break}if(null!=a.u.rb&&(a.reason=Ia,a.u.rb(a,a.u.Tc),a.reason=0,a.stop)){p=Rc;r=3;break}if(0==a.R.level||0==u)a.reason=Ia,l(a),a.reason=
0;0<a.local.size&&(a.reason=Ia,Yf(a),a.reason=0);Oc(a.local);if(a.ne){a.ne=0;a.R.Qd++;r=1;break}k(a);a.u.s>=Xb&&0==a.R.level&&h(a);null!=a.Ed&&Zf(a);if(null!=a.u.rb&&(a.reason=$f,a.u.rb(a,a.u.Tc),a.reason=0,a.stop)){p=Rc;r=3;break}0==a.Sc&&(a.Sc=ag(a,function(b){a.Ff=b}));q=a.R.p;p=f(a,a.Sc,a.Ff);a.Sc=a.Ff=0;if(0==p){u=q;r=0;break}else if(1==p){a.R.ag=a.R.Qd=0;r=1;break}else if(2==p){r=2;break}case 2:a.u.s>=mc&&y("Node "+m+" fathomed");of(a);qf(a,m);a.F.Da==ec&&n(a);r=u=0;break;case 3:return a.u.s>=
fc&&b(a,0),a.Tf=null,a.Le=null,p}if(null==r)break;q=r}}function bg(a){var b;b={};b.n=a;b.O=0;b.Na=new Int32Array(1+a);b.ca=new Int32Array(1+a);b.j=new Float64Array(1+a);return b}function cg(a,b,c){var d=a.Na[b];0==c?0!=d&&(a.Na[b]=0,d<a.O&&(a.Na[a.ca[a.O]]=d,a.ca[d]=a.ca[a.O],a.j[d]=a.j[a.O]),a.O--):(0==d&&(d=++a.O,a.Na[b]=d,a.ca[d]=b),a.j[d]=c)}function dg(a){for(var b=1;b<=a.O;b++)a.Na[a.ca[b]]=0;a.O=0}
function eg(a,b){for(var c=0,d=1;d<=a.O;d++)0==Math.abs(a.j[d])||Math.abs(a.j[d])<b?a.Na[a.ca[d]]=0:(c++,a.Na[a.ca[d]]=c,a.ca[c]=a.ca[d],a.j[c]=a.j[d]);a.O=c}function fg(a,b){dg(a);a.O=b.O;ha(a.ca,1,b.ca,1,a.O);ha(a.j,1,b.j,1,a.O);for(var c=1;c<=a.O;c++)a.Na[a.ca[c]]=c}
function Ff(a){function b(a){return a-Math.floor(a)}function c(a,c,d){var e=a.F,f=e.h,g=e.n,k=c.ca,h=c.j;c=c.fh;var l,B,J,R,T,O,S,G,Z,Y,ba;B=Bd(e,f+d,k,h);G=e.g[d].w;for(l=1;l<=f+g;l++)c[l]=0;ba=b(G);for(d=1;d<=B;d++){l=k[d];l<=f?(R=e.o[l],J=Ma):(R=e.g[l-f],J=R.kind);T=R.c;O=R.f;R=R.stat;Z=h[d];if(1E5<Math.abs(Z))return;if(!(1E-10>Math.abs(Z))){switch(R){case Ra:return;case M:S=-Z;break;case P:S=+Z;break;case Na:continue}switch(J){case Fc:if(1E-10>Math.abs(S-Math.floor(S+.5)))continue;else b(S)<=
b(G)?Y=b(S):Y=b(G)/(1-b(G))*(1-b(S));break;case Ma:Y=0<=S?+S:b(G)/(1-b(G))*-S}switch(R){case M:c[l]=+Y;ba+=Y*T;break;case P:c[l]=-Y,ba-=Y*O}}}for(d=1;d<=f;d++)if(!(1E-10>Math.abs(c[d])))for(R=e.o[d],S=R.l;null!=S;S=S.G)c[f+S.g.H]+=c[d]*S.j;B=0;for(d=1;d<=g;d++)1E-10>Math.abs(c[f+d])||(R=e.g[d],R.type==C?ba-=c[f+d]*R.c:(B++,k[B]=d,h[B]=c[f+d]));1E-12>Math.abs(ba)&&(ba=0);for(l=1;l<=B;l++)if(.001>Math.abs(h[l])||1E3<Math.abs(h[l]))return;Id(a,Bf,B,k,h,Sa,ba)}var d=a.F,e=d.h,f=d.n,g,k,h={};g=Array(1+
f);h.ca=new Int32Array(1+f);h.j=new Float64Array(1+f);h.fh=new Float64Array(1+e+f);e=0;for(k=1;k<=f;k++){var l=d.g[k];l.kind==Fc&&l.type!=C&&l.stat==A&&(l=b(l.w),.05<=l&&.95>=l&&(e++,g[e].H=k,g[e].Pb=l))}na(g,e,function(a,b){return a.Pb>b.Pb?-1:a.Pb<b.Pb?1:0});f=Hd(a);for(d=1;d<=e&&!(50<=Hd(a)-f);d++)c(a,h,g[d].H)}var gg=0,hg=5,ig=0,jg=1,kg=2;
function Qf(a){var b=a.F,c=b.h,b=b.n,d;gg&&y("ios_mir_init: warning: debug mode enabled");d={};d.h=c;d.n=b;d.Gb=new Int8Array(1+c);d.fb=new Int8Array(1+c+b);d.c=new Float64Array(1+c+b);d.ac=new Int32Array(1+c+b);d.f=new Float64Array(1+c+b);d.Bb=new Int32Array(1+c+b);d.x=new Float64Array(1+c+b);d.Af=new Int32Array(1+hg);d.ab=bg(c+b);d.ob=new Int8Array(1+c+b);d.sa=bg(c+b);d.J=bg(c+b);(function(a,b){var c=a.F,d=b.h,h;for(h=1;h<=d;h++){var l=c.o[h];b.Gb[h]=0;b.fb[h]=0;switch(l.type){case Ka:b.c[h]=-t;
b.f[h]=+t;break;case Sa:b.c[h]=l.c;b.f[h]=+t;break;case Ta:b.c[h]=-t;b.f[h]=l.f;break;case Q:b.c[h]=l.c;b.f[h]=l.f;break;case C:b.c[h]=b.f[h]=l.c}b.ac[h]=b.Bb[h]=0}})(a,d);(function(a,b){var c=a.F,d=b.h,h=b.n,l;for(l=d+1;l<=d+h;l++){var n=c.g[l-d];switch(n.kind){case Ma:b.fb[l]=0;break;case Fc:b.fb[l]=1}switch(n.type){case Ka:b.c[l]=-t;b.f[l]=+t;break;case Sa:b.c[l]=n.c;b.f[l]=+t;break;case Ta:b.c[l]=-t;b.f[l]=n.f;break;case Q:b.c[l]=n.c;b.f[l]=n.f;break;case C:b.c[l]=b.f[l]=n.c}b.ac[l]=b.Bb[l]=0}})(a,
d);(function(a,b){var c=a.F,d=b.h,h,l,n,m,q,r;for(l=1;l<=d;l++)if(0==b.c[l]&&b.f[l]==+t||b.c[l]==-t&&0==b.f[l])if(h=c.o[l].l,null!=h&&(n=d+h.g.H,q=h.j,h=h.G,null!=h&&(m=d+h.g.H,r=h.j,null==h.G))){if(b.fb[n]||!b.fb[m])if(b.fb[n]&&!b.fb[m])m=n,r=q,n=d+h.g.H,q=h.j;else continue;b.c[m]!=-t&&b.f[m]!=+t&&b.c[m]!=b.f[m]&&(0==b.f[l]&&(q=-q,r=-r),0<q?0==b.ac[n]&&(b.c[n]=-r/q,b.ac[n]=m,b.Gb[l]=1):0==b.Bb[n]&&(b.f[n]=-r/q,b.Bb[n]=m,b.Gb[l]=1))}})(a,d);(function(a,b){var c=a.F,d=b.h,h,l,n,m;for(l=1;l<=d;l++)if(b.c[l]==
-t&&b.f[l]==+t)b.Gb[l]=1;else{m=0;for(h=c.o[l].l;null!=h;h=h.G){n=d+h.g.H;if(b.c[n]==-t&&b.f[n]==+t){b.Gb[l]=1;break}if(b.fb[n]&&b.c[n]==-t||b.fb[n]&&b.f[n]==+t){b.Gb[l]=1;break}0==b.ac[n]&&0==b.Bb[n]&&b.c[n]==b.f[n]||m++}0==m&&(b.Gb[l]=1)}})(a,d);return d}
function Gf(a,b){function c(a,b,c,d,e,f,g){function k(a,b,c,d,e,f,g){var h;h=c;for(c=1;c<=a;c++)g[c]=b[c]/f,e[c]&&(g[c]=-g[c]),h-=b[c]*d[c];b=h/f;var l;if(.01>Math.abs(b-Math.floor(b+.5)))b=1;else{h=b-Math.floor(b);for(c=1;c<=a;c++)l=g[c]-Math.floor(g[c])-h,g[c]=0>=l?Math.floor(g[c]):Math.floor(g[c])+l/(1-h);q=Math.floor(b);r=1/(1-h);b=0}if(b)return 1;for(c=1;c<=a;c++)e[c]&&(g[c]=-g[c],q+=g[c]*d[c]);r/=f;return 0}var h,l,m,p,n;m=Array(4);var u,v,B,H;B=new Int8Array(1+a);H=Array(1+a);for(l=1;l<=a;l++)B[l]=
e[l]>=.5*d[l];v=n=0;for(l=1;l<=a;l++)if(h=1E-9*(1+Math.abs(d[l])),!(e[l]<h||e[l]>d[l]-h||(h=k(a,b,c,d,B,Math.abs(b[l]),g),h))){u=-q-r*f;for(h=1;h<=a;h++)u+=g[h]*e[h];v<u&&(v=u,n=Math.abs(b[l]))}.001>v&&(v=0);if(0==v)return v;m[1]=n/2;m[2]=n/4;m[3]=n/8;for(l=1;3>=l;l++)if(h=k(a,b,c,d,B,m[l],g),!h){u=-q-r*f;for(h=1;h<=a;h++)u+=g[h]*e[h];v<u&&(v=u,n=m[l])}m=0;for(l=1;l<=a;l++)h=1E-9*(1+Math.abs(d[l])),e[l]<h||e[l]>d[l]-h||(m++,H[m].H=l,H[m].tf=Math.abs(e[l]-.5*d[l]));na(H,m,function(a,b){return a.tf<
b.tf?-1:a.tf>b.tf?1:0});for(p=1;p<=m;p++)if(l=H[p].H,B[l]=!B[l],h=k(a,b,c,d,B,n,g),B[l]=!B[l],!h){u=-q-r*f;for(h=1;h<=a;h++)u+=g[h]*e[h];v<u&&(v=u,B[l]=!B[l])}h=k(a,b,c,d,B,n,g);return v}function d(a,b,c){var d=a.F;a=b.h;b.Gb[c]=2;b.He=1;b.Af[1]=c;dg(b.ab);cg(b.ab,c,1);for(c=d.o[c].l;null!=c;c=c.G)cg(b.ab,a+c.g.H,-c.j);b.zf=0}function e(a){var b,c;for(b=1;b<=a.ab.O;b++)c=a.ab.ca[b],0==a.ac[c]&&0==a.Bb[c]&&a.c[c]==a.f[c]&&(a.zf-=a.ab.j[b]*a.c[c],a.ab.j[b]=0);eg(a.ab,2.220446049250313E-16)}function f(a){var b,
c,d,e;for(b=1;b<=a.ab.O;b++)c=a.ab.ca[b],a.fb[c]||(d=a.ac[c],e=0==d?a.c[c]==-t?t:a.x[c]-a.c[c]:a.x[c]-a.c[c]*a.x[d],d=a.Bb[c],d=0==d?a.Bb[c]==+t?t:a.f[c]-a.x[c]:a.f[c]*a.x[d]-a.x[c],a.ob[c]=e<=d?jg:kg)}function g(a){var b,c,d,e;fg(a.sa,a.ab);a.tc=a.zf;for(b=a.sa.O;1<=b;b--)d=a.sa.ca[b],a.fb[d]||(a.ob[d]==jg?(e=a.ac[d],0==e?a.tc-=a.sa.j[b]*a.c[d]:(c=a.sa.Na[e],0==c&&(cg(a.sa,e,1),c=a.sa.Na[e],a.sa.j[c]=0),a.sa.j[c]+=a.sa.j[b]*a.c[d])):a.ob[d]==kg&&(e=a.Bb[d],0==e?a.tc-=a.sa.j[b]*a.f[d]:(c=a.sa.Na[e],
0==c&&(cg(a.sa,e,1),c=a.sa.Na[e],a.sa.j[c]=0),a.sa.j[c]+=a.sa.j[b]*a.f[d]),a.sa.j[b]=-a.sa.j[b]));for(b=1;b<=a.sa.O;b++)d=a.sa.ca[b],a.fb[d]&&(Math.abs(a.c[d])<=Math.abs(a.f[d])?(a.ob[d]=jg,a.tc-=a.sa.j[b]*a.c[d]):(a.ob[d]=kg,a.tc-=a.sa.j[b]*a.f[d],a.sa.j[b]=-a.sa.j[b]))}function k(a){var b=a.h,d=a.n,e,f,g,h,k,l,m;k=0;fg(a.J,a.sa);a.Nb=a.tc;eg(a.J,2.220446049250313E-16);for(e=1;e<=a.J.O;e++)f=a.J.ca[e],!a.fb[f]&&0<a.J.j[e]&&(a.J.j[e]=0);eg(a.J,0);h=0;for(e=1;e<=a.J.O;e++)f=a.J.ca[e],a.fb[f]&&(h++,
g=a.J.ca[h],a.J.Na[f]=h,a.J.Na[g]=e,a.J.ca[h]=f,a.J.ca[e]=g,f=a.J.j[h],a.J.j[h]=a.J.j[e],a.J.j[e]=f);if(0==h)return k;l=new Float64Array(1+h);g=new Float64Array(1+h);m=new Float64Array(1+h);for(e=1;e<=h;e++)f=a.J.ca[e],l[e]=a.f[f]-a.c[f],a.ob[f]==jg?g[e]=a.x[f]-a.c[f]:a.ob[f]==kg&&(g[e]=a.f[f]-a.x[f]),0>g[e]&&(g[e]=0);k=0;for(e=h+1;e<=a.J.O;e++)f=a.J.ca[e],a.ob[f]==jg?(g=a.ac[f],g=0==g?a.x[f]-a.c[f]:a.x[f]-a.c[f]*a.x[g]):a.ob[f]==kg&&(g=a.Bb[f],g=0==g?a.f[f]-a.x[f]:a.f[f]*a.x[g]-a.x[f]),0>g&&(g=0),
k-=a.J.j[e]*g;k=c(h,a.J.j,a.Nb,l,g,k,m);if(0==k)return k;for(e=1;e<=h;e++)a.J.j[e]=m[e];for(e=h+1;e<=a.J.O;e++)f=a.J.ca[e],f<=b+d&&(a.J.j[e]*=0);a.Nb=null;return k}function h(a){var b,c,d,e;for(b=1;b<=a.J.O;b++)d=a.J.ca[b],a.fb[d]&&(a.ob[d]==jg?a.Nb+=a.J.j[b]*a.c[d]:a.ob[d]==kg&&(a.Nb-=a.J.j[b]*a.f[d],a.J.j[b]=-a.J.j[b]));for(b=1;b<=a.J.O;b++)d=a.J.ca[b],a.fb[d]||(a.ob[d]==jg?(e=a.ac[d],0==e?a.Nb+=a.J.j[b]*a.c[d]:(c=a.J.Na[e],0==c&&(cg(a.J,e,1),c=a.J.Na[e],a.J.j[c]=0),a.J.j[c]-=a.J.j[b]*a.c[d])):
a.ob[d]==kg&&(e=a.Bb[d],0==e?a.Nb-=a.J.j[b]*a.f[d]:(c=a.J.Na[e],0==c&&(cg(a.J,e,1),c=a.J.Na[e],a.J.j[c]=0),a.J.j[c]+=a.J.j[b]*a.f[d]),a.J.j[b]=-a.J.j[b]))}function l(a,b){var c=a.F,d=b.h,e,f,g,h;for(f=b.J.O;1<=f;f--)if(e=b.J.ca[f],!(e>d)){for(e=c.o[e].l;null!=e;e=e.G)g=d+e.g.H,h=b.J.Na[g],0==h&&(cg(b.J,g,1),h=b.J.Na[g],b.J.j[h]=0),b.J.j[h]+=b.J.j[f]*e.j;b.J.j[f]=0}eg(b.J,0)}function n(a,b){var c=b.h,d=b.n,e,f,g=new Int32Array(1+d),h=new Float64Array(1+d);f=0;for(d=b.J.O;1<=d;d--)e=b.J.ca[d],f++,g[f]=
e-c,h[f]=b.J.j[d];Id(a,Cf,f,g,h,Ta,b.Nb)}function m(a,b){var c=a.F,d=b.h,e=b.n,f,g,h,k=0,l=0,m,p=0;for(f=1;f<=b.ab.O;f++)g=b.ab.ca[f],g<=d||b.fb[g]||.001>Math.abs(b.ab.j[f])||(h=b.ac[g],m=0==h?b.c[g]==-t?t:b.x[g]-b.c[g]:b.x[g]-b.c[g]*b.x[h],h=b.Bb[g],h=0==h?b.Bb[g]==+t?t:b.f[g]-b.x[g]:b.f[g]*b.x[h]-b.x[g],m=m<=h?m:h,!(.001>m)&&p<m&&(p=m,k=g));if(0==k)return 1;for(g=1;g<=d;g++)if(!b.Gb[g]){for(f=c.o[g].l;null!=f&&f.g.H!=k-d;f=f.G);if(null!=f&&.001<=Math.abs(f.j))break}if(g>d)return 2;b.He++;b.Af[b.He]=
g;b.Gb[g]=2;e=bg(d+e);cg(e,g,1);for(f=c.o[g].l;null!=f;f=f.G)cg(e,d+f.g.H,-f.j);f=b.ab.Na[k];c=b.ab;d=-b.ab.j[f]/e.j[e.Na[k]];for(g=1;g<=e.O;g++)f=e.ca[g],p=void 0,p=c.Na[f],p=0==p?0:c.j[p],m=e.j[g],cg(c,f,p+d*m);cg(b.ab,k,0);return l}var q,r,p=b.h,u=b.n,v,H,E;(function(a,b){var c=a.F,d=b.h,e=b.n,f;for(f=1;f<=d;f++)b.x[f]=c.o[f].w;for(f=d+1;f<=d+e;f++)b.x[f]=c.g[f-d].w})(a,b);ja(b.ob,1,ig,p+u);for(v=1;v<=p;v++)if(!b.Gb[v]){for(d(a,b,v);;){e(b);if(gg)for(H=1;H<=p+u;H++);f(b);g(b);E=k(b);0<E&&(h(b),
l(a,b),n(a,b));for(var B=1;B<=b.sa.O;B++)H=b.sa.ca[B],b.ob[H]=ig;if(!(0==E&&b.He<hg&&0==m(a,b)))break}for(H=1;H<=b.He;H++)E=b.Af[H],b.Gb[E]=0}}
function Rf(a){function b(a,b){var c;switch(pb(a,b)-Ka+ef){case ef:case jf:c=-t;break;case gf:case lf:case af:c=If(a,b)}return c}function c(a,b){var c;switch(pb(a,b)-Ka+ef){case ef:case gf:c=+t;break;case jf:case lf:case af:c=Hf(a,b)}return c}function d(a,b){var c;switch(sb(a,b)-Ka+ef){case ef:case jf:c=-t;break;case gf:case lf:case af:c=Jf(a,b)}return c}function e(a,b){var c;switch(sb(a,b)-Ka+ef){case ef:case gf:c=+t;break;case jf:case lf:case af:c=Mf(a,b)}return c}function f(a,b){return(Ic(a,b)==
Ma?Kf:Lf)==Lf&&sb(a,b)-Ka+ef==lf&&0==Jf(a,b)&&1==Mf(a,b)}function g(a,b,c,f){var g,h,k;k=0;for(h=1;h<=b;h++)if(g=c[h],0<f[h]){g=d(a,g);if(g==-t){k=-t;break}k+=f[h]*g}else if(0>f[h]){g=e(a,g);if(g==+t){k=-t;break}k+=f[h]*g}return k}function k(a,b,c,f){var g,h,k;k=0;for(h=1;h<=b;h++)if(g=c[h],0<f[h]){g=e(a,g);if(g==+t){k=+t;break}k+=f[h]*g}else if(0>f[h]){g=d(a,g);if(g==-t){k=+t;break}k+=f[h]*g}return k}function h(a,b,c,d,e,f,g,h){b!=-t&&g&&(b-=a[f]);c!=+t&&g&&(c-=a[f]);d!=-t&&(0>a[f]&&(d-=a[f]),0>
a[h]&&(d-=a[h]));e!=+t&&(0<a[f]&&(e-=a[f]),0<a[h]&&(e-=a[h]));f=0<a[h]?b==-t||e==+t?-t:(b-e)/a[h]:c==+t||d==-t?-t:(c-d)/a[h];if(.001<f)return 2;f=0<a[h]?c==+t||d==-t?+t:(c-d)/a[h]:b==-t||e==+t?+t:(b-e)/a[h];return.999>f?1:0}var l=null,n,m,q,r,p,u,v,H,E,B,J,R,T,O,S,G;y("Creating the conflict graph...");n=kb(a);m=lb(a);q=0;B=new Int32Array(1+m);J=new Int32Array(1+m);E=new Int32Array(1+m);G=new Float64Array(1+m);for(r=1;r<=n;r++)if(R=b(a,r),T=c(a,r),R!=-t||T!=+t)if(H=vb(a,r,E,G),!(500<H))for(O=g(a,H,
E,G),S=k(a,H,E,G),u=1;u<=H;u++)if(f(a,E[u]))for(v=u+1;v<=H;v++)f(a,E[v])&&(h(G,R,T,O,S,u,0,v)||h(G,R,T,O,S,u,1,v))&&(p=E[u],0==B[p]&&(q++,B[p]=q,J[q]=p),p=E[v],0==B[p]&&(q++,B[p]=q,J[q]=p));if(0==q||4E3<q)return y("The conflict graph is either empty or too big"),l;l={};l.n=m;l.Eb=q;l.zg=0;l.uf=B;l.de=J;H=q+q;H=(H*(H-1)/2+0)/1;l.Jc=Array(H);for(p=1;p<=q;p++)lg(l,+J[p],-J[p]);for(r=1;r<=n;r++)if(R=b(a,r),T=c(a,r),R!=-t||T!=+t)if(H=vb(a,r,E,G),!(500<H))for(O=g(a,H,E,G),S=k(a,H,E,G),u=1;u<=H;u++)if(f(a,
E[u]))for(v=u+1;v<=H;v++)if(f(a,E[v])){switch(h(G,R,T,O,S,u,0,v)){case 1:lg(l,-E[u],+E[v]);break;case 2:lg(l,-E[u],-E[v])}switch(h(G,R,T,O,S,u,1,v)){case 1:lg(l,+E[u],+E[v]);break;case 2:lg(l,+E[u],-E[v])}}y("The conflict graph has 2*"+l.Eb+" vertices and "+l.zg+" edges");return l}function lg(a,b,c){var d;0<b?b=a.uf[b]:(b=a.uf[-b],b+=a.Eb);0<c?c=a.uf[c]:(c=a.uf[-c],c+=a.Eb);b<c&&(d=b,b=c,c=d);d=(b-1)*(b-2)/2+(c-1);a.Jc[d/1]|=1<<0-d%1;a.zg++}
function Nf(a,b,c,d){function e(a,b,c){return b==c?0:b>c?f(a,b*(b-1)/2+c):f(a,c*(c-1)/2+b)}function f(a,b){return a.Jc[b/1]&1<<0-b%1}function g(a,b,c,d,f,h){var k,l,m,p,n,q,r,ba;ba=new Int32Array(a.n);if(0>=b){if(0==b&&(a.set[d++]=c[0],f+=h),f>a.fd)for(a.fd=f,a.Yf=d,k=0;k<d;k++)a.jh[k+1]=a.set[k]}else for(k=b;0<=k&&!(0==d&&k<b);k--){m=c[k];if(0<d&&a.sg[m]<=a.fd-f)break;a.set[d]=m;p=f+a.Ic[m+1];h-=a.Ic[m+1];if(h<=a.fd-p)break;for(n=r=q=0;r<c+k;)l=c[r],r++,e(a,l,m)&&(ba[q]=l,q++,n+=a.Ic[l+1]);n<=a.fd-
p||g(a,q-1,ba,d+1,p,n)}}var k=lb(a),h,l,n,m=0,q,r,p;n=new Int32Array(1+2*b.Eb);q=new Int32Array(1+2*b.Eb);p=new Float64Array(1+k);for(l=1;l<=b.Eb;l++)h=b.de[l],h=Dc(a,h),h=100*h+.5|0,0>h&&(h=0),100<h&&(h=100),n[l]=h,n[b.Eb+l]=100-h;n=function(a,b,c,d){var f={},h,k,l,m,p,n;f.n=a;f.Ic=b;f.Jc=c;f.fd=0;f.Yf=0;f.jh=d;f.sg=new Int32Array(f.n);f.set=new Int32Array(f.n);p=new Int32Array(f.n);n=new Int32Array(f.n);b=new Int32Array(f.n);c=la();for(a=0;a<f.n;a++)for(h=n[a]=0;h<f.n;h++)e(f,a,h)&&(n[a]+=f.Ic[h+
1]);for(a=0;a<f.n;a++)p[a]=0;for(a=f.n-1;0<=a;a--){m=l=-1;for(h=0;h<f.n;h++)!p[h]&&(f.Ic[h+1]>l||f.Ic[h+1]==l&&n[h]>m)&&(l=f.Ic[h+1],m=n[h],k=h);b[a]=k;p[k]=1;for(h=0;h<f.n;h++)!p[h]&&h!=k&&e(f,k,h)&&(n[h]-=f.Ic[k+1])}for(a=k=0;a<f.n;a++)k+=f.Ic[b[a]+1],g(f,a,b,0,0,k),f.sg[b[a]]=f.fd,4.999<=ma(c)&&(y("level = "+a+1+" ("+f.n+"); best = "+f.fd+""),c=la());for(a=1;a<=f.Yf;a++)d[a]++;return f.Yf}(2*b.Eb,n,b.Jc,q);r=0;for(l=1;l<=n;l++)h=q[l],h<=b.Eb?(h=b.de[h],h=Dc(a,h),r+=h):(h=b.de[h-b.Eb],h=Dc(a,h),
r+=1-h);if(1.01<=r){for(l=a=1;l<=n;l++)h=q[l],h<=b.Eb?(h=b.de[h],p[h]+=1):(h=b.de[h-b.Eb],--p[h],--a);for(h=1;h<=k;h++)0!=p[h]&&(m++,c[m]=h,d[m]=p[h]);c[0]=0;d[0]=a}return m}
function ag(a,b){var c;if(a.u.Lb==Zc){var d,e;for(d=1;d<=a.n&&!a.$c[d];d++);e=Dc(a.F,d);b(e-Math.floor(e)<Math.ceil(e)-e?zf:Af);c=d}else if(a.u.Lb==$c){for(d=a.n;1<=d&&!a.$c[d];d--);e=Dc(a.F,d);b(e-Math.floor(e)<Math.ceil(e)-e?zf:Af);c=d}else if(a.u.Lb==ad)c=mg(a,b);else if(a.u.Lb==bd){c=a.F;var f=c.h,g=c.n,k=a.$c,h,l,n,m,q,r,p,u,v,H,E,B,J,R;xc(c);p=new Int32Array(1+g);R=new Float64Array(1+g);l=0;J=-1;for(h=1;h<=g;h++)if(k[h]){u=Dc(c,h);r=Bd(c,f+h,p,R);for(q=-1;1>=q;q+=2){n=Fd(c,r,p,R,q,1E-9);0!=
n&&(n=p[n]);if(0==n)n=a.F.dir==za?+t:-t;else{for(m=1;m<=r&&p[m]!=n;m++);m=R[m];v=(0>q?Math.floor(u):Math.ceil(u))-u;v/=m;n>f&&Ic(c,n-f)!=Ma&&.001<Math.abs(v-Math.floor(v+.5))&&(v=0<v?Math.ceil(v):Math.floor(v));n<=f?(m=zc(c,n),n=Bc(c,n)):(m=Cc(c,n-f),n=Ec(c,n-f));switch(a.F.dir){case za:if(m==M&&0>n||m==P&&0<n||m==Ra)n=0;break;case Ea:if(m==M&&0<n||m==P&&0>n||m==Ra)n=0}n=n*v}0>q?e=n:H=n}if(J<Math.abs(e)||J<Math.abs(H))if(l=h,Math.abs(e)<Math.abs(H)?(d=zf,J=Math.abs(H)):(d=Af,J=Math.abs(e)),E=e,B=
H,J==t)break}J<1E-6*(1+.001*Math.abs(c.ea))?c=l=mg(a,b):(a.u.s>=mc&&(y("branch_drtom: column "+l+" chosen to branch on"),Math.abs(E)==t?y("branch_drtom: down-branch is infeasible"):y("branch_drtom: down-branch bound is "+(yc(c)+E)+""),Math.abs(B)==t?y("branch_drtom: up-branch is infeasible"):y("branch_drtom: up-branch bound is "+(yc(c)+B)+"")),b(d),c=l)}else a.u.Lb==cd&&(c=ng(a,b));return c}
function mg(a,b){var c,d,e,f,g,k;d=0;g=t;for(c=1;c<=a.n;c++)a.$c[c]&&(f=Dc(a.F,c),k=Math.floor(f)+.5,g>Math.abs(f-k)&&(d=c,g=Math.abs(f-k),e=f<k?zf:Af));b(e);return d}function og(a){a=a.n;var b,c={};c.wd=new Int32Array(1+a);c.Sd=new Float64Array(1+a);c.Hd=new Int32Array(1+a);c.we=new Float64Array(1+a);for(b=1;b<=a;b++)c.wd[b]=c.Hd[b]=0,c.Sd[b]=c.we[b]=0;return c}
function Zf(a){var b,c,d=a.Ed;null!=a.R.V&&(b=a.R.V.Sc,c=a.F.g[b].w-a.R.V.pg,a=a.F.ea-a.R.V.rc,a=Math.abs(a/c),0>c?(d.wd[b]++,d.Sd[b]+=a):(d.Hd[b]++,d.we[b]+=a))}
function ng(a,b){function c(a,b,c){var d,e;xc(a);d=Ba();hb(d,a,0);Va(d,b,C,c,c);b=new kc;b.s=lc;b.hb=Ub;b.pc=30;b.cb=1E3;b.hb=Ub;b=sc(d,b);0==b||b==pg?tc(d)==jc?e=t:uc(d)==ec?(a.dir==za?e=d.ea-a.ea:a.dir==Ea&&(e=a.ea-d.ea),e<1E-6*(1+.001*Math.abs(a.ea))&&(e=0)):e=0:e=0;return e}function d(a,b,d){var e=a.Ed,f;if(d==zf){if(0==e.wd[b]){d=a.F.g[b].w;a=c(a.F,b,Math.floor(d));if(a==t)return f=t;e.wd[b]=1;e.Sd[b]=a/(d-Math.floor(d))}f=e.Sd[b]/e.wd[b]}else if(d==Af){if(0==e.Hd[b]){d=a.F.g[b].w;a=c(a.F,b,
Math.ceil(d));if(a==t)return f=t;e.Hd[b]=1;e.we[b]=a/(Math.ceil(d)-d)}f=e.we[b]/e.Hd[b]}return f}function e(a){var b=a.Ed,c,d=0,e=0;for(c=1;c<=a.n;c++)Jd(a,c)&&(d++,0<b.wd[c]&&0<b.Hd[c]&&e++);y("Pseudocosts initialized for "+e+" of "+d+" variables")}var f=la(),g,k,h,l,n,m,q;null==a.Ed&&(a.Ed=og(a));k=0;q=-1;for(g=1;g<=a.n;g++)if(Jd(a,g)){l=a.F.g[g].w;n=d(a,g,zf);if(n==t)return k=g,h=zf,b(h),k;m=n*(l-Math.floor(l));n=d(a,g,Af);if(n==t)return k=g,h=Af,b(h),k;l=n*(Math.ceil(l)-l);n=m>l?m:l;q<n&&(q=n,
k=g,h=m<=l?zf:Af);a.u.s>=bb&&10<=ma(f)&&(e(a),f=la())}if(0==q)return k=mg(a,b);b(h);return k}
function Xf(a){var b=a.F,c=b.n,d=null,e=null,f=null,g,k,h,l,n,m,q,r;for(l=0;;){var p=null;switch(l){case 0:xc(b);if(0!=a.R.level||1!=a.R.ag){p=5;break}q=0;for(h=1;h<=c;h++)if(g=b.g[h],g.kind!=Ma&&g.type!=C)if(g.type==Q&&0==g.c&&1==g.f)q++;else{a.u.s>=Xb&&y("FPUMP heuristic cannot be applied due to general integer variables");p=5;break}if(null!=p)break;if(0==q){p=5;break}a.u.s>=Xb&&y("Applying FPUMP heuristic...");e=Array(1+q);ka(e,1,q);l=0;for(h=1;h<=c;h++)g=b.g[h],g.kind==Fc&&g.type==Q&&(e[++l].H=
h);d=Ba();case 1:hb(d,b,cb);if(b.Da==ec){La(d,1);n=new Int32Array(1+c);m=new Float64Array(1+c);for(h=1;h<=c;h++)n[h]=h,m[h]=b.g[h].B;Ya(d,d.h,c,n,m);n=.1*b.ea+.9*b.xa;b.dir==za?Ua(d,d.h,Ta,0,n-b.la):b.dir==Ea&&Ua(d,d.h,Sa,n-b.la,0)}m=0;for(l=1;l<=q;l++)e[l].x=-1;case 2:if(m++,a.u.s>=Xb&&y("Pass "+m+""),r=t,n=0,1<m){null==f&&(f=qg());for(l=1;l<=q;l++)h=e[l].H,g=d.g[h],p=rg(f),0>p&&(p=0),g=Math.abs(e[l].x-g.w),.5<g+p&&(e[l].x=1-e[l].x);p=4;break}case 3:for(l=k=1;l<=q;l++)g=d.g[e[l].H],g=.5>g.w?0:1,
e[l].x!=g&&(k=0,e[l].x=g);if(k){for(l=1;l<=q;l++)g=d.g[e[l].H],e[l].d=Math.abs(g.w-e[l].x);na(e,q,function(a,b){return a.d>b.d?-1:a.d<b.d?1:0});for(l=1;l<=q&&!(5<=l&&.35>e[l].d||10<=l);l++)e[l].x=1-e[l].x}case 4:if(2147483647>a.u.ub&&a.u.ub-1<=1E3*ma(a.ic)){p=5;break}d.dir=za;d.la=0;for(h=1;h<=c;h++)d.g[h].B=0;for(l=1;l<=q;l++)h=e[l].H,0==e[l].x?d.g[h].B=1:(d.g[h].B=-1,d.la+=1);k=new kc;a.u.s<=Mb?k.s=a.u.s:a.u.s<=Xb&&(k.s=fc,k.cb=1E4);l=sc(d,k);if(0!=l){a.u.s>=Mb&&y("Warning: glp_simplex returned "+
l+"");p=5;break}l=xc(d);if(l!=vc){a.u.s>=Mb&&y("Warning: glp_get_status returned "+l+"");p=5;break}a.u.s>=mc&&y("delta = "+d.ea+"");h=.3*a.u.Xb;for(l=1;l<=q&&!(g=d.g[e[l].H],h<g.w&&g.w<1-h);l++);if(l>q){g=new Float64Array(1+c);for(h=1;h<=c;h++)g[h]=d.g[h].w,b.g[h].kind==Fc&&(g[h]=Math.floor(g[h]+.5));d.la=b.la;d.dir=b.dir;for(l=1;l<=q;l++)d.g[e[l].H].c=g[e[l].H],d.g[e[l].H].f=g[e[l].H],d.g[e[l].H].type=C;for(h=1;h<=c;h++)d.g[h].B=b.g[h].B;l=sc(d,k);if(0!=l){a.u.s>=Mb&&y("Warning: glp_simplex returned "+
l+"");p=5;break}l=xc(d);if(l!=vc){a.u.s>=Mb&&y("Warning: glp_get_status returned "+l+"");p=5;break}for(h=1;h<=c;h++)b.g[h].kind!=Fc&&(g[h]=d.g[h].w);l=Kd(a,g);if(0==l){p=tf(a,a.R.bound)?1:5;break}}r==t||d.ea<=r-1E-6*(1+r)?(n=0,r=d.ea):n++;if(3>n){p=3;break}5>m&&(p=2)}if(null==p)break;l=p}}
function Yf(a){function b(a,b,c){var d,e=0,f=0,g=0;for(d=a.l;null!=d;d=d.next)c[d.H]=d.j,f+=d.j*d.j;for(d=b.l;null!=d;d=d.next)e+=c[d.H]*d.j,g+=d.j*d.j;for(d=a.l;null!=d;d=d.next)c[d.H]=0;a=Math.sqrt(f)*Math.sqrt(g);4.930380657631324E-32>a&&(a=2.220446049250313E-16);return e/a}var c,d,e,f,g,k,h,l,n,m;c=a.local;f=Array(1+c.size);l=new Int32Array(1+a.n);n=new Float64Array(1+a.n);m=new Float64Array(1+a.n);g=0;for(d=c.head;null!=d;d=d.next)g++,f[g].Pe=d,f[g].fa=0;for(g=1;g<=c.size;g++){var q=null,r=null;
d=f[g].Pe;k=h=0;for(e=d.l;null!=e;e=e.next)h++,l[h]=e.H,n[h]=e.j,k+=e.j*e.j;4.930380657631324E-32>k&&(k=2.220446049250313E-16);h=Dd(a.F,h,l,n);d=Gd(a.F,h,l,n,d.type,d.Zf,function(a,b,c,d,e,f){q=e;r=f});0==d?(f[g].Wc=Math.abs(q)/Math.sqrt(k),a.F.dir==za?(0>r&&(r=0),f[g].Cb=+r):(0<r&&(r=0),f[g].Cb=-r)):1==d?f[g].Wc=f[g].Cb=0:2==d&&(f[g].Wc=1,f[g].Cb=t);.01>f[g].Cb&&(f[g].Cb=0)}na(f,c.size,function(a,b){if(0==a.Cb&&0==b.Cb){if(a.Wc>b.Wc)return-1;if(a.Wc<b.Wc)return 1}else{if(a.Cb>b.Cb)return-1;if(a.Cb<
b.Cb)return 1}return 0});k=0==a.R.level?90:10;k>c.size&&(k=c.size);for(g=1;g<=k;g++)if(!(.01>f[g].Cb&&.01>f[g].Wc)){for(c=1;c<g&&!(f[c].fa&&.9<b(f[g].Pe,f[c].Pe,m));c++);if(!(c<g)){d=f[g].Pe;f[g].fa=1;c=La(a.F,1);null!=d.name&&Pa(a.F,c,d.name);a.F.o[c].qc=d.qc;h=0;for(e=d.l;null!=e;e=e.next)h++,l[h]=e.H,n[h]=e.j;Ya(a.F,c,h,l,n);Ua(a.F,c,d.type,d.Zf,d.Zf)}}}
function Pf(a){function b(a){var b,c;b=0;c=t;for(a=a.head;null!=a;a=a.next)c>a.V.Yc&&(b=a.p,c=a.V.Yc);return b}function c(a){var b,c,d,e,n;b=a.Ca[1].node;e=(a.F.xa-b.bound)/b.Yc;c=0;d=t;for(b=a.head;null!=b;b=b.next)n=b.V.bound+e*b.V.Yc,a.F.dir==Ea&&(n=-n),d>n&&(c=b.p,d=n);return c}function d(a){var b,c=null,d,e;switch(a.F.dir){case za:d=+t;for(b=a.head;null!=b;b=b.next)d>b.bound&&(d=b.bound);e=.001*(1+Math.abs(d));for(b=a.head;null!=b;b=b.next)b.bound<=d+e&&(null==c||c.V.Yc>b.V.Yc)&&(c=b);break;
case Ea:d=-t;for(b=a.head;null!=b;b=b.next)d<b.bound&&(d=b.bound);e=.001*(1+Math.abs(d));for(b=a.head;null!=b;b=b.next)b.bound>=d-e&&(null==c||c.rc<b.rc)&&(c=b)}return c.p}var e;a.u.lc==dd?e=a.$a.p:a.u.lc==ed?e=a.head.p:a.u.lc==fd?e=d(a):a.u.lc==gd&&(e=a.F.Da==Aa?b(a):c(a));return e}
var qa=exports.GLP_MAJOR_VERSION=4,ra=exports.GLP_MINOR_VERSION=49,za=exports.GLP_MIN=1,Ea=exports.GLP_MAX=2,Ma=exports.GLP_CV=1,Fc=exports.GLP_IV=2,Gc=exports.GLP_BV=3,Ka=exports.GLP_FR=1,Sa=exports.GLP_LO=2,Ta=exports.GLP_UP=3,Q=exports.GLP_DB=4,C=exports.GLP_FX=5,A=exports.GLP_BS=1,M=exports.GLP_NL=2,P=exports.GLP_NU=3,Ra=exports.GLP_NF=4,Na=exports.GLP_NS=5,Uc=exports.GLP_SF_GM=1,Vc=exports.GLP_SF_EQ=16,Wc=exports.GLP_SF_2N=32,Xc=exports.GLP_SF_SKIP=64,hc=exports.GLP_SF_AUTO=128,$b=exports.GLP_SOL=
1,le=exports.GLP_IPT=2,Sc=exports.GLP_MIP=3,Aa=exports.GLP_UNDEF=1,ec=exports.GLP_FEAS=2,Ad=exports.GLP_INFEAS=3,jc=exports.GLP_NOFEAS=4,vc=exports.GLP_OPT=5,wc=exports.GLP_UNBND=6,md=exports.GLP_BF_FT=1,rd=exports.GLP_BF_BG=2,sd=exports.GLP_BF_GR=3,lc=exports.GLP_MSG_OFF=0,Mb=exports.GLP_MSG_ERR=1,fc=exports.GLP_MSG_ON=2,Xb=exports.GLP_MSG_ALL=3,mc=exports.GLP_MSG_DBG=4,Pb=exports.GLP_PRIMAL=1,Rb=exports.GLP_DUALP=2,Ub=exports.GLP_DUAL=3,nc=exports.GLP_PT_STD=17,oc=exports.GLP_PT_PSE=34,pc=exports.GLP_RT_STD=
17,qc=exports.GLP_RT_HAR=34;exports.GLP_ORD_NONE=0;exports.GLP_ORD_QMD=1;exports.GLP_ORD_AMD=2;exports.GLP_ORD_SYMAMD=3;var Zc=exports.GLP_BR_FFV=1,$c=exports.GLP_BR_LFV=2,ad=exports.GLP_BR_MFV=3,bd=exports.GLP_BR_DTH=4,cd=exports.GLP_BR_PCH=5,dd=exports.GLP_BT_DFS=1,ed=exports.GLP_BT_BFS=2,fd=exports.GLP_BT_BLB=3,gd=exports.GLP_BT_BPH=4,hd=exports.GLP_PP_NONE=0,id=exports.GLP_PP_ROOT=1,jd=exports.GLP_PP_ALL=2;exports.GLP_RF_REG=0;
var Ha=exports.GLP_RF_LAZY=1,Ja=exports.GLP_RF_CUT=2,Bf=exports.GLP_RF_GMI=1,Cf=exports.GLP_RF_MIR=2,Df=exports.GLP_RF_COV=3,Ef=exports.GLP_RF_CLQ=4,bb=exports.GLP_ON=1,cb=exports.GLP_OFF=0,Ga=exports.GLP_IROWGEN=1,Vf=exports.GLP_IBINGO=2,Wf=exports.GLP_IHEUR=3,Ia=exports.GLP_ICUTGEN=4,$f=exports.GLP_IBRANCH=5,Of=exports.GLP_ISELECT=6,Sf=exports.GLP_IPREPRO=7,yf=exports.GLP_NO_BRNCH=0,zf=exports.GLP_DN_BRNCH=1,Af=exports.GLP_UP_BRNCH=2,Kb=exports.GLP_EBADB=1,Nb=exports.GLP_ESING=2,Ob=exports.GLP_ECOND=
3,rc=exports.GLP_EBOUND=4,Tb=exports.GLP_EFAIL=5,Tf=exports.GLP_EOBJLL=6,Uf=exports.GLP_EOBJUL=7,pg=exports.GLP_EITLIM=8,Qc=exports.GLP_ETMLIM=9,bc=exports.GLP_ENOPFS=10,cc=exports.GLP_ENODFS=11,Lc=exports.GLP_EROOT=12,Rc=exports.GLP_ESTOP=13,Pc=exports.GLP_EMIPGAP=14;exports.GLP_ENOFEAS=15;exports.GLP_ENOCVG=16;exports.GLP_EINSTAB=17;exports.GLP_EDATA=18;exports.GLP_ERANGE=19;exports.GLP_KKT_PE=1;exports.GLP_KKT_PB=2;exports.GLP_KKT_DE=3;exports.GLP_KKT_DB=4;exports.GLP_KKT_CS=5;
exports.GLP_MPS_DECK=1;exports.GLP_MPS_FILE=2;exports.GLP_ASN_MIN=1;exports.GLP_ASN_MAX=2;exports.GLP_ASN_MMP=3;function sg(a){var b=Math.floor(Math.log(a)/Math.log(2))+1;return Math.pow(2,.75>=a/Math.pow(2,b)?b-1:b)}function tg(a,b){var c=Number(a);if(isNaN(c))return 2;switch(c){case Number.POSITIVE_INFINITY:case Number.NEGATIVE_INFINITY:return 1;default:return b(c),0}}
function ug(a,b){var c=Number(a);if(isNaN(c))return 2;switch(c){case Number.POSITIVE_INFINITY:case Number.NEGATIVE_INFINITY:return 1;default:return 0==c%1?(b(c),0):2}}function vg(a,b,c){var d,e;if(!(1<=a&&31>=a&&1<=b&&12>=b&&1<=c&&4E3>=c))return-1;3<=b?b-=3:(b+=9,c--);d=c/100|0;c=(146097*d/4|0)+(1461*(c-100*d)/4|0);c+=(153*b+2)/5|0;c+=a+1721119;wg(c,function(a){e=a});a!=e&&(c=-1);return c}
function wg(a,b){var c,d,e;1721426<=a&&3182395>=a&&(a-=1721119,e=(4*a-1)/146097|0,c=(4*a-1)%146097/4|0,a=(4*c+3)/1461|0,c=((4*c+3)%1461+4)/4|0,d=(5*c-3)/153|0,c=(5*c-3)%153,c=(c+5)/5|0,e=100*e+a,9>=d?d+=3:(d-=9,e++),b(c,d,e))}var Ee=1;LPF_ECOND=2;LPF_ELIMIT=3;var we=0;function Le(a,b,c,d){var e=a.n,f=a.Ld,g=a.Kd,k=a.Zb;a=a.$b;var h,l,n,m;for(h=1;h<=e;h++){m=0;l=f[h];for(n=l+g[h];l<n;l++)m+=a[l]*d[k[l]];b[h+c]+=-1*m}}
function Je(a,b,c,d){var e=a.n,f=a.Nd,g=a.Md,k=a.Zb;a=a.$b;var h,l,n,m;for(h=1;h<=e;h++){m=0;l=f[h];for(n=l+g[h];l<n;l++)m+=a[l]*d[k[l]];b[h+c]+=-1*m}}if(we)var check_error=function(a,b,c,d){var e=a.h;a=a.yf;var f,g,k=0,h,l,n;for(f=1;f<=e;f++){h=0;for(g=n=1;g<=e;g++)l=b?a[e*(g-1)+f]*c[g]:a[e*(f-1)+g]*c[g],n<Math.abs(l)&&(n=Math.abs(l)),h+=l;g=Math.abs(h-d[f])/n;k<g&&(k=g)}1E-8<k&&y((b?"lpf_btran":"lpf_ftran")+": dmax = "+k+"; relative error too large")};exports.LPX_LP=100;exports.LPX_MIP=101;
var ef=exports.LPX_FR=110,gf=exports.LPX_LO=111,jf=exports.LPX_UP=112,lf=exports.LPX_DB=113,af=exports.LPX_FX=114;exports.LPX_MIN=120;exports.LPX_MAX=121;exports.LPX_P_UNDEF=132;exports.LPX_P_FEAS=133;exports.LPX_P_INFEAS=134;exports.LPX_P_NOFEAS=135;exports.LPX_D_UNDEF=136;exports.LPX_D_FEAS=137;exports.LPX_D_INFEAS=138;exports.LPX_D_NOFEAS=139;var df=exports.LPX_BS=140,hf=exports.LPX_NL=141,kf=exports.LPX_NU=142,ff=exports.LPX_NF=143,mf=exports.LPX_NS=144;exports.LPX_T_UNDEF=150;
exports.LPX_T_OPT=151;var Kf=exports.LPX_CV=160,Lf=exports.LPX_IV=161;exports.LPX_I_UNDEF=170;exports.LPX_I_OPT=171;exports.LPX_I_FEAS=172;exports.LPX_I_NOFEAS=173;exports.LPX_OPT=180;exports.LPX_FEAS=181;exports.LPX_INFEAS=182;exports.LPX_NOFEAS=183;exports.LPX_UNBND=184;exports.LPX_UNDEF=185;exports.LPX_E_OK=200;exports.LPX_E_EMPTY=201;exports.LPX_E_BADB=202;exports.LPX_E_INFEAS=203;exports.LPX_E_FAULT=204;exports.LPX_E_OBJLL=205;exports.LPX_E_OBJUL=206;exports.LPX_E_ITLIM=207;
exports.LPX_E_TMLIM=208;exports.LPX_E_NOFEAS=209;exports.LPX_E_INSTAB=210;exports.LPX_E_SING=211;exports.LPX_E_NOCONV=212;exports.LPX_E_NOPFS=213;exports.LPX_E_NODFS=214;exports.LPX_E_MIPGAP=215;var xg=exports.LPX_K_MSGLEV=300,yg=exports.LPX_K_SCALE=301,zg=exports.LPX_K_DUAL=302,Ag=exports.LPX_K_PRICE=303;exports.LPX_K_RELAX=304;exports.LPX_K_TOLBND=305;exports.LPX_K_TOLDJ=306;exports.LPX_K_TOLPIV=307;var Bg=exports.LPX_K_ROUND=308;exports.LPX_K_OBJLL=309;exports.LPX_K_OBJUL=310;
var Cg=exports.LPX_K_ITLIM=311,Dg=exports.LPX_K_ITCNT=312;exports.LPX_K_TMLIM=313;var Eg=exports.LPX_K_OUTFRQ=314;exports.LPX_K_OUTDLY=315;var Fg=exports.LPX_K_BRANCH=316,Gg=exports.LPX_K_BTRACK=317;exports.LPX_K_TOLINT=318;exports.LPX_K_TOLOBJ=319;
var Hg=exports.LPX_K_MPSINFO=320,Ig=exports.LPX_K_MPSOBJ=321,Jg=exports.LPX_K_MPSORIG=322,Kg=exports.LPX_K_MPSWIDE=323,Lg=exports.LPX_K_MPSFREE=324,Mg=exports.LPX_K_MPSSKIP=325,Ng=exports.LPX_K_LPTORIG=326,Og=exports.LPX_K_PRESOL=327,Pg=exports.LPX_K_BINARIZE=328,Qg=exports.LPX_K_USECUTS=329,Rg=exports.LPX_K_BFTYPE=330;exports.LPX_K_MIPGAP=331;exports.LPX_C_COVER=1;exports.LPX_C_CLIQUE=2;exports.LPX_C_GOMORY=4;exports.LPX_C_MIR=8;exports.LPX_C_ALL=255;
function If(a,b){var c=qb(a,b);c==-t&&(c=0);return c}function Hf(a,b){var c=rb(a,b);c==+t&&(c=0);return c}function bf(a,b,c){c(pb(a,b)-Ka+ef,If(a,b),Hf(a,b))}function Jf(a,b){var c=tb(a,b);c==-t&&(c=0);return c}function Mf(a,b){var c=ub(a,b);c==+t&&(c=0);return c}function $e(a,b,c){c(sb(a,b)-Ka+ef,Jf(a,b),Mf(a,b))}
function cf(a){var b=xg,c;null==a.ie&&(a.ie={},c=a.ie,c.s=3,c.scale=1,c.M=0,c.hh=1,c.th=.07,c.Ib=1E-7,c.vb=1E-7,c.ve=1E-9,c.round=0,c.ef=-t,c.ff=+t,c.pc=-1,c.ub=-1,c.dc=200,c.cb=0,c.Jg=2,c.Kg=3,c.Xb=1E-5,c.ue=1E-7,c.Sg=1,c.Tg=2,c.Ug=0,c.Wg=1,c.Rg=0,c.Vg=0,c.Qg=0,c.gh=0,c.qd=0,c.rh=0,c.ae=0);c=a.ie;var d=0;switch(b){case xg:d=c.s;break;case yg:d=c.scale;break;case zg:d=c.M;break;case Ag:d=c.hh;break;case Bg:d=c.round;break;case Cg:d=c.pc;break;case Dg:d=a.da;break;case Eg:d=c.dc;break;case Fg:d=c.Jg;
break;case Gg:d=c.Kg;break;case Hg:d=c.Sg;break;case Ig:d=c.Tg;break;case Jg:d=c.Ug;break;case Kg:d=c.Wg;break;case Lg:d=c.Rg;break;case Mg:d=c.Vg;break;case Ng:d=c.Qg;break;case Og:d=c.gh;break;case Pg:d=c.qd;break;case Qg:d=c.rh;break;case Rg:b={};eb(a,b);switch(b.type){case md:d=1;break;case rd:d=2;break;case sd:d=3}break;default:x("lpx_get_int_parm: parm = "+b+"; invalid parameter")}return d}var ye=1,Ae=2;
function ve(){var a={};a.N=a.n=0;a.valid=0;a.Nf=a.We=null;a.Wd=a.Vd=null;a.Fc=a.Ec=a.nd=null;a.wf=null;a.Dc=a.Cc=a.Qc=null;a.nb=a.xb=null;a.of=a.ke=null;a.Ka=0;a.Ja=a.Pa=0;a.yb=null;a.zb=null;a.kd=a.Vb=0;a.Gd=a.ld=null;a.vf=null;a.rf=a.$f=a.sf=null;a.Me=a.Oe=a.Ne=null;a.fa=null;a.xe=null;a.Ya=0;a.ec=.1;a.xc=4;a.hc=1;a.Ob=1E-15;a.sc=1E10;a.Yg=a.Wf=a.Sb=0;a.yg=a.pd=0;a.ta=0;return a}
function Ze(a){var b=a.n,c=a.Fc,d=a.Ec,e=a.nd,f=a.Dc,g=a.Cc,k=a.Qc,h=a.yb,l=a.zb,n=a.ld,m=1,q,r;for(r=a.kd;0!=r;r=n[r])if(r<=b){q=r;if(c[q]!=m)break;e[q]=d[q];m+=e[q]}else{q=r-b;if(f[q]!=m)break;k[q]=g[q];m+=k[q]}for(;0!=r;r=n[r])r<=b?(q=r,ha(h,m,h,c[q],d[q]),ha(l,m,l,c[q],d[q]),c[q]=m,e[q]=d[q],m+=e[q]):(q=r-b,ha(h,m,h,f[q],g[q]),ha(l,m,l,f[q],g[q]),f[q]=m,k[q]=g[q],m+=k[q]);a.Ja=m}
function Xe(a,b,c){var d=a.n,e=a.Fc,f=a.Ec,g=a.nd,k=a.Qc,h=a.yb,l=a.zb,n=a.Gd,m=a.ld,q=0,r;if(a.Pa-a.Ja<c&&(Ze(a),a.Pa-a.Ja<c))return 1;r=g[b];ha(h,a.Ja,h,e[b],f[b]);ha(l,a.Ja,l,e[b],f[b]);e[b]=a.Ja;g[b]=c;a.Ja+=c;0==n[b]?a.kd=m[b]:(c=n[b],c<=d?g[c]+=r:k[c-d]+=r,m[n[b]]=m[b]);0==m[b]?a.Vb=n[b]:n[m[b]]=n[b];n[b]=a.Vb;m[b]=0;0==n[b]?a.kd=b:m[n[b]]=b;a.Vb=b;return q}
function Ye(a,b,c){var d=a.n,e=a.nd,f=a.Dc,g=a.Cc,k=a.Qc,h=a.yb,l=a.zb,n=a.Gd,m=a.ld,q=0,r;if(a.Pa-a.Ja<c&&(Ze(a),a.Pa-a.Ja<c))return 1;r=k[b];ha(h,a.Ja,h,f[b],g[b]);ha(l,a.Ja,l,f[b],g[b]);f[b]=a.Ja;k[b]=c;a.Ja+=c;b=d+b;0==n[b]?a.kd=m[b]:(c=n[b],c<=d?e[c]+=r:k[c-d]+=r,m[n[b]]=m[b]);0==m[b]?a.Vb=n[b]:n[m[b]]=n[b];n[b]=a.Vb;m[b]=0;0==n[b]?a.kd=b:m[n[b]]=b;a.Vb=b;return q}
function Sg(a,b){var c=a.N;a.n=b;b<=c||(a.N=c=b+100,a.Nf=new Int32Array(1+c),a.We=new Int32Array(1+c),a.Wd=new Int32Array(1+c),a.Vd=new Int32Array(1+c),a.Fc=new Int32Array(1+c),a.Ec=new Int32Array(1+c),a.nd=new Int32Array(1+c),a.wf=new Float64Array(1+c),a.Dc=new Int32Array(1+c),a.Cc=new Int32Array(1+c),a.Qc=new Int32Array(1+c),a.nb=new Int32Array(1+c),a.xb=new Int32Array(1+c),a.of=new Int32Array(1+c),a.ke=new Int32Array(1+c),a.Gd=new Int32Array(1+c+c),a.ld=new Int32Array(1+c+c),a.vf=new Float64Array(1+
c),a.rf=new Int32Array(1+c),a.$f=new Int32Array(1+c),a.sf=new Int32Array(1+c),a.Me=new Int32Array(1+c),a.Oe=new Int32Array(1+c),a.Ne=new Int32Array(1+c),a.fa=new Int32Array(1+c),a.xe=new Float64Array(1+c))}
function Tg(a,b,c){var d=a.n,e=a.Wd,f=a.Vd,g=a.Fc,k=a.Ec,h=a.nd,l=a.Dc,n=a.Cc,m=a.Qc,q=a.nb,r=a.xb,p=a.of,u=a.ke,v=a.yb,H=a.zb,E=a.Gd,B=a.ld,J=a.vf,R=a.rf,T=a.$f,O=a.sf,S=a.Me,G=a.Oe,Z=a.Ne,Y=a.fa,ba=a.xe,oa=0,z,F,D,w,ca,L,K;w=1;ca=a.Ka+1;for(F=1;F<=d;F++)e[F]=ca,f[F]=0;for(z=1;z<=d;z++)k[z]=h[z]=0,Y[z]=0;f=e=0;for(F=1;F<=d;F++){var aa=q,N=ba;D=b(c,F,aa,N);0<=D&&D<=d||x("luf_factorize: j = "+F+"; len = "+D+"; invalid column length");if(ca-w<D)return oa=1;l[F]=w;n[F]=m[F]=D;e+=D;for(L=1;L<=D;L++)z=
aa[L],K=N[L],1<=z&&z<=d||x("luf_factorize: i = "+z+"; j = "+F+"; invalid row index"),Y[z]&&x("luf_factorize: i = "+z+"; j = "+F+"; duplicate element not allowed"),0==K&&x("luf_factorize: i = "+z+"; j = "+F+"; zero element not allowed"),v[w]=z,H[w]=K,w++,0>K&&(K=-K),f<K&&(f=K),Y[z]=1,h[z]++;for(L=1;L<=D;L++)Y[aa[L]]=0}for(z=1;z<=d;z++){D=h[z];if(ca-w<D)return oa=1;g[z]=w;w+=D}for(F=1;F<=d;F++)for(z=l[F],b=z+n[F]-1,h=z;h<=b;h++)z=v[h],K=H[h],c=g[z]+k[z],v[c]=F,H[c]=K,k[z]++;for(h=1;h<=d;h++)q[h]=r[h]=
p[h]=u[h]=h;a.Ja=w;a.Pa=ca;a.kd=d+1;a.Vb=d;for(z=1;z<=d;z++)E[z]=z-1,B[z]=z+1;E[1]=d+d;B[d]=0;for(F=1;F<=d;F++)E[d+F]=d+F-1,B[d+F]=d+F+1;E[d+1]=0;for(h=B[d+d]=1;h<=d;h++)Y[h]=0,ba[h]=0;a.Yg=e;a.Wf=0;a.Sb=e;a.yg=f;a.pd=f;a.ta=-1;for(z=1;z<=d;z++)J[z]=-1;for(D=0;D<=d;D++)R[D]=0;for(z=1;z<=d;z++)D=k[z],T[z]=0,O[z]=R[D],0!=O[z]&&(T[O[z]]=z),R[D]=z;for(D=0;D<=d;D++)S[D]=0;for(F=1;F<=d;F++)D=n[F],G[F]=0,Z[F]=S[D],0!=Z[F]&&(G[Z[F]]=F),S[D]=F;return oa}
function Ug(a,b){function c(){b(B,J);return 0==B}var d=a.n,e=a.Fc,f=a.Ec,g=a.Dc,k=a.Cc,h=a.yb,l=a.zb,n=a.vf,m=a.rf,q=a.sf,r=a.Me,p=a.Oe,u=a.Ne,v=a.ec,H=a.xc,E=a.hc,B,J,R,T,O,S,G,Z,Y,ba,oa,z,F,D,w,ca,L,K;B=J=0;ca=t;oa=0;Z=r[1];if(0!=Z)return B=h[g[Z]],J=Z,c();T=m[1];if(0!=T)return B=T,J=h[e[T]],c();for(R=2;R<=d;R++){for(Z=r[R];0!=Z;Z=z){T=g[Z];Y=T+k[Z]-1;z=u[Z];F=D=0;w=2147483647;for(ba=T;ba<=Y;ba++)if(T=h[ba],O=e[T],S=O+f[T]-1,!(f[T]>=w)){L=n[T];if(0>L){for(G=O;G<=S;G++)K=l[G],0>K&&(K=-K),L<K&&(L=
K);n[T]=L}for(G=e[T];h[G]!=Z;G++);K=l[G];0>K&&(K=-K);if(!(K<v*L)&&(F=T,D=Z,w=f[T],w<=R))return B=F,J=D,c()}if(0!=F){if(oa++,Z=(w-1)*(R-1),Z<ca&&(B=F,J=D,ca=Z),oa==H)return c()}else E&&(0==p[Z]?r[R]=u[Z]:u[p[Z]]=u[Z],0!=u[Z]&&(p[u[Z]]=p[Z]),p[Z]=u[Z]=Z)}for(T=m[R];0!=T;T=q[T]){O=e[T];S=O+f[T]-1;L=n[T];if(0>L){for(G=O;G<=S;G++)K=l[G],0>K&&(K=-K),L<K&&(L=K);n[T]=L}F=D=0;w=2147483647;for(G=O;G<=S;G++)if(Z=h[G],!(k[Z]>=w)&&(K=l[G],0>K&&(K=-K),!(K<v*L)&&(F=T,D=Z,w=k[Z],w<=R)))return B=F,J=D,c();if(0!=F&&
(oa++,Z=(R-1)*(w-1),Z<ca&&(B=F,J=D,ca=Z),oa==H))return c()}}return c()}
function Vg(a,b,c){var d=a.n,e=a.Wd,f=a.Vd,g=a.Fc,k=a.Ec,h=a.nd,l=a.wf,n=a.Dc,m=a.Cc,q=a.Qc,r=a.yb,p=a.zb,u=a.Gd,v=a.ld,H=a.vf,E=a.rf,B=a.$f,J=a.sf,R=a.Me,T=a.Oe,O=a.Ne,S=a.fa,G=a.xe,Z=a.Ob,Y=a.We,ba=0,oa,z,F,D,w,ca,L,K,aa,N,da,ea;0==B[b]?E[k[b]]=J[b]:J[B[b]]=J[b];0!=J[b]&&(B[J[b]]=B[b]);0==T[c]?R[m[c]]=O[c]:O[T[c]]=O[c];0!=O[c]&&(T[O[c]]=T[c]);K=g[b];aa=K+k[b]-1;for(z=K;r[z]!=c;z++);ea=l[b]=p[z];r[z]=r[aa];p[z]=p[aa];k[b]--;aa--;l=n[c];N=l+m[c]-1;for(F=l;r[F]!=b;F++);r[F]=r[N];m[c]--;N--;for(z=K;z<=
aa;z++){D=r[z];S[D]=1;G[D]=p[z];0==T[D]?R[m[D]]=O[D]:O[T[D]]=O[D];0!=O[D]&&(T[O[D]]=T[D]);ca=n[D];for(L=ca+m[D]-1;r[ca]!=b;ca++);r[ca]=r[L];m[D]--}for(;l<=N;){F=r[l];0==B[F]?E[k[F]]=J[F]:J[B[F]]=J[F];0!=J[F]&&(B[J[F]]=B[F]);D=g[F];oa=D+k[F]-1;for(w=D;r[w]!=c;w++);da=p[w]/ea;r[w]=r[oa];p[w]=p[oa];k[F]--;oa--;r[l]=r[N];m[c]--;N--;z=k[b];for(w=D;w<=oa;w++)if(D=r[w],S[D])if(ca=p[w]-=da*G[D],0>ca&&(ca=-ca),S[D]=0,z--,0==ca||ca<Z){r[w]=r[oa];p[w]=p[oa];k[F]--;w--;oa--;ca=n[D];for(L=ca+m[D]-1;r[ca]!=F;ca++);
r[ca]=r[L];m[D]--}else a.pd<ca&&(a.pd=ca);if(k[F]+z>h[F]){if(Xe(a,F,k[F]+z))return ba=1;K=g[b];aa=K+k[b]-1;l=n[c];N=l+m[c]-1}oa=0;for(z=K;z<=aa;z++)D=r[z],S[D]?(ca=L=-da*G[D],0>ca&&(ca=-ca),0==ca||ca<Z||(w=g[F]+k[F],r[w]=D,p[w]=L,k[F]++,Y[++oa]=D,a.pd<ca&&(a.pd=ca))):S[D]=1;for(w=1;w<=oa;w++){D=Y[w];if(m[D]+1>q[D]){if(Ye(a,D,m[D]+10))return ba=1;K=g[b];aa=K+k[b]-1;l=n[c];N=l+m[c]-1}ca=n[D]+m[D];r[ca]=F;m[D]++}B[F]=0;J[F]=E[k[F]];0!=J[F]&&(B[J[F]]=F);E[k[F]]=F;H[F]=-1;if(1>a.Pa-a.Ja){Ze(a);if(1>a.Pa-
a.Ja)return ba=1;K=g[b];aa=K+k[b]-1;l=n[c];N=l+m[c]-1}a.Pa--;r[a.Pa]=F;p[a.Pa]=da;f[b]++}q[c]=0;w=d+c;0==u[w]?a.kd=v[w]:v[u[w]]=v[w];0==v[w]?a.Vb=u[w]:u[v[w]]=u[w];e[b]=a.Pa;for(z=K;z<=aa;z++)if(D=r[z],S[D]=0,G[D]=0,1==m[D]||T[D]!=D||O[D]!=D)T[D]=0,O[D]=R[m[D]],0!=O[D]&&(T[O[D]]=D),R[m[D]]=D;return ba}
function Wg(a){var b=a.n,c=a.Fc,d=a.Ec,e=a.Dc,f=a.Cc,g=a.Qc,k=a.yb,h=a.zb,l=a.Gd,n=a.ld,m,q,r,p;p=0;for(m=1;m<=b;m++){q=c[m];for(r=q+d[m]-1;q<=r;q++)g[k[q]]++;p+=d[m]}a.Sb=p;if(a.Pa-a.Ja<p)return 1;for(p=1;p<=b;p++)e[p]=a.Ja,a.Ja+=g[p];for(m=1;m<=b;m++)for(q=c[m],r=q+d[m]-1;q<=r;q++)p=k[q],g=e[p]+f[p],k[g]=m,h[g]=h[q],f[p]++;for(c=b+1;c<=b+b;c++)l[c]=c-1,n[c]=c+1;l[b+1]=a.Vb;n[a.Vb]=b+1;n[b+b]=0;a.Vb=b+b;return 0}
function Xg(a){var b=a.n,c=a.Nf,d=a.We,e=a.Wd,f=a.Vd,g=a.yb,k=a.zb,h,l,n,m;for(h=1;h<=b;h++)d[h]=0;h=0;for(l=1;l<=b;l++){n=e[l];for(m=n+f[l]-1;n<=m;n++)d[g[n]]++;h+=f[l]}a.Wf=h;if(a.Pa-a.Ja<h)return 1;for(h=1;h<=b;h++)c[h]=a.Pa,a.Pa-=d[h];for(l=1;l<=b;l++)for(n=e[l],m=n+f[l]-1;n<=m;n++)h=g[n],a=--c[h],g[a]=l,k[a]=k[n];return 0}
function xe(a,b,c,d){function e(){0<a.Ya&&(a.Ka=a.Ya,a.yb=new Int32Array(1+a.Ka),a.zb=new Float64Array(1+a.Ka),a.Ya=0);if(Tg(a,c,d))return a.Ya=a.Ka+a.Ka,!0;for(q=1;q<=b;q++){if(Ug(a,function(a,b){r=a;p=b}))return a.ta=q-1,v=ye,!1;n=g[r];m=k[p];u=f[q];f[n]=u;g[u]=n;f[q]=r;g[r]=q;u=h[q];h[m]=u;k[u]=m;h[q]=p;k[p]=q;if(Vg(a,r,p))return a.Ya=a.Ka+a.Ka,!0;if(a.pd>l*a.yg)return a.ta=q-1,v=Ae,!1}Ze(a);return Wg(a)||Xg(a)?(a.Ya=a.Ka+a.Ka,!0):!1}var f,g,k,h,l=a.sc,n,m,q,r,p,u,v=null;1>b&&x("luf_factorize: n = "+
b+"; invalid parameter");1E8<b&&x("luf_factorize: n = "+b+"; matrix too big");a.valid=0;Sg(a,b);f=a.nb;g=a.xb;k=a.of;h=a.ke;0==a.Ka&&0==a.Ya&&(a.Ya=5*(b+10));for(;e(););if(null!=v)return v;a.valid=1;a.ta=b;v=0;u=3*(b+a.Sb)+2*a.Wf;if(a.Ka<u)for(a.Ya=a.Ka;a.Ya<u;)q=a.Ya,a.Ya=q+q;return v}
function Ge(a,b,c){var d=a.n,e=a.Nf,f=a.We,g=a.Wd,k=a.Vd,h=a.nb,l=a.yb,n=a.zb,m;a.valid||x("luf_f_solve: LU-factorization is not valid");if(b)for(;1<=d;d--){if(m=h[d],a=c[m],0!=a)for(b=e[m],m=b+f[m]-1;b<=m;b++)c[l[b]]-=n[b]*a}else for(e=1;e<=d;e++)if(m=h[e],a=c[m],0!=a)for(b=g[m],m=b+k[m]-1;b<=m;b++)c[l[b]]-=n[b]*a}
function Ie(a,b,c){var d=a.n,e=a.Fc,f=a.Ec,g=a.wf,k=a.Dc,h=a.Cc,l=a.nb,n=a.ke,m=a.yb,q=a.zb,r=a.xe,p,u,v;a.valid||x("luf_v_solve: LU-factorization is not valid");for(a=1;a<=d;a++)r[a]=c[a],c[a]=0;if(b)for(a=1;a<=d;a++){if(p=l[a],u=n[a],b=r[u],0!=b)for(c[p]=b/=g[p],v=e[p],p=v+f[p]-1;v<=p;v++)r[m[v]]-=q[v]*b}else for(a=d;1<=a;a--)if(p=l[a],u=n[a],b=r[p],0!=b)for(c[u]=b/=g[p],v=k[u],p=v+h[u]-1;v<=p;v++)r[m[v]]-=q[v]*b}var Wd=401,Xd=402,Yd=403,Zd=404,$d=405,je=412,ke=413,ee=422,fe=423;
function Yg(){return{index:{},W:{},set:{},A:{},K:{},a:{},loop:{}}}function Zg(a){var b;201==a.b?b="_|_":205==a.b?b="'...'":b=a.i;a.context[a.mc++]=" ";60==a.mc&&(a.mc=0);for(var c=0;c<b.length;c++)a.context[a.mc++]=b[c],60==a.mc&&(a.mc=0)}
function $g(a){var b;-1!=a.m&&("\n"==a.m&&(a.gb++,a.Uc=0),b=a.af(),0>b&&(b=-1),a.Uc++,-1==b?"\n"==a.m?a.gb--:ah(a,"final NL missing before end of file"):"\n"!=b&&(0<=" \t\n\v\f\r".indexOf(b)?b=" ":ta(b)&&(Zg(a),U(a,"control character "+b+" not allowed"))),a.m=b)}function ch(a){a.i+=a.m;a.Db++;$g(a)}
function V(a){function b(){Zg(a);U(a,"keyword s.t. incomplete")}function c(){Zg(a);U(a,"cannot convert numeric literal "+a.i+" to floating-point number")}function d(){if("e"==a.m||"E"==a.m)for(ch(a),"+"!=a.m&&"-"!=a.m||ch(a),wa(a.m)||(Zg(a),U(a,"numeric literal "+a.i+" incomplete"));wa(a.m);)ch(a);if(ua(a.m)||"_"==a.m)Zg(a),U(a,"symbol "+a.i+a.m+"... should be enclosed in quotes")}a.Df=a.b;a.Cf=a.Db;a.Bf=a.i;a.Ef=a.value;if(a.Se)a.Se=0,a.b=a.If,a.Db=a.Hf,a.i=a.Gf,a.value=a.Jf;else{for(;;){a.b=0;a.Db=
0;a.i="";for(a.value=0;" "==a.m||"\n"==a.m;)$g(a);if(-1==a.m)a.b=201;else if("#"==a.m){for(;"\n"!=a.m&&-1!=a.m;)$g(a);continue}else if(a.oc||!ua(a.m)&&"_"!=a.m)if(!a.oc&&wa(a.m)){for(a.b=204;wa(a.m);)ch(a);var e=!1;if("."==a.m)if(ch(a),"."==a.m)a.Db--,a.i=a.i.substr(0,a.i.length-1),a.Re=1,e=!0;else for(;wa(a.m);)ch(a);e||d();tg(a.i,function(b){a.value=b})&&c()}else if("'"==a.m||'"'==a.m){var e=function(){for(;;){if("\n"==a.m&&!g||-1==a.m)Zg(a),U(a,"unexpected end of line; string literal incomplete");
if(a.m==f)if($g(a),a.m==f){if(g)if($g(a),a.m==f){$g(a);break}else a.i+='""',a.Db+=2}else if(g)a.i+='"',a.Db++;else break;ch(a)}},f=a.m,g=!1;a.b=205;$g(a);a.m==f?($g(a),a.m==f&&(g=!0,$g(a),e())):e()}else if(a.oc||"+"!=a.m)if(a.oc||"-"!=a.m)if("*"==a.m)a.b=227,ch(a),"*"==a.m&&(a.b=229,ch(a));else if("/"==a.m){if(a.b=228,ch(a),"*"==a.m){for($g(a);;)if(-1==a.m)U(a,"unexpected end of file; comment sequence incomplete");else if("*"==a.m){if($g(a),"/"==a.m)break}else $g(a);$g(a);continue}}else if("^"==a.m)a.b=
229,ch(a);else if("<"==a.m)a.b=230,ch(a),"="==a.m?(a.b=231,ch(a)):">"==a.m?(a.b=235,ch(a)):"-"==a.m&&(a.b=252,ch(a));else if("="==a.m)a.b=232,ch(a),"="==a.m&&ch(a);else if(">"==a.m)a.b=234,ch(a),"="==a.m?(a.b=233,ch(a)):">"==a.m&&(a.b=250,ch(a));else if("!"==a.m)a.b=218,ch(a),"="==a.m&&(a.b=235,ch(a));else if("&"==a.m)a.b=236,ch(a),"&"==a.m&&(a.b=206,ch(a));else if("|"==a.m)a.b=237,ch(a),"|"==a.m&&(a.b=219,ch(a));else if(a.oc||"."!=a.m)if(","==a.m)a.b=239,ch(a);else if(":"==a.m)a.b=240,ch(a),"="==
a.m&&(a.b=242,ch(a));else if(";"==a.m)a.b=241,ch(a);else if("("==a.m)a.b=244,ch(a);else if(")"==a.m)a.b=245,ch(a);else if("["==a.m)a.b=246,ch(a);else if("]"==a.m)a.b=247,ch(a);else if("{"==a.m)a.b=248,ch(a);else if("}"==a.m)a.b=249,ch(a);else if("~"==a.m)a.b=251,ch(a);else if(va(a.m)||0<="+-._".indexOf(a.m)){for(a.b=203;va(a.m)||0<="+-._".indexOf(a.m);)ch(a);switch(tg(a.i,function(b){a.value=b})){case 0:a.b=204;break;case 1:c()}}else Zg(a),U(a,"character "+a.m+" not allowed");else if(a.b=238,ch(a),
a.Re)a.b=243,a.Db=2,a.i="..",a.Re=0;else if("."==a.m)a.b=243,ch(a);else{if(wa(a.m)){a.b=204;for(ch(a);wa(a.m);)ch(a);d();tg(a.i,function(b){a.value=b})&&c()}}else a.b=226,ch(a);else a.b=225,ch(a);else{for(a.b=202;va(a.m)||"_"==a.m;)ch(a);"and"==a.i?a.b=206:"by"==a.i?a.b=207:"cross"==a.i?a.b=208:"diff"==a.i?a.b=209:"div"==a.i?a.b=210:"else"==a.i?a.b=211:"if"==a.i?a.b=212:"in"==a.i?a.b=213:"Infinity"==a.i?a.b=214:"inter"==a.i?a.b=215:"less"==a.i?a.b=216:"mod"==a.i?a.b=217:"not"==a.i?a.b=218:"or"==a.i?
a.b=219:"s"==a.i&&"."==a.m?(a.b=220,ch(a),"t"!=a.m&&b(),ch(a),"."!=a.m&&b(),ch(a)):"symdiff"==a.i?a.b=221:"then"==a.i?a.b=222:"union"==a.i?a.b=223:"within"==a.i&&(a.b=224)}break}Zg(a);a.Lf=0}}function dh(a){a.Se=1;a.If=a.b;a.Hf=a.Db;a.Gf=a.i;a.Jf=a.value;a.b=a.Df;a.Db=a.Cf;a.i=a.Bf;a.value=a.Ef}function eh(a,b){return 202==a.b&&a.i==b}
function fh(a){return 206==a.b&&"a"==a.i[0]||207==a.b||208==a.b||209==a.b||210==a.b||211==a.b||212==a.b||213==a.b||215==a.b||216==a.b||217==a.b||218==a.b&&"n"==a.i[0]||219==a.b&&"o"==a.i[0]||221==a.b||222==a.b||223==a.b||224==a.b}
function gh(a,b,c,d){var e={};e.Wa=a;e.X=0;e.a=Yg();e.value={};switch(a){case 301:e.a.U=b.U;break;case 302:e.a.P=b.P;break;case 303:e.a.index.Ca=b.index.Ca;e.a.index.next=b.index.next;break;case 304:case 305:for(a=b.W.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.W.W=b.W.W;e.a.W.list=b.W.list;break;case 306:for(a=b.set.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.set.set=b.set.set;e.a.set.list=b.set.list;break;case 307:for(a=b.A.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.A.A=b.A.A;e.a.A.list=b.A.list;
e.a.A.Ac=b.A.Ac;break;case 308:for(a=b.K.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.K.K=b.K.K;e.a.K.list=b.K.list;e.a.K.Ac=b.K.Ac;break;case 309:case 310:for(a=b.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.list=b.list;break;case 311:e.a.slice=b.slice;break;case 312:case 313:case 314:case 315:e.X=1;break;case 316:case 317:case 318:case 319:case 320:case 321:case 322:case 323:case 324:case 325:case 326:case 327:case 328:case 329:case 330:case 331:case 332:case 333:case 334:case 335:case 336:case 337:b.a.x.V=
e;e.X|=b.a.x.X;e.a.a.x=b.a.x;break;case 338:case 339:case 340:case 341:case 342:case 343:case 344:case 345:case 346:case 347:case 348:case 349:349==a&&(e.X=1);case 350:350==a&&(e.X=1);case 351:case 352:case 353:case 354:case 355:case 356:case 357:case 358:case 359:case 360:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 368:case 369:case 370:case 371:b.a.x.V=e;e.X|=b.a.x.X;b.a.y.V=e;e.X|=b.a.y.X;e.a.a.x=b.a.x;e.a.a.y=b.a.y;break;case 372:case 373:case 374:b.a.x.V=e;e.X|=b.a.x.X;
b.a.y.V=e;e.X|=b.a.y.X;null!=b.a.z&&(b.a.z.V=e,e.X|=b.a.z.X);e.a.a.x=b.a.x;e.a.a.y=b.a.y;e.a.a.z=b.a.z;break;case 375:case 376:for(a=b.list;null!=a;a=a.next)a.x.V=e,e.X|=a.x.X;e.a.list=b.list;break;case 377:case 378:case 379:case 380:case 381:case 382:case 383:case 384:a=b.loop.domain;null!=a.code&&(a.code.V=e,e.X|=a.code.X);for(a=a.list;null!=a;a=a.next)a.code.V=e,e.X|=a.code.X;null!=b.loop.x&&(b.loop.x.V=e,e.X|=b.loop.x.X);e.a.loop.domain=b.loop.domain;e.a.loop.x=b.loop.x}e.type=c;e.v=d;e.V=null;
e.valid=0;e.value={};return e}function W(a,b,c,d){var e=Yg();e.a.x=b;return gh(a,e,c,d)}function hh(a,b,c,d,e){var f=Yg();f.a.x=b;f.a.y=c;return gh(a,f,d,e)}function ih(a,b,c,d,e,f){var g=Yg();g.a.x=b;g.a.y=c;g.a.z=d;return gh(a,g,e,f)}function jh(a,b){var c={},d;c.x=b;c.next=null;if(null==a)a=c;else{for(d=a;null!=d.next;d=d.next);d.next=c}return a}function kh(a){var b;for(b=0;null!=a;a=a.next)b++;return b}
function lh(a){var b,c,d,e,f,g,k,h,l,n=Yg(),m=a.$[a.i];null==m&&U(a,a.i+" not defined");switch(m.type){case 111:b=m.link;h=b.name;l=0;break;case 122:c=m.link;h=c.name;l=c.v;0==c.aa&&(c.aa=1);break;case 120:d=m.link;h=d.name;l=d.v;break;case 127:e=m.link;h=e.name;l=e.v;break;case 103:f=m.link,h=f.name,l=f.v}V(a);if(246==a.b){0==l&&U(a,h+" cannot be subscripted");V(a);for(var q=null;;)if(g=mh(a),118==g.type&&(g=W(317,g,124,0)),124!=g.type&&U(a,"subscript expression has invalid type"),q=jh(q,g),239==
a.b)V(a);else if(247==a.b)break;else U(a,"syntax error in subscript list");g=q;l!=kh(g)&&U(a,h+" must have "+l+" subscript"+(1==l?"":"s")+" rather than "+kh(g));V(a)}else 0!=l&&U(a,h+" must be subscripted"),g=null;l=a.Qb||127!=m.type?4:0;238==a.b&&(V(a),202!=a.b&&U(a,"invalid use of period"),127!=m.type&&103!=m.type&&U(a,h+" cannot have a suffix"),"lb"==a.i?l=1:"ub"==a.i?l=2:"status"==a.i?l=3:"val"==a.i?l=4:"dual"==a.i?l=5:U(a,"suffix ."+a.i+" invalid"),V(a));switch(m.type){case 111:n.index.Ca=b;
n.index.next=b.list;k=gh(303,n,124,0);b.list=k;break;case 122:n.set.set=c;n.set.list=g;k=gh(306,n,106,c.aa);break;case 120:n.W.W=d;n.W.list=g;k=124==d.type?gh(305,n,124,0):gh(304,n,118,0);break;case 127:a.Qb||3!=l&&4!=l&&5!=l||U(a,"invalid reference to status, primal value, or dual value of variable "+e.name+" above solve statement");n.A.A=e;n.A.list=g;n.A.Ac=l;k=gh(307,n,0==l?110:118,0);break;case 103:a.Qb||3!=l&&4!=l&&5!=l||U(a,"invalid reference to status, primal value, or dual value of "+(103==
f.type?"constraint":"objective")+" "+f.name+" above solve statement"),n.K.K=f,n.K.list=g,n.K.Ac=l,k=gh(308,n,118,0)}return k}function nh(a,b){var c=mh(a);124==c.type&&(c=W(316,c,118,0));118!=c.type&&U(a,"argument for "+b+" has invalid type");return c}function oh(a,b){var c=mh(a);118==c.type&&(c=W(317,c,124,0));124!=c.type&&U(a,"argument for "+b+" has invalid type");return c}
function ph(a,b,c){var d={};d.name=b;d.code=c;d.value=null;d.list=null;d.next=null;if(null==a.list)a.list=d;else{for(a=a.list;null!=a.next;a=a.next);a.next=d}}
function qh(a){var b,c=Yg(),d=Array(21);ka(d,0,21);var e,f,g,k=0;e=a.Lf;V(a);for(g=1;;g++){var h=function(){b=rh(a);if(239==a.b||1<g)118==b.type&&(b=W(317,b,124,0)),124!=b.type&&U(a,"component expression has invalid type");d[g].name=null;d[g].code=b};20<g&&U(a,"too many components within parentheses");if(202==a.b)if(V(a),f=a.b,dh(a),!e||239!=f&&245!=f||null!=a.$[a.i])h();else{for(f=1;f<g;f++)null!=d[f].name&&d[f].name==a.i&&U(a,"duplicate dummy index "+a.i+" not allowed");d[g].name=a.i;d[g].code=
null;V(a);k=1;1==g&&245==a.b&&U(a,d[g].name+" not defined")}else h();if(239==a.b)V(a);else if(245==a.b)break;else U(a,"right parenthesis missing where expected")}if(1!=g||k)if(k){c.slice={};for(f=1;f<=g;f++)ph(c.slice,d[f].name,d[f].code);b=gh(311,c,126,g)}else{c.list=null;for(f=1;f<=g;f++)c.list=jh(c.list,d[f].code);b=gh(309,c,126,g)}else b=d[1].code;V(a);k&&213!=a.b&&U(a,"keyword in missing where expected");e&&213==a.b&&!k&&(1==g?U(a,"syntax error in indexing expression"):U(a,"0-ary slice not allowed"));
return b}
function sh(a){var b,c,d,e;V(a);249==a.b&&U(a,"empty indexing expression not allowed");for(b={};;){e=c=null;202==a.b?(V(a),d=a.b,dh(a),213==d&&null==a.$[a.i]&&(c={},d=a.i,ph(c,d,null),V(a),V(a))):244==a.b&&(a.Lf=1,e=th(a),311==e.Wa&&(c=e.a.slice,e=null,V(a)));null==e&&(e=th(a));if(106!=e.type){null!=c&&U(a,"domain expression has invalid type");d=a;var f=Yg(),g=void 0;f.list=null;for(g=1;;g++){118==e.type&&(e=W(317,e,124,0));124==e.type&&(e=W(319,e,126,1));126!=e.type&&U(d,"member expression has invalid type");null!=
f.list&&f.list.x.v!=e.v&&U(d,"member "+(g-1)+" has "+f.list.x.v+" component"+(1==f.list.x.v?"":"s")+" while member "+g+" has "+e.v+" component"+(1==e.v?"":"s"));f.list=jh(f.list,e);if(239==d.b)V(d);else if(249==d.b)break;else U(d,"syntax error in literal set");e=mh(d)}e=gh(310,f,106,f.list.x.v)}if(null==c)for(c={},d=1;d<=e.v;d++)ph(c,null,null);f=0;for(d=c.list;null!=d;d=d.next)f++;f!=e.v&&U(a,f+" "+(1==f?"index":"indices")+" specified for set of dimension "+e.v);c.code=e;e=b;d=c;f=void 0;if(null==
e.list)e.list=d;else{for(f=e.list;null!=f.next;f=f.next);f.next=d}for(d=c.list;null!=d;d=d.next)null!=d.name&&(a.$[d.name]={type:111,link:d});if(239==a.b)V(a);else if(240==a.b||249==a.b)break;else U(a,"syntax error in indexing expression")}240==a.b&&(V(a),e=rh(a),124==e.type&&(e=W(316,e,118,0)),118==e.type&&(e=W(318,e,114,0)),114!=e.type&&U(a,"expression following colon has invalid type"),b.code=e,249!=a.b&&U(a,"syntax error in indexing expression"));V(a);return b}
function uh(a,b){var c,d;for(c=b.list;null!=c;c=c.next)for(d=c.list;null!=d;d=d.next)null!=d.name&&delete a.$[d.name]}function vh(a){var b,c;for(b=a.a.loop.domain.list;null!=b;b=b.next)for(c=b.list;null!=c;c=c.next)null!=c.code&&(c.code.V=a)}
function wh(a){function b(){U(a,"integrand following "+f+"{...} has invalid type")}var c,d=Yg(),e,f;"sum"==a.i?e=377:"prod"==a.i?e=378:"min"==a.i?e=379:"max"==a.i?e=380:"forall"==a.i?e=381:"exists"==a.i?e=382:"setof"==a.i?e=383:U(a,"operator "+a.i+" unknown");f=a.i;V(a);d.loop.domain=sh(a);switch(e){case 377:case 378:case 379:case 380:d.loop.x=xh(a);124==d.loop.x.type&&(d.loop.x=W(316,d.loop.x,118,0));118==d.loop.x.type||377==e&&110==d.loop.x.type||b();c=gh(e,d,d.loop.x.type,0);break;case 381:case 382:d.loop.x=
yh(a);124==d.loop.x.type&&(d.loop.x=W(316,d.loop.x,118,0));118==d.loop.x.type&&(d.loop.x=W(318,d.loop.x,114,0));114!=d.loop.x.type&&b();c=gh(e,d,114,0);break;case 383:d.loop.x=mh(a),118==d.loop.x.type&&(d.loop.x=W(317,d.loop.x,124,0)),124==d.loop.x.type&&(d.loop.x=W(319,d.loop.x,126,1)),126!=d.loop.x.type&&b(),c=gh(e,d,106,d.loop.x.v)}uh(a,d.loop.domain);vh(c);return c}function zh(a){var b=0;for(a=a.list;null!=a;a=a.next)for(var c=a.list;null!=c;c=c.next)null==c.code&&b++;return b}
function Ah(a,b){U(a,"operand preceding "+b+" has invalid type")}function Bh(a,b){U(a,"operand following "+b+" has invalid type")}function Ch(a,b,c,d){U(a,"operands preceding and following "+b+" have different dimensions "+c+" and "+d+", respectively")}
function Dh(a){var b,c;if(204==a.b)b=Yg(),b.U=a.value,b=gh(301,b,118,0),V(a),c=b;else if(214==a.b)b=Yg(),b.U=t,c=gh(301,b,118,0),V(a);else if(205==a.b)b=Yg(),b.P=a.i,b=gh(302,b,124,0),V(a),c=b;else if(202==a.b)switch(V(a),c=a.b,dh(a),c){case 246:c=lh(a);break;case 244:c=Yg();var d;"abs"==a.i?b=324:"ceil"==a.i?b=325:"floor"==a.i?b=326:"exp"==a.i?b=327:"log"==a.i?b=328:"log10"==a.i?b=329:"sqrt"==a.i?b=330:"sin"==a.i?b=331:"cos"==a.i?b=332:"atan"==a.i?b=333:"min"==a.i?b=375:"max"==a.i?b=376:"round"==
a.i?b=334:"trunc"==a.i?b=335:"Irand224"==a.i?b=312:"Uniform01"==a.i?b=313:"Uniform"==a.i?b=349:"Normal01"==a.i?b=314:"Normal"==a.i?b=350:"card"==a.i?b=336:"length"==a.i?b=337:"substr"==a.i?b=369:"str2time"==a.i?b=370:"time2str"==a.i?b=371:"gmtime"==a.i?b=315:U(a,"function "+a.i+" unknown");d=a.i;V(a);V(a);if(375==b||376==b)for(c.list=null;;)if(c.list=jh(c.list,nh(a,d)),239==a.b)V(a);else if(245==a.b)break;else U(a,"syntax error in argument list for "+d);else if(312==b||313==b||314==b||315==b)245!=
a.b&&U(a,d+" needs no arguments");else if(349==b||350==b)c.a.x=nh(a,d),239!=a.b&&(245==a.b?U(a,d+" needs two arguments"):U(a,"syntax error in argument for "+d)),V(a),c.a.y=nh(a,d),239==a.b?U(a,d+" needs two argument"):245!=a.b&&U(a,"syntax error in argument for "+d);else if(333==b||334==b||335==b){c.a.x=nh(a,d);if(239==a.b){switch(b){case 333:b=346;break;case 334:b=347;break;case 335:b=348}V(a);c.a.y=nh(a,d)}239==a.b?U(a,d+" needs one or two arguments"):245!=a.b&&U(a,"syntax error in argument for "+
d)}else if(369==b)c.a.x=oh(a,d),239!=a.b&&(245==a.b?U(a,d+" needs two or three arguments"):U(a,"syntax error in argument for "+d)),V(a),c.a.y=nh(a,d),239==a.b&&(b=374,V(a),c.a.z=nh(a,d)),239==a.b?U(a,d+" needs two or three arguments"):245!=a.b&&U(a,"syntax error in argument for "+d);else if(370==b)c.a.x=oh(a,d),239!=a.b&&(245==a.b?U(a,d+" needs two arguments"):U(a,"syntax error in argument for "+d)),V(a),c.a.y=oh(a,d),239==a.b?U(a,d+" needs two argument"):245!=a.b&&U(a,"syntax error in argument for "+
d);else if(371==b)c.a.x=nh(a,d),239!=a.b&&(245==a.b?U(a,d+" needs two arguments"):U(a,"syntax error in argument for "+d)),V(a),c.a.y=oh(a,d),239==a.b?U(a,d+" needs two argument"):245!=a.b&&U(a,"syntax error in argument for "+d);else{var e=c.a,f;336==b?(f=th(a),106!=f.type&&U(a,"argument for "+d+" has invalid type")):f=337==b?oh(a,d):nh(a,d);e.x=f;239==a.b?U(a,d+" needs one argument"):245!=a.b&&U(a,"syntax error in argument for "+d)}b=369==b||374==b||371==b?gh(b,c,124,0):gh(b,c,118,0);V(a);c=b;break;
case 248:c=wh(a);break;default:c=lh(a)}else if(244==a.b)c=qh(a);else if(248==a.b)b=Yg(),V(a),249==a.b?(b.list=null,b=gh(310,b,106,1),V(a)):(dh(a),b.loop.domain=sh(a),b.loop.x=null,uh(a,b.loop.domain),b=gh(384,b,106,zh(b.loop.domain)),vh(b)),c=b;else if(212==a.b){V(a);b=rh(a);124==b.type&&(b=W(316,b,118,0));118==b.type&&(b=W(318,b,114,0));114!=b.type&&U(a,"expression following if has invalid type");222!=a.b&&U(a,"keyword then missing where expected");V(a);c=th(a);118!=c.type&&124!=c.type&&106!=c.type&&
110!=c.type&&U(a,"expression following then has invalid type");if(211!=a.b)106==c.type&&U(a,"keyword else missing where expected"),d=null;else{V(a);d=th(a);118!=d.type&&124!=d.type&&106!=d.type&&110!=d.type&&U(a,"expression following else has invalid type");if(110==c.type||110==d.type)124==c.type&&(c=W(316,c,118,0)),118==c.type&&(c=W(320,c,110,0)),124==d.type&&(d=W(316,d,118,0)),118==d.type&&(d=W(320,d,110,0));if(124==c.type||124==d.type)118==c.type&&(c=W(317,c,124,0)),118==d.type&&(d=W(317,d,124,
0));c.type!=d.type&&U(a,"expressions following then and else have incompatible types");c.v!=d.v&&U(a,"expressions following then and else have different dimensions "+c.v+" and "+d.v+", respectively")}c=ih(373,b,c,d,c.type,c.v)}else fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"syntax error in expression");229==a.b&&(d=a.i,124==c.type&&(c=W(316,c,118,0)),118!=c.type&&Ah(a,d),V(a),b=225==a.b||226==a.b?Eh(a):Dh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,d),c=hh(345,c,b,118,0));return c}
function Eh(a){var b;225==a.b?(V(a),b=Dh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&110!=b.type&&Bh(a,"+"),b=W(321,b,b.type,0)):226==a.b?(V(a),b=Dh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&110!=b.type&&Bh(a,"-"),b=W(322,b,b.type,0)):b=Dh(a);return b}
function xh(a){for(var b,c=Eh(a);;)if(227==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&110!=c.type&&Ah(a,"*"),V(a),b=Eh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&110!=b.type&&Bh(a,"*"),110==c.type&&110==b.type&&U(a,"multiplication of linear forms not allowed"),c=118==c.type&&118==b.type?hh(341,c,b,118,0):hh(341,c,b,110,0);else if(228==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&110!=c.type&&Ah(a,"/"),V(a),b=Eh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,"/"),c=118==c.type?
hh(342,c,b,118,0):hh(342,c,b,110,0);else if(210==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&Ah(a,"div"),V(a),b=Eh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,"div"),c=hh(343,c,b,118,0);else if(217==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&Ah(a,"mod"),V(a),b=Eh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,"mod"),c=hh(344,c,b,118,0);else break;return c}
function Fh(a){for(var b,c=xh(a);;)if(225==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&110!=c.type&&Ah(a,"+"),V(a),b=xh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&110!=b.type&&Bh(a,"+"),118==c.type&&110==b.type&&(c=W(320,c,110,0)),110==c.type&&118==b.type&&(b=W(320,b,110,0)),c=hh(338,c,b,c.type,0);else if(226==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&110!=c.type&&Ah(a,"-"),V(a),b=xh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&110!=b.type&&Bh(a,"-"),118==c.type&&110==b.type&&
(c=W(320,c,110,0)),110==c.type&&118==b.type&&(b=W(320,b,110,0)),c=hh(339,c,b,c.type,0);else if(216==a.b)124==c.type&&(c=W(316,c,118,0)),118!=c.type&&Ah(a,"less"),V(a),b=xh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,"less"),c=hh(340,c,b,118,0);else break;return c}function mh(a){for(var b,c=Fh(a);;)if(236==a.b)118==c.type&&(c=W(317,c,124,0)),124!=c.type&&Ah(a,"&"),V(a),b=Fh(a),118==b.type&&(b=W(317,b,124,0)),124!=b.type&&Bh(a,"&"),c=hh(351,c,b,124,0);else break;return c}
function Gh(a){var b,c,d=mh(a);243==a.b&&(124==d.type&&(d=W(316,d,118,0)),118!=d.type&&Ah(a,".."),V(a),b=mh(a),124==b.type&&(b=W(316,b,118,0)),118!=b.type&&Bh(a,".."),207==a.b?(V(a),c=mh(a),124==c.type&&(c=W(316,c,118,0)),118!=c.type&&Bh(a,"by")):c=null,d=ih(372,d,b,c,106,1));return d}function Hh(a){for(var b,c=Gh(a);;)if(208==a.b)106!=c.type&&Ah(a,"cross"),V(a),b=Gh(a),106!=b.type&&Bh(a,"cross"),c=hh(364,c,b,106,c.v+b.v);else break;return c}
function Ih(a){for(var b,c=Hh(a);;)if(215==a.b)106!=c.type&&Ah(a,"inter"),V(a),b=Hh(a),106!=b.type&&Bh(a,"inter"),c.v!=b.v&&Ch(a,"inter",c.v,b.v),c=hh(363,c,b,106,c.v);else break;return c}
function th(a){for(var b,c=Ih(a);;)if(223==a.b)106!=c.type&&Ah(a,"union"),V(a),b=Ih(a),106!=b.type&&Bh(a,"union"),c.v!=b.v&&Ch(a,"union",c.v,b.v),c=hh(360,c,b,106,c.v);else if(209==a.b)106!=c.type&&Ah(a,"diff"),V(a),b=Ih(a),106!=b.type&&Bh(a,"diff"),c.v!=b.v&&Ch(a,"diff",c.v,b.v),c=hh(361,c,b,106,c.v);else if(221==a.b)106!=c.type&&Ah(a,"symdiff"),V(a),b=Ih(a),106!=b.type&&Bh(a,"symdiff"),c.v!=b.v&&Ch(a,"symdiff",c.v,b.v),c=hh(362,c,b,106,c.v);else break;return c}
function Jh(a){var b,c=-1,d="",e=th(a);switch(a.b){case 230:c=352;break;case 231:c=353;break;case 232:c=354;break;case 233:c=355;break;case 234:c=356;break;case 235:c=357;break;case 213:c=365;break;case 224:c=367;break;case 218:d=a.i;V(a);213==a.b?c=366:224==a.b?c=368:U(a,"invalid use of "+d);d+=" ";break;default:return e}d+=a.i;switch(c){case 354:case 357:case 352:case 353:case 356:case 355:118!=e.type&&124!=e.type&&Ah(a,d);V(a);b=th(a);118!=b.type&&124!=b.type&&Bh(a,d);118==e.type&&124==b.type&&
(e=W(317,e,124,0));124==e.type&&118==b.type&&(b=W(317,b,124,0));e=hh(c,e,b,114,0);break;case 365:case 366:118==e.type&&(e=W(317,e,124,0));124==e.type&&(e=W(319,e,126,1));126!=e.type&&Ah(a,d);V(a);b=th(a);106!=b.type&&Bh(a,d);e.v!=b.v&&Ch(a,d,e.v,b.v);e=hh(c,e,b,114,0);break;case 367:case 368:106!=e.type&&Ah(a,d),V(a),b=th(a),106!=b.type&&Bh(a,d),e.v!=b.v&&Ch(a,d,e.v,b.v),e=hh(c,e,b,114,0)}return e}
function Kh(a){var b,c;218==a.b?(c=a.i,V(a),b=Jh(a),124==b.type&&(b=W(316,b,118,0)),118==b.type&&(b=W(318,b,114,0)),114!=b.type&&Bh(a,c),b=W(323,b,114,0)):b=Jh(a);return b}function yh(a){for(var b,c="",d=Kh(a);;)if(206==a.b)c=a.i,124==d.type&&(d=W(316,d,118,0)),118==d.type&&(d=W(318,d,114,0)),114!=d.type&&Ah(a,c),V(a),b=Kh(a),124==b.type&&(b=W(316,b,118,0)),118==b.type&&(b=W(318,b,114,0)),114!=b.type&&Bh(a,c),d=hh(358,d,b,114,0);else break;return d}
function rh(a){for(var b,c=yh(a);;)if(219==a.b){var d=a.i;124==c.type&&(c=W(316,c,118,0));118==c.type&&(c=W(318,c,114,0));114!=c.type&&Ah(a,d);V(a);b=yh(a);124==b.type&&(b=W(316,b,118,0));118==b.type&&(b=W(318,b,114,0));114!=b.type&&Bh(a,d);c=hh(359,c,b,114,0)}else break;return c}
function Lh(a){function b(){U(a,"at most one := or default/data allowed")}function c(){U(a,a.i+" not a plain set")}function d(){U(a,"dimension of "+a.i+" too small")}function e(){U(a,"component number must be integer between 1 and "+h.set.aa)}var f,g,k=0,h;V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));null!=a.$[a.i]&&U(a,a.i+" multiply declared");f={};f.name=a.i;f.Kb=null;f.v=0;f.domain=null;f.aa=0;f.xf=null;f.assign=null;f.Ba=null;
f.Xc=null;f.data=0;f.T=null;V(a);205==a.b&&(f.Kb=a.i,V(a));248==a.b&&(f.domain=sh(a),f.v=zh(f.domain));g=a.$[f.name]={};g.type=122;for(g.link=f;;){if(239==a.b)V(a);else if(241==a.b)break;if(eh(a,"dimen")){var l;V(a);204==a.b&&1<=a.value&&20>=a.value&&Math.floor(a.value)==a.value||U(a,"dimension must be integer between 1 and 20");l=a.value+.5|0;k&&U(a,"at most one dimension attribute allowed");0<f.aa&&U(a,"dimension "+l+" conflicts with dimension "+f.aa+" already determined");f.aa=l;k=1;V(a)}else if(224==
a.b||213==a.b){213!=a.b||a.ng||(ah(a,"keyword in understood as within"),a.ng=1);V(a);l={code:null,next:null};if(null==f.xf)f.xf=l;else{for(g=f.xf;null!=g.next;g=g.next);g.next=l}l.code=th(a);106!=l.code.type&&U(a,"expression following within has invalid type");0==f.aa&&(f.aa=l.code.v);f.aa!=l.code.v&&U(a,"set expression following within must have dimension "+f.aa+" rather than "+l.code.v)}else if(242==a.b)null==f.assign&&null==f.Ba&&null==f.Xc||b(),V(a),f.assign=th(a),106!=f.assign.type&&U(a,"expression following := has invalid type"),
0==f.aa&&(f.aa=f.assign.v),f.aa!=f.assign.v&&U(a,"set expression following := must have dimension "+f.aa+" rather than "+f.assign.v);else if(eh(a,"default"))null==f.assign&&null==f.Ba||b(),V(a),f.Ba=th(a),106!=f.Ba.type&&U(a,"expression following default has invalid type"),0==f.aa&&(f.aa=f.Ba.v),f.aa!=f.Ba.v&&U(a,"set expression following default must have dimension "+f.aa+" rather than "+f.Ba.v);else if(eh(a,"data")){var n=0;l=Array(20);null==f.assign&&null==f.Xc||b();V(a);f.Xc=h={};202!=a.b&&(fh(a)?
U(a,"invalid use of reserved keyword "+a.i):U(a,"set name missing where expected"));g=a.$[a.i];null==g&&U(a,a.i+" not defined");122!=g.type&&c();h.set=g.link;0!=h.set.v&&c();h.set==f&&U(a,"set cannot be initialized by itself");f.v>=h.set.aa&&d();0==f.aa&&(f.aa=h.set.aa-f.v);f.v+f.aa>h.set.aa?d():f.v+f.aa<h.set.aa&&U(a,"dimension of "+a.i+" too big");V(a);244==a.b?V(a):U(a,"left parenthesis missing where expected");for(g=0;g<h.set.aa;g++)l[g]=0;for(g=0;;)if(204!=a.b&&U(a,"component number missing where expected"),
0!=ug(a.i,function(a){n=a})&&e(),1<=n&&n<=h.set.aa||e(),0!=l[n-1]&&U(a,"component "+n+" multiply specified"),h.ca[g++]=n,l[n-1]=1,V(a),239==a.b)V(a);else if(245==a.b)break;else U(a,"syntax error in data attribute");g<h.set.aa&&U(a,"there are must be "+h.set.aa+" components rather than "+g);V(a)}else U(a,"syntax error in set statement")}null!=f.domain&&uh(a,f.domain);0==f.aa&&(f.aa=1);V(a);return f}
function Mh(a){function b(){g&&U(a,"at most one binary allowed");124==d.type&&U(a,"symbolic parameter cannot be binary");d.type=101;g=1;V(a)}function c(){U(a,"at most one := or default allowed")}var d,e,f=0,g=0,k=0;V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));null!=a.$[a.i]&&U(a,a.i+" multiply declared");d={};d.name=a.i;d.Kb=null;d.v=0;d.domain=null;d.type=118;d.ud=null;d.ua=null;d.assign=null;d.Ba=null;d.data=0;d.Vc=null;d.T=null;
V(a);205==a.b&&(d.Kb=a.i,V(a));248==a.b&&(d.domain=sh(a),d.v=zh(d.domain));e=a.$[d.name]={};e.type=120;for(e.link=d;;){if(239==a.b)V(a);else if(241==a.b)break;if(eh(a,"integer"))f&&U(a,"at most one integer allowed"),124==d.type&&U(a,"symbolic parameter cannot be integer"),101!=d.type&&(d.type=113),f=1,V(a);else if(eh(a,"binary"))b();else if(eh(a,"logical"))a.Ie||(ah(a,"keyword logical understood as binary"),a.Ie=1),b();else if(eh(a,"symbolic"))k&&U(a,"at most one symbolic allowed"),118!=d.type&&U(a,
"integer or binary parameter cannot be symbolic"),null==d.ud&&null==d.ua&&null==d.assign&&null==d.Ba||U(a,"keyword symbolic must precede any other parameter attributes"),d.type=124,k=1,V(a);else if(230==a.b||231==a.b||232==a.b||233==a.b||234==a.b||235==a.b){var h,l={};switch(a.b){case 230:l.hd=352;h=a.i;break;case 231:l.hd=353;h=a.i;break;case 232:l.hd=354;h=a.i;break;case 233:l.hd=355;h=a.i;break;case 234:l.hd=356;h=a.i;break;case 235:l.hd=357,h=a.i}l.code=null;l.next=null;if(null==d.ud)d.ud=l;else{for(e=
d.ud;null!=e.next;e=e.next);e.next=l}V(a);l.code=mh(a);118!=l.code.type&&124!=l.code.type&&U(a,"expression following "+h+" has invalid type");124!=d.type&&124==l.code.type&&(l.code=W(316,l.code,118,0));124==d.type&&124!=l.code.type&&(l.code=W(317,l.code,124,0))}else if(213==a.b||224==a.b){224!=a.b||a.mg||(ah(a,"keyword within understood as in"),a.mg=1);V(a);l={code:null,next:null};if(null==d.ua)d.ua=l;else{for(e=d.ua;null!=e.next;e=e.next);e.next=l}l.code=th(a);106!=l.code.type&&U(a,"expression following in has invalid type");
1!=l.code.v&&U(a,"set expression following in must have dimension 1 rather than "+l.code.v)}else 242==a.b?(null==d.assign&&null==d.Ba||c(),V(a),d.assign=mh(a),118!=d.assign.type&&124!=d.assign.type&&U(a,"expression following := has invalid type"),124!=d.type&&124==d.assign.type&&(d.assign=W(316,d.assign,118,0)),124==d.type&&124!=d.assign.type&&(d.assign=W(317,d.assign,124,0))):eh(a,"default")?(null==d.assign&&null==d.Ba||c(),V(a),d.Ba=mh(a),118!=d.Ba.type&&124!=d.Ba.type&&U(a,"expression following default has invalid type"),
124!=d.type&&124==d.Ba.type&&(d.Ba=W(316,d.Ba,118,0)),124==d.type&&124!=d.Ba.type&&(d.Ba=W(317,d.Ba,124,0))):U(a,"syntax error in parameter statement")}null!=d.domain&&uh(a,d.domain);V(a);return d}
function Nh(a){function b(){d&&U(a,"at most one binary allowed");e.type=101;d=1;V(a)}var c=0,d=0;a.Qb&&U(a,"variable statement must precede solve statement");V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));null!=a.$[a.i]&&U(a,a.i+" multiply declared");var e={};e.name=a.i;e.Kb=null;e.v=0;e.domain=null;e.type=118;e.S=null;e.Z=null;e.T=null;V(a);205==a.b&&(e.Kb=a.i,V(a));248==a.b&&(e.domain=sh(a),e.v=zh(e.domain));var f=a.$[e.name]={};f.type=
127;for(f.link=e;;){if(239==a.b)V(a);else if(241==a.b)break;if(eh(a,"integer"))c&&U(a,"at most one integer allowed"),101!=e.type&&(e.type=113),c=1,V(a);else if(eh(a,"binary"))b();else if(eh(a,"logical"))a.Ie||(ah(a,"keyword logical understood as binary"),a.Ie=1),b();else if(eh(a,"symbolic"))U(a,"variable cannot be symbolic");else if(233==a.b)null!=e.S&&(e.S==e.Z?U(a,"both fixed value and lower bound not allowed"):U(a,"at most one lower bound allowed")),V(a),e.S=mh(a),124==e.S.type&&(e.S=W(316,e.S,
118,0)),118!=e.S.type&&U(a,"expression following >= has invalid type");else if(231==a.b)null!=e.Z&&(e.Z==e.S?U(a,"both fixed value and upper bound not allowed"):U(a,"at most one upper bound allowed")),V(a),e.Z=mh(a),124==e.Z.type&&(e.Z=W(316,e.Z,118,0)),118!=e.Z.type&&U(a,"expression following <= has invalid type");else if(232==a.b){if(null!=e.S||null!=e.Z)e.S==e.Z?U(a,"at most one fixed value allowed"):null!=e.S?U(a,"both lower bound and fixed value not allowed"):U(a,"both upper bound and fixed value not allowed");
f=a.i;V(a);e.S=mh(a);124==e.S.type&&(e.S=W(316,e.S,118,0));118!=e.S.type&&U(a,"expression following "+f+" has invalid type");e.Z=e.S}else 230==a.b||234==a.b||235==a.b?U(a,"strict bound not allowed"):U(a,"syntax error in variable statement")}null!=e.domain&&uh(a,e.domain);V(a);return e}
function Oh(a){function b(){U(a,"syntax error in constraint statement")}var c,d,e,f;a.Qb&&U(a,"constraint statement must precede solve statement");eh(a,"subject")?(V(a),eh(a,"to")||U(a,"keyword subject to incomplete"),V(a)):eh(a,"subj")?(V(a),eh(a,"to")||U(a,"keyword subj to incomplete"),V(a)):220==a.b&&V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));null!=a.$[a.i]&&U(a,a.i+" multiply declared");var g={};g.name=a.i;g.Kb=null;g.v=0;g.domain=
null;g.type=103;g.code=null;g.S=null;g.Z=null;g.T=null;V(a);205==a.b&&(g.Kb=a.i,V(a));248==a.b&&(g.domain=sh(a),g.v=zh(g.domain));c=a.$[g.name]={};c.type=103;c.link=g;240!=a.b&&U(a,"colon missing where expected");V(a);c=mh(a);124==c.type&&(c=W(316,c,118,0));118!=c.type&&110!=c.type&&U(a,"expression following colon has invalid type");239==a.b&&V(a);switch(a.b){case 231:case 233:case 232:break;case 230:case 234:case 235:U(a,"strict inequality not allowed");break;case 241:U(a,"constraint must be equality or inequality");
break;default:b()}f=a.b;e=a.i;V(a);d=mh(a);124==d.type&&(d=W(316,d,118,0));118!=d.type&&110!=d.type&&U(a,"expression following "+e+" has invalid type");239==a.b&&(V(a),241==a.b&&b());230==a.b||231==a.b||232==a.b||233==a.b||234==a.b||235==a.b?(232!=f&&a.b==f||U(a,"double inequality must be ... <= ... <= ... or ... >= ... >= ..."),110==c.type&&U(a,"leftmost expression in double inequality cannot be linear form"),V(a),e=mh(a),124==e.type&&(e=W(316,d,118,0)),118!=e.type&&110!=e.type&&U(a,"rightmost expression in double inequality constraint has invalid type"),
110==e.type&&U(a,"rightmost expression in double inequality cannot be linear form")):e=null;null!=g.domain&&uh(a,g.domain);110!=c.type&&(c=W(320,c,110,0));110!=d.type&&(d=W(320,d,110,0));null!=e&&(e=W(320,e,110,0));if(null==e)switch(f){case 231:g.code=c;g.S=null;g.Z=d;break;case 233:g.code=c;g.S=d;g.Z=null;break;case 232:g.code=c,g.S=d,g.Z=d}else switch(f){case 231:g.code=d;g.S=c;g.Z=e;break;case 233:g.code=d,g.S=e,g.Z=c}241!=a.b&&b();V(a);return g}
function Ph(a){!a.oc&&eh(a,"end")||a.oc&&Qh(a,"end")?(V(a),241==a.b?V(a):ah(a,"no semicolon following end statement; missing semicolon inserted")):ah(a,"unexpected end of file; missing end statement inserted");201!=a.b&&ah(a,"some text detected beyond end statement; text ignored")}
function Rh(a,b){var c={C:{}};c.gb=a.gb;c.Uc=a.Uc;c.next=null;if(eh(a,"set"))b&&U(a,"set statement not allowed here"),c.type=122,c.C.set=Lh(a);else if(eh(a,"param"))b&&U(a,"parameter statement not allowed here"),c.type=120,c.C.W=Mh(a);else if(eh(a,"var"))b&&U(a,"variable statement not allowed here"),c.type=127,c.C.A=Nh(a);else if(eh(a,"subject")||eh(a,"subj")||220==a.b)b&&U(a,"constraint statement not allowed here"),c.type=103,c.C.K=Oh(a);else if(eh(a,"minimize")||eh(a,"maximize")){b&&U(a,"objective statement not allowed here");
c.type=103;var d=c.C,e,f;eh(a,"minimize")?f=116:eh(a,"maximize")&&(f=115);a.Qb&&U(a,"objective statement must precede solve statement");V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));null!=a.$[a.i]&&U(a,a.i+" multiply declared");e={};e.name=a.i;e.Kb=null;e.v=0;e.domain=null;e.type=f;e.code=null;e.S=null;e.Z=null;e.T=null;V(a);205==a.b&&(e.Kb=a.i,V(a));248==a.b&&(e.domain=sh(a),e.v=zh(e.domain));var g=a.$[e.name]={};g.type=103;g.link=
e;240!=a.b&&U(a,"colon missing where expected");V(a);e.code=mh(a);124==e.code.type&&(e.code=W(316,e.code,118,0));118==e.code.type&&(e.code=W(320,e.code,110,0));110!=e.code.type&&U(a,"expression following colon has invalid type");null!=e.domain&&uh(a,e.domain);241!=a.b&&U(a,"syntax error in objective statement");V(a);d.K=e}else if(eh(a,"table")){b&&U(a,"table statement not allowed here");c.type=125;var d=c.C,k,h;V(a);202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"symbolic name missing where expected"));
null!=a.$[a.i]&&U(a,a.i+" multiply declared");e={C:{ua:{},Nc:{}}};e.name=a.i;V(a);205==a.b?(e.Kb=a.i,V(a)):e.Kb=null;248==a.b?(e.type=119,e.C.Nc.domain=sh(a),eh(a,"OUT")||U(a,"keyword OUT missing where expected")):(e.type=112,eh(a,"IN")||U(a,"keyword IN missing where expected"));V(a);for(e.a=f=null;;)if(k={},239!=a.b&&240!=a.b&&241!=a.b||U(a,"argument expression missing where expected"),k.code=mh(a),118==k.code.type&&(k.code=W(317,k.code,124,0)),124!=k.code.type&&U(a,"argument expression has invalid type"),
k.next=null,null==f?e.a=k:f.next=k,f=k,239==a.b)V(a);else if(240==a.b||241==a.b)break;240==a.b?V(a):U(a,"colon missing where expected");switch(e.type){case 112:202==a.b?(g=a.$[a.i],null==g&&U(a,a.i+" not defined"),122!=g.type&&U(a,a.i+" not a set"),e.C.ua.set=g.link,null!=e.C.ua.set.assign&&U(a,a.i+" needs no data"),0!=e.C.ua.set.v&&U(a,a.i+" must be a simple set"),V(a),252==a.b?V(a):U(a,"delimiter <- missing where expected")):fh(a)?U(a,"invalid use of reserved keyword "+a.i):e.C.ua.set=null;e.C.ua.Ue=
g=null;f=0;for(246==a.b?V(a):U(a,"field list missing where expected");;)if(k={},202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"field name missing where expected")),k.name=a.i,V(a),k.next=null,null==g?e.C.ua.Ue=k:g.next=k,g=k,f++,239==a.b)V(a);else if(247==a.b)break;else U(a,"syntax error in field list");null!=e.C.ua.set&&e.C.ua.set.aa!=f&&U(a,"there must be "+e.C.ua.set.aa+" field"+(1==e.C.ua.set.aa?"":"s")+" rather than "+f);V(a);for(e.C.ua.list=k=null;239==a.b;)V(a),h={},202!=
a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"parameter name missing where expected")),g=a.$[a.i],null==g&&U(a,a.i+" not defined"),120!=g.type&&U(a,a.i+" not a parameter"),h.W=g.link,h.W.v!=f&&U(a,a.i+" must have "+f+" subscript"+(1==f?"":"s")+" rather than "+h.W.v),null!=h.W.assign&&U(a,a.i+" needs no data"),V(a),251==a.b?(V(a),202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"field name missing where expected")),g=a.i,V(a)):g=h.W.name,h.name=g,h.next=null,null==k?
e.C.ua.list=h:k.next=h,k=h;break;case 119:for(e.C.Nc.list=f=null;;)if(k={},239!=a.b&&241!=a.b||U(a,"expression missing where expected"),202==a.b?g=a.i:g="",k.code=mh(a),251==a.b&&(V(a),202!=a.b&&(fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"field name missing where expected")),g=a.i,V(a)),""==g&&U(a,"field name required"),k.name=g,k.next=null,null==f?e.C.Nc.list=k:f.next=k,f=k,239==a.b)V(a);else if(241==a.b)break;else U(a,"syntax error in output list");uh(a,e.C.Nc.domain)}241!=a.b&&U(a,
"syntax error in table statement");V(a);d.tab=e}else if(eh(a,"solve"))b&&U(a,"solve statement not allowed here"),c.type=123,d=c.C,a.Qb&&U(a,"at most one solve statement allowed"),a.Qb=1,V(a),241!=a.b&&U(a,"syntax error in solve statement"),V(a),d.uh=null;else if(eh(a,"check"))c.type=102,d=c.C,e={domain:null,code:null},V(a),248==a.b&&(e.domain=sh(a)),240==a.b&&V(a),e.code=rh(a),114!=e.code.type&&U(a,"expression has invalid type"),null!=e.domain&&uh(a,e.domain),241!=a.b&&U(a,"syntax error in check statement"),
V(a),d.Mg=e;else if(eh(a,"display")){c.type=104;d=c.C;g={domain:null};g.list=e=null;V(a);248==a.b&&(g.domain=sh(a));for(240==a.b&&V(a);;){f={C:{},type:0,next:null};null==g.list?g.list=f:e.next=f;e=f;if(202==a.b)if(V(a),k=a.b,dh(a),239!=k&&241!=k)f.type=108,f.C.code=rh(a);else{k=a.$[a.i];null==k&&U(a,a.i+" not defined");f.type=k.type;switch(k.type){case 111:f.C.Ca=k.link;break;case 122:f.C.set=k.link;break;case 120:f.C.W=k.link;break;case 127:f.C.A=k.link;a.Qb||U(a,"invalid reference to variable "+
f.C.A.name+" above solve statement");break;case 103:f.C.K=k.link,a.Qb||U(a,"invalid reference to "+(103==f.C.K.type?"constraint":"objective")+" "+f.C.K.name+" above solve statement")}V(a)}else f.type=108,f.C.code=rh(a);if(239==a.b)V(a);else break}null!=g.domain&&uh(a,g.domain);241!=a.b&&U(a,"syntax error in display statement");V(a);d.Ng=g}else if(eh(a,"printf")){c.type=121;d=c.C;f={domain:null,xd:null};f.list=g=null;V(a);248==a.b&&(f.domain=sh(a));240==a.b&&V(a);f.xd=mh(a);118==f.xd.type&&(f.xd=W(317,
f.xd,124,0));for(124!=f.xd.type&&U(a,"format expression has invalid type");239==a.b;)V(a),e={code:null,next:null},null==f.list?f.list=e:g.next=e,g=e,e.code=th(a),118!=e.code.type&&124!=e.code.type&&114!=e.code.type&&U(a,"only numeric, symbolic, or logical expression allowed");null!=f.domain&&uh(a,f.domain);f.Ia=null;f.app=0;if(234==a.b||250==a.b)f.app=250==a.b,V(a),f.Ia=mh(a),118==f.Ia.type&&(f.Ia=W(317,f.Ia,124,0)),124!=f.Ia.type&&U(a,"file name expression has invalid type");241!=a.b&&U(a,"syntax error in printf statement");
V(a);d.ih=f}else if(eh(a,"for")){c.type=109;d=c.C;f={domain:null};f.list=g=null;V(a);248!=a.b&&U(a,"indexing expression missing where expected");f.domain=sh(a);240==a.b&&V(a);if(248!=a.b)f.list=Rh(a,1);else{for(V(a);249!=a.b;)e=Rh(a,1),null==g?f.list=e:g.next=e,g=e;V(a)}uh(a,f.domain);d.Pg=f}else 202==a.b?(b&&U(a,"constraint statement not allowed here"),c.type=103,c.C.K=Oh(a)):fh(a)?U(a,"invalid use of reserved keyword "+a.i):U(a,"syntax error in model section");return c}
function Sh(a){var b,c;for(c=null;201!=a.b&&!eh(a,"data")&&!eh(a,"end");)b=Rh(a,0),null==c?a.uc=b:c.next=b,c=b}function Th(a,b){var c,d={};d.ba=b;d.next=null;if(null==a)a=d;else{for(c=a;null!=c.next;c=c.next);c.next=d}return a}function Uh(a){for(var b=0;null!=a;a=a.next)b++;return b}function Vh(a){for(var b=0;null!=a;a=a.next)null==a.ba&&b++;return b}function Wh(a){for(var b=null;0<a--;)b=Th(b,null);return b}function Xh(a){return 204==a.b||203==a.b||205==a.b}
function Qh(a,b){return Xh(a)&&a.i==b}function Yh(a){var b;b=204==a.b?Zh(a.value):$h(a.i);V(a);return b}
function ai(a,b,c){var d,e;switch(a.b){case 246:e=247;break;case 244:e=245}0==c&&U(a,b+" cannot be subscripted");V(a);for(d=null;;)if(Xh(a)?d=Th(d,Yh(a)):227==a.b?(d=Th(d,null),V(a)):U(a,"number, symbol, or asterisk missing where expected"),239==a.b)V(a);else if(a.b==e)break;else U(a,"syntax error in slice");if(Uh(d)!=c)switch(e){case 247:U(a,b+" must have "+c+" subscript"+(1==c?"":"s")+", not "+Uh(d));break;case 245:U(a,b+" has dimension "+c+", not "+Uh(d))}V(a);return d}
function bi(a,b){var c;c=a.$[b];null!=c&&122==c.type||U(a,b+" not a set");c=c.link;null==c.assign&&null==c.Xc||U(a,b+" needs no data");c.data=1;return c}function ci(a,b,c){var d,e,f=null;for(d=null;null!=c;c=c.next)null==c.ba?(Xh(a)||(e=Vh(c),1==e?U(a,"one item missing in data group beginning with "+di(f)):U(a,e+" items missing in data group beginning with "+di(f))),e=Yh(a),null==f&&(f=e)):e=ei(c.ba),d=fi(d,e),null!=c.next&&239==a.b&&V(a);gi(a,b.value.set,d)}
function hi(a,b,c,d){var e,f,g,k,h;for(e=null;242!=a.b;)Xh(a)||U(a,"number, symbol, or := missing where expected"),e=Th(e,Yh(a));for(V(a);Xh(a);)for(h=Yh(a),f=e;null!=f;f=f.next){var l=0;if(!Qh(a,"+"))if(Qh(a,"-")){V(a);continue}else g=Uh(f),1==g?U(a,"one item missing in data group beginning with "+di(h)):U(a,g+" items missing in data group beginning with "+di(h));k=null;for(g=c;null!=g;g=g.next)if(null==g.ba)switch(++l){case 1:k=fi(k,ei(d?f.ba:h));break;case 2:k=fi(k,ei(d?h:f.ba))}else k=fi(k,ei(g.ba));
gi(a,b.value.set,k);V(a)}}
function ii(a){function b(){U(a,"slice currently used must specify 2 asterisks, not "+Vh(k))}function c(){U(a,"transpose indicator (tr) incomplete")}function d(){V(a);Qh(a,"tr")||c();2!=Vh(k)&&b();V(a);245!=a.b&&c();V(a);240==a.b&&V(a);h=1;hi(a,g,k,h)}var e,f,g,k,h=0;V(a);Xh(a)||U(a,"set name missing where expected");e=bi(a,a.i);V(a);f=null;if(246==a.b){0==e.v&&U(a,e.name+" cannot be subscripted");for(V(a);;)if(Xh(a)||U(a,"number or symbol missing where expected"),f=fi(f,Yh(a)),239==a.b)V(a);else if(247==
a.b)break;else U(a,"syntax error in subscript list");e.v!=ji(f)&&U(a,e.name+" must have "+e.v+" subscript"+(1==e.v?"":"s")+" rather than "+ji(f));V(a)}else 0!=e.v&&U(a,e.name+" must be subscripted");null!=ki(a,e.T,f)&&U(a,e.name+li("[",f)+" already defined");g=mi(e.T,f);g.value.set=ni(a,117,e.aa);for(k=Wh(e.aa);;)if(239==a.b&&V(a),242==a.b)V(a);else if(244==a.b)V(a),f=Qh(a,"tr"),dh(a),f?d():(k=ai(a,e.name,e.aa),h=0,0==Vh(k)&&ci(a,g,k));else if(Xh(a))ci(a,g,k);else if(240==a.b)2!=Vh(k)&&b(),V(a),hi(a,
g,k,h);else if(244==a.b)d();else if(241==a.b){V(a);break}else U(a,"syntax error in set data block")}function oi(a,b){var c;c=a.$[b];null!=c&&120==c.type||U(a,b+" not a parameter");c=c.link;null!=c.assign&&U(a,b+" needs no data");c.data&&U(a,b+" already provided with data");c.data=1;return c}function pi(a,b,c){null!=b.Ba&&U(a,"default value for "+b.name+" already specified in model section");b.Vc=c}
function qi(a,b,c){null!=ki(a,b.T,c)&&U(a,b.name+li("[",c)+" already defined");c=mi(b.T,c);switch(b.type){case 118:case 113:case 101:204==a.b||U(a,b.name+" requires numeric data");b=c.value;c=a.value;V(a);b.U=c;break;case 124:c.value.ba=Yh(a)}}
function ri(a,b,c){var d,e,f=null;for(d=null;null!=c;c=c.next)null==c.ba?(Xh(a)||U(a,Vh(c)+1+" items missing in data group beginning with "+di(f)),e=Yh(a),null==f&&(f=e)):e=ei(c.ba),d=fi(d,e),239==a.b&&V(a);Xh(a)||U(a,"one item missing in data group beginning with "+di(f));qi(a,b,d)}
function si(a,b,c,d){var e,f,g,k,h;for(e=null;242!=a.b;)Xh(a)||U(a,"number, symbol, or := missing where expected"),e=Th(e,Yh(a));for(V(a);Xh(a);)for(h=Yh(a),f=e;null!=f;f=f.next){var l=0;if(Qh(a,"."))V(a);else{k=null;for(g=c;null!=g;g=g.next)if(null==g.ba)switch(++l){case 1:k=fi(k,ei(d?f.ba:h));break;case 2:k=fi(k,ei(d?h:f.ba))}else k=fi(k,ei(g.ba));Xh(a)||(g=Uh(f),1==g?U(a,"one item missing in data group beginning with "+di(h)):U(a,g+" items missing in data group beginning with "+di(h)));qi(a,b,
k)}}}
function ti(a,b){var c=null,d,e,f,g,k=0;g=null;Xh(a)&&(V(a),e=a.b,dh(a),240==e&&(c=bi(a,a.i),0!=c.v&&U(a,c.name+" must be a simple set"),null!=c.T.head&&U(a,c.name+" already defined"),mi(c.T,null).value.set=ni(a,117,c.aa),g=c.name,k=c.aa,V(a),V(a)));for(e=null;242!=a.b;)Xh(a)||U(a,"parameter name or := missing where expected"),d=oi(a,a.i),0==d.v&&U(a,a.i+" not a subscripted parameter"),0!=k&&d.v!=k&&U(a,g+" has dimension "+k+" while "+d.name+" has dimension "+d.v),null!=b&&pi(a,d,ei(b)),e=Th(e,d),
g=d.name,k=d.v,V(a),239==a.b&&V(a);0==Uh(e)&&U(a,"at least one parameter name required");V(a);for(239==a.b&&V(a);Xh(a);){g=null;for(f=1;f<=k;f++)Xh(a)||(d=Uh(e)+k-f+1,U(a,d+" items missing in data group beginning with "+di(g.ba))),g=fi(g,Yh(a)),f<k&&239==a.b&&V(a);null!=c&&gi(a,c.T.head.value.set,ui(g));239==a.b&&V(a);for(f=e;null!=f;f=f.next)Qh(a,".")?V(a):(Xh(a)||(d=Uh(f),1==d?U(a,"one item missing in data group beginning with "+di(g.ba)):U(a,d+" items missing in data group beginning with "+di(g.ba))),
qi(a,f.ba,ui(g)),null!=f.next&&239==a.b&&V(a));239==a.b&&(V(a),Xh(a)||dh(a))}for(f=e;null!=f;f=f.next)f.ba=null}
function vi(a){function b(){U(a,e.name+" not a subscripted parameter")}function c(){U(a,"slice currently used must specify 2 asterisks, not "+Vh(g))}function d(){U(a,"transpose indicator (tr) incomplete")}var e,f=null,g,k=0;V(a);Qh(a,"default")&&(V(a),Xh(a)||U(a,"default value missing where expected"),f=Yh(a),240!=a.b&&U(a,"colon missing where expected"));if(240==a.b)V(a),239==a.b&&V(a),ti(a,f),241!=a.b&&U(a,"symbol, number, or semicolon missing where expected"),V(a);else for(Xh(a)||U(a,"parameter name missing where expected"),
e=oi(a,a.i),V(a),Qh(a,"default")&&(V(a),Xh(a)||U(a,"default value missing where expected"),f=Yh(a),pi(a,e,f)),g=Wh(e.v);;)if(239==a.b&&V(a),242==a.b)V(a);else if(246==a.b)g=ai(a,e.name,e.v),k=0;else if(Xh(a))ri(a,e,g);else if(240==a.b)0==e.v&&b(),2!=Vh(g)&&c(),V(a),si(a,e,g,k);else if(244==a.b)V(a),Qh(a,"tr")||d(),0==e.v&&b(),2!=Vh(g)&&c(),V(a),245!=a.b&&d(),V(a),240==a.b&&V(a),k=1,si(a,e,g,k);else if(241==a.b){V(a);break}else U(a,"syntax error in parameter data block")}
function wi(a){for(;201!=a.b&&!Qh(a,"end");)Qh(a,"set")?ii(a):Qh(a,"param")?vi(a):U(a,"syntax error in data section")}function xi(a,b,c){(0<b&&0<c&&b>.999*t-c||0>b&&0>c&&b<-.999*t-c)&&U(a,b+" + "+c+"; floating-point overflow");return b+c}function yi(a,b,c){(0<b&&0>c&&b>.999*t+c||0>b&&0<c&&b<-.999*t+c)&&U(a,b+" - "+c+"; floating-point overflow");return b-c}function zi(a,b,c){if(b<c)return 0;0<b&&0>c&&b>.999*t+c&&U(a,b+" less "+c+"; floating-point overflow");return b-c}
function Ai(a,b,c){1<Math.abs(c)&&Math.abs(b)>.999*t/Math.abs(c)&&U(a,b+" * "+c+"; floating-point overflow");return b*c}function Bi(a,b,c){Math.abs(c)<fa&&U(a,b+" / "+c+"; floating-point zero divide");1>Math.abs(c)&&Math.abs(b)>.999*t*Math.abs(c)&&U(a,b+" / "+c+"; floating-point overflow");return b/c}
function Ci(a,b,c){Math.abs(c)<fa&&U(a,b+" div "+c+"; floating-point zero divide");1>Math.abs(c)&&Math.abs(b)>.999*t*Math.abs(c)&&U(a,b+" div "+c+"; floating-point overflow");b/=c;return 0<b?Math.floor(b):0>b?Math.ceil(b):0}function Di(a,b){var c;if(0==a)c=0;else if(0==b)c=a;else if(c=Math.abs(a)%Math.abs(b),0!=c&&(0>a&&(c=-c),0<a&&0>b||0>a&&0<b))c+=b;return c}
function Ei(a,b,c){(0==b&&0>=c||0>b&&c!=Math.floor(c))&&U(a,b+" ** "+c+"; result undefined");0==b?a=Math.pow(b,c):((1<Math.abs(b)&&1<c&&+Math.log(Math.abs(b))>.999*Math.log(t)/c||1>Math.abs(b)&&-1>c&&+Math.log(Math.abs(b))<.999*Math.log(t)/c)&&U(a,b+" ** "+c+"; floating-point overflow"),a=1<Math.abs(b)&&-1>c&&-Math.log(Math.abs(b))<.999*Math.log(t)/c||1>Math.abs(b)&&1<c&&-Math.log(Math.abs(b))>.999*Math.log(t)/c?0:Math.pow(b,c));return a}
function Fi(a,b){b>.999*Math.log(t)&&U(a,"exp("+b+"); floating-point overflow");return Math.exp(b)}function Gi(a,b){0>=b&&U(a,"log("+b+"); non-positive argument");return Math.log(b)}function Hi(a,b){0>=b&&U(a,"log10("+b+"); non-positive argument");return Math.log(b)/Math.LN10}function Ii(a,b){0>b&&U(a,"sqrt("+b+"); negative argument");return Math.sqrt(b)}function Ji(a,b){-1E6<=b&&1E6>=b||U(a,"sin("+b+"); argument too large");return Math.sin(b)}
function Ki(a,b){-1E6<=b&&1E6>=b||U(a,"cos("+b+"); argument too large");return Math.cos(b)}function Li(a){return Math.atan(a)}function Mi(a,b){return Math.atan2(a,b)}function Ni(a,b,c){c!=Math.floor(c)&&U(a,"round("+b+", "+c+"); non-integer second argument");18>=c&&(a=Math.pow(10,c),Math.abs(b)<.999*t/a&&(b=Math.floor(b*a+.5),0!=b&&(b/=a)));return b}
function Oi(a,b,c){c!=Math.floor(c)&&U(a,"trunc("+b+", "+c+"); non-integer second argument");18>=c&&(a=Math.pow(10,c),Math.abs(b)<.999*t/a&&(b=0<=b?Math.floor(b*a):Math.ceil(b*a),0!=b&&(b/=a)));return b}function Pi(a,b,c){var d;b>=c&&U(a,"Uniform("+b+", "+c+"); invalid range");d=Qi(a.Fd)/2147483648;return d=xi(a,b*(1-d),c*d)}function Ri(a){var b,c;do b=-1+2*(Qi(a.Fd)/2147483648),c=-1+2*(Qi(a.Fd)/2147483648),b=b*b+c*c;while(1<b||0==b);return c*Math.sqrt(-2*Math.log(b)/b)}
function Si(a,b,c){return xi(a,b,Ai(a,c,Ri(a)))}function Zh(a){var b={};b.U=a;b.P=null;return b}function $h(a){var b={U:0};b.P=a;return b}function ei(a){var b={};null==a.P?(b.U=a.U,b.P=null):(b.U=0,b.P=a.P);return b}function Ti(a,b){var c;if(null==a.P&&null==b.P)c=a.U<b.U?-1:a.U>b.U?1:0;else if(null==a.P)c=-1;else if(null==b.P)c=1;else{c=a.P;var d=b.P;c=c==d?0:c>d?1:-1}return c}
function di(a){var b;if(null==a.P)b=String(a.U);else{var c=function(a){255>e&&(b+=a,e++)},d,e,f=a.P;if(ua(f[0])||"_"==f[0])for(a=!1,d=1;d<f.length;d++){if(!(va(f[d])||0<="+-._".indexOf(f[d]))){a=!0;break}}else a=!0;b="";e=0;a&&c("'");for(d=0;d<f.length;d++)a&&"'"==f[d]&&c("'"),c(f[d]);a&&c("'");255==e&&(b=b.slice(0,252)+"...")}return b}function fi(a,b){var c,d={};d.ba=b;d.next=null;if(null==a)a=d;else{for(c=a;null!=c.next;c=c.next);c.next=d}return a}
function ji(a){for(var b=0;null!=a;a=a.next)b++;return b}function ui(a){var b,c;if(null==a)b=null;else{for(b=c={};null!=a;a=a.next)c.ba=ei(a.ba),null!=a.next&&(c=c.next={});c.next=null}return b}function Ui(a,b){var c,d,e;c=a;for(d=b;null!=c;c=c.next,d=d.next)if(e=Ti(c.ba,d.ba),0!=e)return e;return 0}function Vi(a,b){for(var c=null,d=1,e=a;d<=b;d++,e=e.next)c=fi(c,ei(e.ba));return c}
function li(a,b){function c(a){255>f&&(g+=a);f++}var d,e,f=0,g="",k="",h=ji(b);"["==a&&0<h&&c("[");"("==a&&1<h&&c("(");for(d=b;null!=d;d=d.next)for(d!=b&&c(","),k=di(d.ba),e=0;e<k.length;e++)c(k[e]);"["==a&&0<h&&c("]");"("==a&&1<h&&c(")");255==f&&(g=g.slice(0,252)+"...");return g}function Wi(a,b){mi(a,b).value.Zg=null}function gi(a,b,c){null!=ki(a,b,c)&&U(a,"duplicate tuple "+li("(",c)+" detected");Wi(b,c)}
function Xi(a,b){var c,d;c=ni(a,117,b.v);for(d=b.head;null!=d;d=d.next)Wi(c,ui(d.D));return c}function Yi(a,b,c,d){var e;0==d&&U(a,b+" .. "+c+" by "+d+"; zero stride not allowed");e=0<c&&0>b&&c>.999*t+b?+t:0>c&&0<b&&c<-.999*t+b?-t:c-b;1>Math.abs(d)&&Math.abs(e)>.999*t*Math.abs(d)?e=0<e&&0<d||0>e&&0>d?+t:0:(e=Math.floor(e/d)+1,0>e&&(e=0));2147483646<e&&U(a,b+" .. "+c+" by "+d+"; set too large");return e+.5|0}function Zi(a,b,c,d,e){1<=e&&Yi(a,b,c,d);return b+(e-1)*d}
function $i(a){var b;0==a?b=null:(b={},b.B=a,b.A=null,b.next=null);return b}function aj(a){var b,c;if(null==a)b=null;else{for(b=c={};null!=a;a=a.next)c.B=a.B,c.A=a.A,null!=a.next&&(c=c.next={});c.next=null}return b}
function bj(a,b,c,d,e){var f=null,g,k=0;for(g=c;null!=g;g=g.next)null==g.A?k=xi(a,k,Ai(a,b,g.B)):g.A.na=xi(a,g.A.na,Ai(a,b,g.B));for(g=e;null!=g;g=g.next)null==g.A?k=xi(a,k,Ai(a,d,g.B)):g.A.na=xi(a,g.A.na,Ai(a,d,g.B));for(g=c;null!=g;g=g.next)null!=g.A&&0!=g.A.na&&(a={},a.B=g.A.na,a.A=g.A,a.next=f,f=a,g.A.na=0);for(g=e;null!=g;g=g.next)null!=g.A&&0!=g.A.na&&(a={},a.B=g.A.na,a.A=g.A,a.next=f,f=a,g.A.na=0);0!=k&&(a={},a.B=k,a.A=null,a.next=f,f=a);return f}
function cj(a,b,c){for(var d=null,e,f=0;null!=b;)e=b,b=b.next,null==e.A?f=xi(a,f,e.B):(e.next=d,d=e);c(f);return d}function dj(a,b){switch(a){case 117:b.Zg=null;break;case 118:b.U=0;break;case 124:b.ba=null;break;case 114:b.og=0;break;case 126:b.D=null;break;case 106:b.set=null;break;case 107:b.A=null;break;case 110:b.form=null;break;case 105:b.K=null}}function ni(a,b,c){var d={};d.type=b;d.v=c;d.size=0;d.head=null;d.$a=null;d.$=!1;d.ga=null;d.next=a.lg;null!=d.next&&(d.next.ga=d);return a.lg=d}
function ej(a,b,c){return Ui(b,c)}function ki(a,b,c){if(30<b.size&&!b.$){var d={root:null};d.ug=ej;d.info=a;d.size=0;d.height=0;b.$=d;for(a=b.head;null!=a;a=a.next)qe(b.$,a.D).link=a}if(b.$){b=b.$;for(a=b.root;null!=a;){d=b.ug(b.info,c,a.key);if(0==d)break;a=0>d?a.left:a.right}c=a;a=null==c?null:c.link}else for(a=b.head;null!=a&&0!=Ui(a.D,c);a=a.next);return a}
function mi(a,b){var c={};c.D=b;c.next=null;c.value={};a.size++;null==a.head?a.head=c:a.$a.next=c;a.$a=c;null!=a.$&&(qe(a.$,c.D).link=c);return c}function fj(a){var b;if(null!=a.Je)for(b=a.list,a=a.Je;null!=b;b=b.next,a=a.next)a:{var c=b,d=a.ba,e=void 0,f=void 0;if(null!=c.value){if(0==Ti(c.value,d))break a;c.value=null}for(e=c.list;null!=e;e=e.a.index.next)for(f=e;null!=f;f=f.V)f.valid&&(f.valid=0,dj(f.type,f.value));c.value=ei(d)}}
function gj(a,b,c,d,e){var f,g=0;if(!hj(a,b.code,c))return 1;f=b.Je;b.Je=c;fj(b);e(a,d);b.Je=f;fj(b);return g}function ij(a,b){if(null!=b.block){var c,d,e=null,f=null;c=b.block;b.block=c.next;for(d=c.list;null!=d;d=d.next)null==e?e=f={}:f=f.next={},null==d.code?(f.ba=b.D.ba,b.D=b.D.next):f.ba=jj(a,d.code);f.next=null;gj(a,c,e,b,ij)&&(b.Te=1);for(d=c.list;null!=d;d=d.next)e=e.next}else null==b.domain.code||kj(a,b.domain.code)?b.Xd(a,b.info):b.Te=2}
function lj(a,b,c,d,e){var f={};null==b?(e(a,d),f.Te=0):(f.domain=b,f.block=b.list,f.D=c,f.info=d,f.Xd=e,f.Te=0,ij(a,f));return f.Te}
function mj(a,b){if(null!=b.block){var c,d,e;c=b.block;b.block=c.next;e=null;for(d=c.list;null!=d;d=d.next)null!=d.code&&(e=fi(e,jj(a,d.code)));if(372==c.code.Wa){var f,g,k,h;g=X(a,c.code.a.a.x);k=X(a,c.code.a.a.y);null==c.code.a.a.z?h=1:h=X(a,c.code.a.a.z);e=Yi(a,g,k,h);d=fi(null,Zh(0));for(f=1;f<=e&&b.Sf;f++)d.ba.U=Zi(a,g,k,h,f),gj(a,c,d,b,mj)}else for(h=nj(a,c.code).head;null!=h&&b.Sf;h=h.next){f=h.D;g=e;k=!1;for(d=c.list;null!=d;d=d.next){if(null!=d.code){if(0!=Ti(f.ba,g.ba)){k=!0;break}g=g.next}f=
f.next}k||gj(a,c,h.D,b,mj)}b.block=c}else if(null==b.domain.code||kj(a,b.domain.code))b.Sf=!b.Xd(a,b.info)}function oj(a,b,c,d){var e={};null==b?d(a,c):(e.domain=b,e.block=b.list,e.Sf=1,e.info=c,e.Xd=d,mj(a,e))}function pj(a,b,c){U(a,b+li("[",c)+" out of domain")}function qj(a){var b=null;if(null!=a)for(a=a.list;null!=a;a=a.next)for(var c=a.list;null!=c;c=c.next)null==c.code&&(b=fi(b,ei(c.value)));return b}
function rj(a,b,c,d){for(var e=b.xf,f=1;null!=e;e=e.next,f++)for(var g=d.head;null!=g;g=g.next)if(!hj(a,e.code,g.D)){var k=li("(",g.D);U(a,b.name+li("[",c)+" contains "+k+" which not within specified set; see ("+f+")")}}function sj(a,b,c){function d(){rj(a,b,c,e);f=mi(b.T,ui(c));f.value.set=e}var e,f=ki(a,b.T,c);null!=f?e=f.value.set:null!=b.assign?(e=nj(a,b.assign),d()):null!=b.Ba?(e=nj(a,b.Ba),d()):U(a,"no value for "+b.name+li("[",c));return e}
function tj(a,b){null!=b.ka?rj(a,b.set,b.ka.D,b.ka.value.set):b.me=sj(a,b.set,b.D)}
function uj(a,b){var c=b.Xc,d,e,f,g=Array(20);y("Generating "+b.name+"...");d=c.set;oj(a,d.domain,d,vj);for(d=c.set.T.head.value.set.head;null!=d;d=d.next){f=ui(d.D);for(e=0;e<c.set.aa;e++)g[e]=null;for(e=0;null!=f;f=f.next)g[c.ca[e++]-1]=f;for(e=0;e<c.set.aa;e++)g[e].next=g[e+1];0==b.v?f=null:(f=g[0],g[b.v-1].next=null);e=ki(a,b.T,f);null==e&&(e=mi(b.T,f),e.value.set=ni(a,117,b.aa));f=g[b.v];g[c.set.aa-1].next=null;Wi(e.value.set,f)}b.data=1}
function wj(a,b,c){var d={};d.set=b;d.D=c;null!=b.Xc&&0==b.data&&uj(a,b);if(1==b.data)for(c=b.T.$a,b.data=2,d.ka=b.T.head;null!=d.ka&&(lj(a,b.domain,d.ka.D,d,tj)&&pj(a,b.name,d.ka.D),d.ka!=c);d.ka=d.ka.next);d.ka=null;lj(a,d.set.domain,d.D,d,tj)&&pj(a,b.name,d.D);return d.me}function vj(a,b){var c=qj(b.domain);wj(a,b,c);return 0}
function xj(a,b,c,d){var e,f;switch(b.type){case 113:d!=Math.floor(d)&&U(a,b.name+li("[",c)+" = "+d+" not integer");break;case 101:0!=d&&1!=d&&U(a,b.name+li("[",c)+" = "+d+" not binary")}e=b.ud;for(f=1;null!=e;e=e.next,f++){var g=function(e){U(a,b.name+li("[",c)+" = "+d+" not "+e+" "+k+"; see ("+f+")")},k;k=X(a,e.code);switch(e.hd){case 352:d<k||g("<");break;case 353:d<=k||g("<=");break;case 354:d!=k&&g("=");break;case 355:d>=k||g(">=");break;case 356:d>k||g(">");break;case 357:d==k&&g("<>")}}f=1;
for(e=b.ua;null!=e;e=e.next,f++)g=fi(null,Zh(d)),hj(a,e.code,g)||U(a,b.name+li("[",c)+" = "+d+" not in specified set; see ("+f+")")}function yj(a,b,c){function d(d){xj(a,b,c,d);e=mi(b.T,ui(c));return e.value.U=d}var e=ki(a,b.T,c);return null!=e?e.value.U:null!=b.assign?d(X(a,b.assign)):null!=b.Ba?d(X(a,b.Ba)):null!=b.Vc?(null!=b.Vc.P&&U(a,"cannot convert "+di(b.Vc)+" to floating-point number"),d(b.Vc.U)):U(a,"no value for "+b.name+li("[",c))}
function zj(a,b){null!=b.ka?xj(a,b.W,b.ka.D,b.ka.value.U):b.value=yj(a,b.W,b.D)}function Aj(a,b,c){var d={};d.W=b;d.D=c;if(1==b.data)for(c=b.T.$a,b.data=2,d.ka=b.T.head;null!=d.ka&&(lj(a,b.domain,d.ka.D,d,zj)&&pj(a,b.name,d.ka.D),d.ka!=c);d.ka=d.ka.next);d.ka=null;lj(a,d.W.domain,d.D,d,zj)&&pj(a,b.name,d.D);return d.value}
function Bj(a,b,c,d){var e,f=1;for(e=b.ud;null!=e;e=e.next,f++){var g;g=jj(a,e.code);switch(e.hd){case 352:0>Ti(d,g)||(g=di(g),U(a,b.name+li("[",c)+" = "+di(d)+" not < "+g));break;case 353:0>=Ti(d,g)||(g=di(g),U(a,b.name+li("[",c)+" = "+di(d)+" not <= "+g));break;case 354:0!=Ti(d,g)&&(g=di(g),U(a,b.name+li("[",c)+" = "+di(d)+" not = "+g));break;case 355:0<=Ti(d,g)||(g=di(g),U(a,b.name+li("[",c)+" = "+di(d)+" not >= "+g));break;case 356:0<Ti(d,g)||(g=di(g),U(a,b.name+li("[",c)+" = "+di(d)+" not > "+
g));break;case 357:0==Ti(d,g)&&(g=di(g),U(a,b.name+li("[",c)+" <> "+di(d)+" not > "+g))}}f=1;for(e=b.ua;null!=e;e=e.next,f++)g=fi(null,ei(d)),hj(a,e.code,g)||U(a,b.name,li("[",c)+" = "+di(d)+" not in specified set; see ("+f+")")}function Cj(a,b,c){function d(d){Bj(a,b,c,d);e=mi(b.T,ui(c));e.value.ba=ei(d);return d}var e=ki(a,b.T,c);return null!=e?ei(e.value.ba):null!=b.assign?d(jj(a,b.assign)):null!=b.Ba?d(jj(a,b.Ba)):null!=b.Vc?ei(b.Vc):U(a,"no value for "+b.name+li("[",c))}
function Dj(a,b){null!=b.ka?Bj(a,b.W,b.ka.D,b.ka.value.ba):b.value=Cj(a,b.W,b.D)}function Ej(a,b,c){var d={};d.W=b;d.D=c;if(1==b.data)for(c=b.T.$a,b.data=2,d.ka=b.T.head;null!=d.ka&&(lj(a,b.domain,d.ka.D,d,Dj)&&pj(a,b.name,d.ka.D),d.ka!=c);d.ka=d.ka.next);d.ka=null;lj(a,d.W.domain,d.D,d,Dj)&&pj(a,b.name,d.D);return d.value}function Fj(a,b){var c=qj(b.domain);switch(b.type){case 118:case 113:case 101:Aj(a,b,c);break;case 124:Ej(a,b,c)}return 0}
function Gj(a,b){var c=b.A,d=b.D,e=ki(a,c.T,d);null!=e?d=e.value.A:(e=mi(c.T,ui(d)),d=e.value.A={},d.H=0,d.A=c,d.ka=e,null==c.S?d.S=0:d.S=X(a,c.S),null==c.Z?d.Z=0:c.Z==c.S?d.Z=d.S:d.Z=X(a,c.Z),d.na=0,d.stat=0,d.w=d.M=0);b.me=d}function Hj(a,b,c){var d={};d.A=b;d.D=c;lj(a,d.A.domain,d.D,d,Gj)&&pj(a,b.name,d.D);return d.me}
function Ij(a,b,c){var d=null,e=ki(a,b.T,c);if(null!=e)c=e.value.K;else{e=mi(b.T,ui(c));c=e.value.K={};c.ia=0;c.K=b;c.ka=e;c.form=Jj(a,b.code);if(null==b.S&&null==b.Z)c.form=cj(a,c.form,function(a){d=a}),c.S=c.Z=-d;else if(null!=b.S&&null==b.Z)c.form=bj(a,1,c.form,-1,Jj(a,b.S)),c.form=cj(a,c.form,function(a){d=a}),c.S=-d,c.Z=0;else if(null==b.S&&null!=b.Z)c.form=bj(a,1,c.form,-1,Jj(a,b.Z)),c.form=cj(a,c.form,function(a){d=a}),c.S=0,c.Z=-d;else if(b.S==b.Z)c.form=bj(a,1,c.form,-1,Jj(a,b.S)),c.form=
cj(a,c.form,function(a){d=a}),c.S=c.Z=-d;else{var f=null,g=null;c.form=cj(a,c.form,function(a){d=a});cj(a,Jj(a,b.S),function(a){f=a});cj(a,Jj(a,b.Z),function(a){g=a});c.S=yi(a,f,d);c.Z=yi(a,g,d)}c.stat=0;c.w=c.M=0}return c}function Kj(a,b){b.me=Ij(a,b.K,b.D)}function Lj(a,b,c){var d={};d.K=b;d.D=c;lj(a,d.K.domain,d.D,d,Kj)&&pj(a,b.name,d.D);return d.me}function Mj(a,b){var c=qj(b.domain);Lj(a,b,c);return 0}
function Nj(a,b){var c=X(a,b.code.a.loop.x);switch(b.code.Wa){case 377:b.value=xi(a,b.value,c);break;case 378:b.value=Ai(a,b.value,c);break;case 379:b.value>c&&(b.value=c);break;case 380:b.value<c&&(b.value=c)}return 0}
function X(a,b){var c,d,e;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return b.value.U;switch(b.Wa){case 301:c=b.a.U;break;case 304:d=null;for(e=b.a.W.list;null!=e;e=e.next)d=fi(d,jj(a,e.x));c=Aj(a,b.a.W.W,d);break;case 307:d=null;for(e=b.a.A.list;null!=e;e=e.next)d=fi(d,jj(a,e.x));e=Hj(a,b.a.A.A,d);switch(b.a.A.Ac){case 1:null==e.A.S?c=-t:c=e.S;break;case 2:null==e.A.Z?c=+t:c=e.Z;break;case 3:c=e.stat;break;case 4:c=e.w;break;case 5:c=e.M}break;case 308:d=null;for(e=b.a.K.list;null!=
e;e=e.next)d=fi(d,jj(a,e.x));e=Lj(a,b.a.K.K,d);switch(b.a.K.Ac){case 1:null==e.K.S?c=-t:c=e.S;break;case 2:null==e.K.Z?c=+t:c=e.Z;break;case 3:c=e.stat;break;case 4:c=e.w;break;case 5:c=e.M}break;case 312:c=Oj(a.Fd);break;case 313:c=Qi(a.Fd)/2147483648;break;case 314:c=Ri(a);break;case 315:c=Math.round(Date.now()/1E3);break;case 316:e=jj(a,b.a.a.x);null==e.P?c=e.U:tg(e.P,function(a){c=a})&&U(a,"cannot convert "+di(e)+" to floating-point number");break;case 321:c=+X(a,b.a.a.x);break;case 322:c=-X(a,
b.a.a.x);break;case 324:c=Math.abs(X(a,b.a.a.x));break;case 325:c=Math.ceil(X(a,b.a.a.x));break;case 326:c=Math.floor(X(a,b.a.a.x));break;case 327:c=Fi(a,X(a,b.a.a.x));break;case 328:c=Gi(a,X(a,b.a.a.x));break;case 329:c=Hi(a,X(a,b.a.a.x));break;case 330:c=Ii(a,X(a,b.a.a.x));break;case 331:c=Ji(a,X(a,b.a.a.x));break;case 332:c=Ki(a,X(a,b.a.a.x));break;case 333:c=Li(X(a,b.a.a.x));break;case 346:c=Mi(X(a,b.a.a.x),X(a,b.a.a.y));break;case 334:c=Ni(a,X(a,b.a.a.x),0);break;case 347:c=Ni(a,X(a,b.a.a.x),
X(a,b.a.a.y));break;case 335:c=Oi(a,X(a,b.a.a.x),0);break;case 348:c=Oi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 338:c=xi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 339:c=yi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 340:c=zi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 341:c=Ai(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 342:c=Bi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 343:c=Ci(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 344:c=Di(X(a,b.a.a.x),X(a,b.a.a.y));break;case 345:c=Ei(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 349:c=
Pi(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 350:c=Si(a,X(a,b.a.a.x),X(a,b.a.a.y));break;case 336:c=nj(a,b.a.a.x).size;break;case 337:e=jj(a,b.a.a.x);null==e.P?d=String(e.U):d=e.P;c=d.length;break;case 370:var f;e=jj(a,b.a.a.x);null==e.P?d=String(e.U):d=e.P;e=jj(a,b.a.a.y);null==e.P?f=String(e.U):f=e.P;c=Pj(a,d,f);break;case 373:kj(a,b.a.a.x)?c=X(a,b.a.a.y):null==b.a.a.z?c=0:c=X(a,b.a.a.z);break;case 375:c=+t;for(e=b.a.list;null!=e;e=e.next)d=X(a,e.x),c>d&&(c=d);break;case 376:c=-t;for(e=b.a.list;null!=
e;e=e.next)d=X(a,e.x),c<d&&(c=d);break;case 377:e={};e.code=b;e.value=0;oj(a,b.a.loop.domain,e,Nj);c=e.value;break;case 378:e={};e.code=b;e.value=1;oj(a,b.a.loop.domain,e,Nj);c=e.value;break;case 379:e={};e.code=b;e.value=+t;oj(a,b.a.loop.domain,e,Nj);e.value==+t&&U(a,"min{} over empty set; result undefined");c=e.value;break;case 380:e={},e.code=b,e.value=-t,oj(a,b.a.loop.domain,e,Nj),e.value==-t&&U(a,"max{} over empty set; result undefined"),c=e.value}b.valid=1;return b.value.U=c}
function jj(a,b){var c,d;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return ei(b.value.ba);switch(b.Wa){case 302:c=$h(b.a.P);break;case 303:c=ei(b.a.index.Ca.value);break;case 305:var e,f;e=null;for(f=b.a.W.list;null!=f;f=f.next)e=fi(e,jj(a,f.x));c=Ej(a,b.a.W.W,e);break;case 317:c=Zh(X(a,b.a.a.x));break;case 351:var g=jj(a,b.a.a.x);d=jj(a,b.a.a.y);null==g.P?e=String(g.U):e=g.P;null==d.P?f=String(d.U):f=d.P;c=$h(e+f);break;case 373:c=kj(a,b.a.a.x)?jj(a,b.a.a.y):null==b.a.a.z?Zh(0):jj(a,
b.a.a.z);break;case 369:case 374:var k;c=jj(a,b.a.a.x);null==c.P?d=String(c.U):d=c.P;369==b.Wa?(e=X(a,b.a.a.y),e!=Math.floor(e)&&U(a,"substr('...', "+e+"); non-integer second argument"),(1>e||e>d.length+1)&&U(a,"substr('...', "+e+"); substring out of range")):(e=X(a,b.a.a.y),k=X(a,b.a.a.z),e==Math.floor(e)&&k==Math.floor(k)||U(a,"substr('...', "+e+", "+k+"); non-integer second and/or third argument"),(1>e||0>k||e+k>d.length+1)&&U(a,"substr('...', "+e+", "+k+"); substring out of range"));c=$h(d.slice(e-
1,e+k-1));break;case 371:e=X(a,b.a.a.x),f=jj(a,b.a.a.y),null==f.P?g=String(f.U):g=f.P,d=Qj(a,e,g),c=$h(d)}b.valid=1;b.value.ba=ei(c);return c}function Rj(a,b){var c=0;switch(b.code.Wa){case 381:b.value&=kj(a,b.code.a.loop.x);b.value||(c=1);break;case 382:b.value|=kj(a,b.code.a.loop.x),b.value&&(c=1)}return c}
function kj(a,b){var c,d;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return b.value.og;switch(b.Wa){case 318:c=0!=X(a,b.a.a.x);break;case 323:c=!kj(a,b.a.a.x);break;case 352:118==b.a.a.x.type?c=X(a,b.a.a.x)<X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0>Ti(c,d));break;case 353:118==b.a.a.x.type?c=X(a,b.a.a.x)<=X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0>=Ti(c,d));break;case 354:118==b.a.a.x.type?c=X(a,b.a.a.x)==X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0==Ti(c,d));break;
case 355:118==b.a.a.x.type?c=X(a,b.a.a.x)>=X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0<=Ti(c,d));break;case 356:118==b.a.a.x.type?c=X(a,b.a.a.x)>X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0<Ti(c,d));break;case 357:118==b.a.a.x.type?c=X(a,b.a.a.x)!=X(a,b.a.a.y):(c=jj(a,b.a.a.x),d=jj(a,b.a.a.y),c=0!=Ti(c,d));break;case 358:c=kj(a,b.a.a.x)&&kj(a,b.a.a.y);break;case 359:c=kj(a,b.a.a.x)||kj(a,b.a.a.y);break;case 365:c=Sj(a,b.a.a.x);c=hj(a,b.a.a.y,c);break;case 366:c=Sj(a,b.a.a.x);c=!hj(a,b.a.a.y,
c);break;case 367:d=nj(a,b.a.a.x);c=1;for(d=d.head;null!=d;d=d.next)if(!hj(a,b.a.a.y,d.D)){c=0;break}break;case 368:d=nj(a,b.a.a.x);c=1;for(d=d.head;null!=d;d=d.next)if(hj(a,b.a.a.y,d.D)){c=0;break}break;case 381:c={};c.code=b;c.value=1;oj(a,b.a.loop.domain,c,Rj);c=c.value;break;case 382:c={},c.code=b,c.value=0,oj(a,b.a.loop.domain,c,Rj),c=c.value}b.valid=1;return b.value.og=c}
function Sj(a,b){var c;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return ui(b.value.D);switch(b.Wa){case 309:c=null;for(var d=b.a.list;null!=d;d=d.next)c=fi(c,jj(a,d.x));break;case 319:c=fi(null,jj(a,b.a.a.x))}b.valid=1;b.value.D=ui(c);return c}function Tj(a,b){var c;switch(b.code.Wa){case 383:c=Sj(a,b.code.a.loop.x);null==ki(a,b.value,c)&&Wi(b.value,c);break;case 384:Wi(b.value,qj(b.code.a.loop.domain))}return 0}
function nj(a,b){var c,d;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return Xi(a,b.value.set);switch(b.Wa){case 306:c=null;for(d=b.a.set.list;null!=d;d=d.next)c=fi(c,jj(a,d.x));c=Xi(a,wj(a,b.a.set.set,c));break;case 310:c=ni(a,117,b.v);for(d=b.a.list;null!=d;d=d.next)gi(a,c,Sj(a,d.x));break;case 360:d=nj(a,b.a.a.x);for(c=nj(a,b.a.a.y).head;null!=c;c=c.next)null==ki(a,d,c.D)&&Wi(d,ui(c.D));c=d;break;case 361:var e=nj(a,b.a.a.x);d=nj(a,b.a.a.y);c=ni(a,117,e.v);for(e=e.head;null!=e;e=e.next)null==
ki(a,d,e.D)&&Wi(c,ui(e.D));break;case 362:d=nj(a,b.a.a.x);c=nj(a,b.a.a.y);for(var f=ni(a,117,d.v),e=d.head;null!=e;e=e.next)null==ki(a,c,e.D)&&Wi(f,ui(e.D));for(e=c.head;null!=e;e=e.next)null==ki(a,d,e.D)&&Wi(f,ui(e.D));c=f;break;case 363:e=nj(a,b.a.a.x);d=nj(a,b.a.a.y);c=ni(a,117,e.v);for(e=e.head;null!=e;e=e.next)null!=ki(a,d,e.D)&&Wi(c,ui(e.D));break;case 364:e=nj(a,b.a.a.x);d=nj(a,b.a.a.y);var g,k;c=ni(a,117,e.v+d.v);for(e=e.head;null!=e;e=e.next)for(f=d.head;null!=f;f=f.next){g=ui(e.D);for(k=
f.D;null!=k;k=k.next)g=fi(g,ei(k.ba));Wi(c,g)}break;case 372:d=X(a,b.a.a.x);c=X(a,b.a.a.y);e=null==b.a.a.z?1:X(a,b.a.a.z);f=ni(a,117,1);g=Yi(a,d,c,e);for(k=1;k<=g;k++)Wi(f,fi(null,Zh(Zi(a,d,c,e,k))));c=f;break;case 373:c=kj(a,b.a.a.x)?nj(a,b.a.a.y):nj(a,b.a.a.z);break;case 383:d={};d.code=b;d.value=ni(a,117,b.v);oj(a,b.a.loop.domain,d,Tj);c=d.value;break;case 384:d={},d.code=b,d.value=ni(a,117,b.v),oj(a,b.a.loop.domain,d,Tj),c=d.value}b.valid=1;b.value.set=Xi(a,c);return c}function Uj(){}
function hj(a,b,c){var d,e,f;switch(b.Wa){case 306:f=null;for(e=b.a.set.list;null!=e;e=e.next)f=fi(f,jj(a,e.x));b=wj(a,b.a.set.set,f);f=Vi(c,b.v);d=null!=ki(a,b,f);break;case 310:d=0;f=Vi(c,b.v);for(e=b.a.list;null!=e&&!(c=Sj(a,e.x),d=0==Ui(f,c));e=e.next);break;case 360:d=hj(a,b.a.a.x,c)||hj(a,b.a.a.y,c);break;case 361:d=hj(a,b.a.a.x,c)&&!hj(a,b.a.a.y,c);break;case 362:f=hj(a,b.a.a.x,c);a=hj(a,b.a.a.y,c);d=f&&!a||!f&&a;break;case 363:d=hj(a,b.a.a.x,c)&&hj(a,b.a.a.y,c);break;case 364:if(d=hj(a,b.a.a.x,
c)){for(f=1;f<=b.a.a.x.v;f++)c=c.next;d=hj(a,b.a.a.y,c)}break;case 372:d=X(a,b.a.a.x);e=X(a,b.a.a.y);null==b.a.a.z?f=1:f=X(a,b.a.a.z);Yi(a,d,e,f);if(null!=c.ba.P){d=0;break}c=c.ba.U;if(0<f&&!(d<=c&&c<=e)||0>f&&!(e<=c&&c<=d)){d=0;break}d=Zi(a,d,e,f,((c-d)/f+.5|0)+1)==c;break;case 373:d=kj(a,b.a.a.x)?hj(a,b.a.a.y,c):hj(a,b.a.a.z,c);break;case 383:U(a,"implementation restriction; in/within setof{} not allowed");break;case 384:f=Vi(c,b.v),d=0==lj(a,b.a.loop.domain,f,null,Uj)}return d}
function Vj(a,b){switch(b.code.Wa){case 377:var c;c=Jj(a,b.code.a.loop.x);for(null==b.value?b.value=c:b.$a.next=c;null!=c;c=c.next)b.$a=c}return 0}
function Jj(a,b){var c;b.X&&b.valid&&(b.valid=0,dj(b.type,b.value));if(b.valid)return aj(b.value.form);switch(b.Wa){case 307:var d=null;for(c=b.a.A.list;null!=c;c=c.next)d=fi(d,jj(a,c.x));c=Hj(a,b.a.A.A,d);d={B:1};d.A=c;d.next=null;c=d;break;case 320:c=$i(X(a,b.a.a.x));break;case 321:c=bj(a,0,$i(0),1,Jj(a,b.a.a.x));break;case 322:c=bj(a,0,$i(0),-1,Jj(a,b.a.a.x));break;case 338:c=bj(a,1,Jj(a,b.a.a.x),1,Jj(a,b.a.a.y));break;case 339:c=bj(a,1,Jj(a,b.a.a.x),-1,Jj(a,b.a.a.y));break;case 341:c=118==b.a.a.x.type?
bj(a,X(a,b.a.a.x),Jj(a,b.a.a.y),0,$i(0)):bj(a,X(a,b.a.a.y),Jj(a,b.a.a.x),0,$i(0));break;case 342:c=bj(a,Bi(a,1,X(a,b.a.a.y)),Jj(a,b.a.a.x),0,$i(0));break;case 373:c=kj(a,b.a.a.x)?Jj(a,b.a.a.y):null==b.a.a.z?$i(0):Jj(a,b.a.a.z);break;case 377:c={};c.code=b;c.value=$i(0);c.$a=null;oj(a,b.a.loop.domain,c,Vj);c=c.value;for(var e,f=0,d=c;null!=d;d=d.next)null==d.A?f=xi(a,f,d.B):d.A.na=xi(a,d.A.na,d.B);e=c;c=null;for(d=e;null!=d;d=e)e=d.next,null==d.A&&0!=f?(d.B=f,f=0,d.next=c,c=d):null!=d.A&&0!=d.A.na&&
(d.B=d.A.na,d.A.na=0,d.next=c,c=d)}b.valid=1;b.value.form=aj(c);return c}var Wj=exports.mpl_tab_num_args=function(a){return a.df},Xj=exports.mpl_tab_get_arg=function(a,b){return a.a[b]};exports.mpl_tab_get_args=function(a){return a.a};
var Yj=exports.mpl_tab_num_flds=function(a){return a.Za},Zj=exports.mpl_tab_get_name=function(a,b){return a.name[b]},ak=exports.mpl_tab_get_type=function(a,b){return a.type[b]},bk=exports.mpl_tab_get_num=function(a,b){return a.U[b]},ck=exports.mpl_tab_get_str=function(a,b){return a.P[b]},dk=exports.mpl_tab_set_num=function(a,b,c){a.type[b]="N";a.U[b]=c},ek=exports.mpl_tab_set_str=function(a,b,c){a.type[b]="S";a.P[b]=c};
function fk(a,b){var c=a.Lc,d,e,f;f=0;for(d=b.C.Nc.list;null!=d;d=d.next)switch(f++,d.code.type){case 118:c.type[f]="N";c.U[f]=X(a,d.code);c.P[f][0]="\x00";break;case 124:e=jj(a,d.code),null==e.P?(c.type[f]="N",c.U[f]=e.U,c.P[f][0]="\x00"):(c.type[f]="S",c.U[f]=0,c.P[f]=e.P)}c=a.Lc;c.link.writeRecord(c)&&U(a,"error on writing data to table "+a.lb.C.tab.name);return 0}function gk(a,b){kj(a,b.code)||U(a,"check"+li("[",qj(b.domain))+" failed");return 0}
function hk(a,b,c){var d=c.value.set;ik(a,b.name+li("[",c.D)+(null==d.head?" is empty":":"));for(b=d.head;null!=b;b=b.next)ik(a," "+li("(",b.D))}function jk(a,b,c){switch(b.type){case 118:case 113:case 101:ik(a,b.name+li("[",c.D)+" = "+c.value.U);break;case 124:ik(a,b.name+li("[",c.D)+" = "+di(c.value.ba))}}
function kk(a,b,c,d){0==d||4==d?ik(a,b.name+li("[",c.D)+".val = "+c.value.A.w):1==d?ik(a,b.name+li("[",c.D)+".lb = "+(null==c.value.A.A.S?-t:c.value.A.S)):2==d?ik(a,b.name+li("[",c.D)+".ub = "+(null==c.value.A.A.Z?+t:c.value.A.Z)):3==d?ik(a,b.name+li("[",c.D)+".status = "+c.value.A.stat):5==d&&ik(a,b.name+li("[",c.D)+".dual = "+c.value.A.M)}
function lk(a,b,c,d){0==d||4==d?ik(a,b.name+li("[",c.D)+".val = "+c.value.K.w):1==d?ik(a,b.name+li("[",c.D)+".lb = "+(null==c.value.K.K.S?-t:c.value.K.S)):2==d?ik(a,b.name+li("[",c.D)+".ub = "+(null==c.value.K.K.Z?+t:c.value.K.Z)):3==d?ik(a,b.name+li("[",c.D)+".status = "+c.value.K.stat):5==d&&ik(a,b.name+li("[",c.D)+".dual = "+c.value.K.M)}
function mk(a,b){for(var c,d=b.list;null!=d;d=d.next)if(111==d.type)c=d.C.Ca,ik(a,c.name+" = "+di(c.value));else if(122==d.type){var e=d.C.set;null!=e.assign?oj(a,e.domain,e,vj):(null!=e.Xc&&0==e.data&&uj(a,e),null!=e.T.head&&wj(a,e,e.T.head.D));null==e.T.head&&ik(a,e.name+" has empty content");for(c=e.T.head;null!=c;c=c.next)hk(a,e,c)}else if(120==d.type)for(e=d.C.W,null!=e.assign?oj(a,e.domain,e,Fj):null!=e.T.head&&(124!=e.type?Aj(a,e,e.T.head.D):Ej(a,e,e.T.head.D)),null==e.T.head&&ik(a,e.name+
" has empty content"),c=e.T.head;null!=c;c=c.next)jk(a,e,c);else if(127==d.type)for(e=d.C.A,null==e.T.head&&ik(a,e.name+" has empty content"),c=e.T.head;null!=c;c=c.next)kk(a,e,c,0);else if(103==d.type)for(e=d.C.K,null==e.T.head&&ik(a,e.name+" has empty content"),c=e.T.head;null!=c;c=c.next)lk(a,e,c,0);else if(108==d.type)if(e=d.C.code,304==e.Wa||305==e.Wa||306==e.Wa||307==e.Wa||308==e.Wa){c=a;var f={value:{}},g=void 0;f.D=null;for(g=e.a.W.list||e.a.A.list;null!=g;g=g.next)f.D=fi(f.D,jj(c,g.x));switch(e.Wa){case 304:f.value.U=
Aj(c,e.a.W.W,f.D);jk(c,e.a.W.W,f);break;case 305:f.value.ba=Ej(c,e.a.W.W,f.D);jk(c,e.a.W.W,f);break;case 306:f.value.set=wj(c,e.a.set.set,f.D);hk(c,e.a.set.set,f);break;case 307:f.value.A=Hj(c,e.a.A.A,f.D);kk(c,e.a.A.A,f,e.a.A.Ac);break;case 308:f.value.K=Lj(c,e.a.K.K,f.D),lk(c,e.a.K.K,f,e.a.K.Ac)}}else switch(c=a,e.type){case 118:e=X(c,e);ik(c,String(e));break;case 124:e=jj(c,e);ik(c,di(e));break;case 114:e=kj(c,e);ik(c,e?"true":"false");break;case 126:e=Sj(c,e);ik(c,li("(",e));break;case 106:e=
nj(c,e);0==e.head&&ik(c,"set is empty");for(e=e.head;null!=e;e=e.next)ik(c," "+li("(",e.D));break;case 110:for(f=void 0,e=Jj(c,e),null==e&&ik(c,"linear form is empty"),f=e;null!=f;f=f.next)null==f.A?ik(c," "+f.B):ik(c," "+f.B+" "+f.A.A.name+li("[",f.A.ka.D))}return 0}function nk(a,b){null==a.Dg?"\n"==b?(a.ee(a.cd,a.je),a.cd=""):a.cd+=b:a.Dg(b)}function ok(a,b){for(var c=0;c<b.length;c++)nk(a,b[c])}
function pk(a,b){var c,d,e,f,g,k=jj(a,b.xd);null==k.P?d=String(k.U):d=k.P;c=b.list;for(f=0;f<d.length;f++)if("%"==d[f])if(e=f++,"%"==d[f])nk(a,"%");else{if(null==c)break;for(;"-"==d[f]||"+"==d[f]||" "==d[f]||"#"==d[f]||"0"==d[f];)f++;for(;wa(d[f]);)f++;if("."==d[f])for(f++;wa(d[f]);)f++;if("d"==d[f]||"i"==d[f]||"e"==d[f]||"E"==d[f]||"f"==d[f]||"F"==d[f]||"g"==d[f]||"G"==d[f]){switch(c.code.type){case 118:g=X(a,c.code);break;case 124:k=jj(a,c.code);null!=k.P&&U(a,"cannot convert "+di(k)+" to floating-point number");
g=k.U;break;case 114:g=kj(a,c.code)?1:0}"d"==d[f]||"i"==d[f]?(-2147483647<=g&&2147483647>=g||U(a,"cannot convert "+g+" to integer"),ok(a,xa(d.slice(e,f+1),Math.floor(g+.5)|0))):ok(a,xa(d.slice(e,f+1),g))}else if("s"==d[f]){switch(c.code.type){case 118:g=String(X(a,c.code));break;case 114:g=kj(a,c.code)?"T":"F";break;case 124:k=jj(a,c.code),null==k.P?g=String(k.U):g=k.P}ok(a,xa(d.slice(e,f+1),g))}else U(a,"format specifier missing or invalid");c=c.next}else"\\"==d[f]?(f++,"t"==d[f]?nk(a,"\t"):"n"==
d[f]?nk(a,"\n"):"\x00"==d[f]?U(a,"invalid use of escape character \\ in format control string"):nk(a,d[f])):nk(a,d[f]);return 0}function qk(a,b){for(var c=a.lb,d=b.list;null!=d;d=d.next)rk(a,d);a.lb=c;return 0}
function rk(a,b){a.lb=b;switch(b.type){case 103:y("Generating "+b.C.K.name+"...");var c=b.C.K;oj(a,c.domain,c,Mj);break;case 125:switch(b.C.tab.type){case 112:y("Reading "+b.C.tab.name+"...");break;case 119:y("Writing "+b.C.tab.name+"...")}var c=b.C.tab,d,e,f,g;a.Lc=f={};f.id=0;f.link=null;f.df=0;f.a=null;f.Za=0;f.name=null;f.type=null;f.U=null;f.P=null;for(d=c.a;null!=d;d=d.next)f.df++;f.a=Array(1+f.df);for(g=1;g<=f.df;g++)f.a[g]=null;g=0;for(d=c.a;null!=d;d=d.next){g++;var k=jj(a,d.code);null==
k.P?e=String(k.U):e=k.P;f.a[g]=e}switch(c.type){case 112:g=c.C.ua.set;null!=g&&(g.data&&U(a,g.name+" already provided with data"),mi(g.T,null).value.set=ni(a,117,g.aa),g.data=1);for(e=c.C.ua.list;null!=e;e=e.next)e.W.data&&U(a,e.W.name+" already provided with data"),e.W.data=1;for(e=c.C.ua.Ue;null!=e;e=e.next)f.Za++;for(e=c.C.ua.list;null!=e;e=e.next)f.Za++;f.name=Array(1+f.Za);f.type=Array(1+f.Za);f.U=new Float64Array(1+f.Za);f.P=Array(1+f.Za);g=0;for(e=c.C.ua.Ue;null!=e;e=e.next)g++,f.name[g]=e.name,
f.type[g]="?",f.U[g]=0,f.P[g]="";for(e=c.C.ua.list;null!=e;e=e.next)g++,f.name[g]=e.name,f.type[g]="?",f.U[g]=0,f.P[g]="";for(sk(a,"R");;){for(g=1;g<=f.Za;g++)f.type[g]="?";g=a;d=g.Lc;d=d.link.readRecord(d);0<d&&U(g,"error on reading data from table "+g.lb.C.tab.name);if(d)break;for(g=1;g<=f.Za;g++)"?"==f.type[g]&&U(a,"field "+f.name[g]+" missing in input table");d=null;g=0;for(e=c.C.ua.Ue;null!=e;e=e.next)switch(g++,f.type[g]){case "N":d=fi(d,Zh(f.U[g]));break;case "S":d=fi(d,$h(f.P[g]))}null!=c.C.ua.set&&
gi(a,c.C.ua.set.T.head.value.set,ui(d));for(e=c.C.ua.list;null!=e;e=e.next)switch(g++,null!=ki(a,e.W.T,d)&&U(a,e.W.name+li("[",d)+" already defined"),k=mi(e.W.T,ui(d)),e.W.type){case 118:case 113:case 101:"N"!=f.type[g]&&U(a,e.W.name+" requires numeric data");k.value.U=f.U[g];break;case 124:switch(f.type[g]){case "N":k.value.ba=Zh(f.U[g]);break;case "S":k.value.ba=$h(f.P[g])}}}a.Lc=null;break;case 119:for(d=c.C.Nc.list;null!=d;d=d.next)f.Za++;f.name=Array(1+f.Za);f.type=Array(1+f.Za);f.U=new Float64Array(1+
f.Za);f.P=Array(1+f.Za);g=0;for(d=c.C.Nc.list;null!=d;d=d.next)g++,f.name[g]=d.name,f.type[g]="?",f.U[g]=0,f.P[g]="";sk(a,"W");oj(a,c.C.Nc.domain,c,fk);c=a.Lc;c.link.flush(c);a.Lc=null}break;case 102:y("Checking (line "+b.gb+")...");c=b.C.Mg;oj(a,c.domain,c,gk);break;case 104:ik(a,"Display statement at line "+b.gb);c=b.C.Ng;oj(a,c.domain,c,mk);break;case 121:c=b.C.ih;null==c.Ia?a.je=null:(f=jj(a,c.Ia),a.je=null==f.P?f.U:f.P);oj(a,c.domain,c,pk);break;case 109:c=b.C.Pg,oj(a,c.domain,c,qk)}}
function tk(a){var b;for(b=a.uc;null!=b;b=b.next)switch(b.type){case 122:b.C.set.T=ni(a,106,b.C.set.v);break;case 120:switch(b.C.W.type){case 118:case 113:case 101:b.C.W.T=ni(a,118,b.C.W.v);break;case 124:b.C.W.T=ni(a,124,b.C.W.v)}break;case 127:b.C.A.T=ni(a,107,b.C.A.v);break;case 103:b.C.K.T=ni(a,105,b.C.K.v)}}
function uk(a,b,c){a.gb=0;a.Uc=0;a.m="\n";a.b=0;a.Db=0;a.i="";a.value=0;a.Df=201;a.Cf=0;a.Bf="";a.Ef=0;a.Re=0;a.Se=0;a.If=0;a.Hf=0;a.Gf="";a.Jf=0;ja(a.context,0," ",60);a.mc=0;a.af=c;a.$e=b||"input";$g(a);V(a)}function vk(a,b,c){null==c?a.ee=function(a){y(a)}:(a.ee=c,a.eh=b);a.cd=""}function ik(a,b){a.ee(b,a.je)}function wk(a){0<a.cd.length&&(a.ee(a.cd,a.je),a.cd="")}
function U(a,b){var c;switch(a.I){case 1:case 2:c=Error(a.$e+":"+a.gb+": "+b);c.line=a.gb;c.column=a.Uc;for(var d;0<a.mc;)a.mc--,d=a.context[0],ha(a.context,0,a.context,1,59),a.context[59]=d;y("Context: "+a.gb+" > "+(" "==a.context[0]?"":"...")+a.context.join("").trim());break;case 3:d=null==a.lb?0:a.lb.gb;var e=null==a.lb?0:a.lb.Uc;c=Error(d+": "+b);c.line=d;c.column=e}a.I=4;throw c;}
function ah(a,b){switch(a.I){case 1:case 2:y(a.$e+":"+a.gb+": warning: "+b);break;case 3:y(a.Uf+":"+(null==a.lb?0:a.lb.gb)+": warning: "+b)}}
var Ld=exports.mpl_initialize=function(){var a={gb:0,Uc:0,m:0,b:0,Db:0,i:"",value:0,Df:0,Cf:0,Bf:"",Ef:0,Re:0,Se:0,If:0,Hf:0,Gf:"",Jf:0};a.context=Array(60);ja(a.context,0," ",60);a.mc=0;a.oc=0;a.$={};a.uc=null;a.Lf=0;a.ng=0;a.mg=0;a.Ie=0;a.Qb=0;a.lg=null;a.vh="";a.wh="";a.Fd=qg();a.Kf=0;a.lb=null;a.Lc=null;a.h=0;a.n=0;a.o=null;a.g=null;a.af=null;a.$e=null;a.ee=null;a.eh=null;a.Dg=null;a.je=null;a.I=0;a.Uf=null;a.sh="";return a},Nd=exports.mpl_read_model=function(a,b,c,d){function e(){y(a.gb+" line"+
(1==a.gb?"":"s")+" were read");a.af=null;return a.I}0!=a.I&&x("mpl_read_model: invalid call sequence");null==c&&x("mpl_read_model: no input specified");a.I=1;y("Reading model section from "+b+" ...");uk(a,b,c);Sh(a);null==a.uc&&U(a,"empty model section not allowed");a.Uf=a.$e;tk(a);if(eh(a,"data")){if(d)return ah(a,"data section ignored"),e();a.oc=1;V(a);241!=a.b&&U(a,"semicolon missing where expected");V(a);a.I=2;y("Reading data section from "+b+" ...");wi(a)}Ph(a);return e()},Pd=exports.mpl_read_data=
function(a,b,c){1!=a.I&&2!=a.I&&x("mpl_read_data: invalid call sequence");null==c&&x("mpl_read_data: no input specified");a.I=2;y("Reading data section from "+b+" ...");a.oc=1;uk(a,b,c);Qh(a,"data")&&(V(a),241!=a.b&&U(a,"semicolon missing where expected"),V(a));wi(a);Ph(a);y(a.gb+" line"+(1==a.gb?"":"s")+" were read");a.af=null;return a.I},Rd=exports.mpl_generate=function(a,b,c,d){1!=a.I&&2!=a.I&&x("mpl_generate: invalid call sequence");a.I=3;a.te=d;vk(a,b,c);for(b=a.uc;null!=b&&(rk(a,b),123!=a.lb.type);b=
b.next);a.lb=b;wk(a);for(b=a.uc;null!=b;b=b.next)if(127==b.type)for(c=b.C.A,c=c.T.head;null!=c;c=c.next);for(b=a.uc;null!=b;b=b.next)if(103==b.type)for(c=b.C.K,c=c.T.head;null!=c;c=c.next)for(c.value.K.ia=++a.h,d=c.value.K.form;null!=d;d=d.next)d.A.ka.value.A.H=-1;for(b=a.uc;null!=b;b=b.next)if(127==b.type)for(c=b.C.A,c=c.T.head;null!=c;c=c.next)0!=c.value.A.H&&(c.value.A.H=++a.n);a.o=Array(1+a.h);for(d=1;d<=a.h;d++)a.o[d]=null;for(b=a.uc;null!=b;b=b.next)if(103==b.type)for(c=b.C.K,c=c.T.head;null!=
c;c=c.next)d=c.value.K.ia,a.o[d]=c.value.K;for(d=1;d<=a.h;d++);a.g=Array(1+a.n);for(d=1;d<=a.n;d++)a.g[d]=null;for(b=a.uc;null!=b;b=b.next)if(127==b.type)for(c=b.C.A,c=c.T.head;null!=c;c=c.next)d=c.value.A.H,0!=d&&(a.g[d]=c.value.A);for(d=1;d<=a.n;d++);y("Model has been successfully generated");return a.I},Sd=exports.mpl_get_prob_name=function(a){return a.Uf},Td=exports.mpl_get_num_rows=function(a){3!=a.I&&x("mpl_get_num_rows: invalid call sequence");return a.h},be=exports.mpl_get_num_cols=function(a){3!=
a.I&&x("mpl_get_num_cols: invalid call sequence");return a.n},Ud=exports.mpl_get_row_name=function(a,b){3!=a.I&&x("mpl_get_row_name: invalid call sequence");1<=b&&b<=a.h||x("mpl_get_row_name: i = "+b+"; row number out of range");var c=a.o[b].K.name,c=c+li("[",a.o[b].ka.D).slice(0,255);255==c.length&&(c=c.slice(0,252)+"...");return c},ie=exports.mpl_get_row_kind=function(a,b){var c;3!=a.I&&x("mpl_get_row_kind: invalid call sequence");1<=b&&b<=a.h||x("mpl_get_row_kind: i = "+b+"; row number out of range");
switch(a.o[b].K.type){case 103:c=411;break;case 116:c=je;break;case 115:c=ke}return c},Vd=exports.mpl_get_row_bnds=function(a,b,c){var d;3!=a.I&&x("mpl_get_row_bnds: invalid call sequence");1<=b&&b<=a.h||x("mpl_get_row_bnds: i = "+b+"; row number out of range");d=a.o[b];a=null==d.K.S?-t:d.S;b=null==d.K.Z?+t:d.Z;a==-t&&b==+t?(d=Wd,a=b=0):b==+t?(d=Xd,b=0):a==-t?(d=Yd,a=0):d=d.K.S!=d.K.Z?Zd:$d;c(a,b);return d},he=exports.mpl_get_mat_row=function(a,b,c,d){var e=0;3!=a.I&&x("mpl_get_mat_row: invalid call sequence");
1<=b&&b<=a.h||x("mpl_get_mat_row: i = "+b+"; row number out of range");for(a=a.o[b].form;null!=a;a=a.next)e++,null!=c&&(c[e]=a.A.H),null!=d&&(d[e]=a.B);return e},ae=exports.mpl_get_row_c0=function(a,b){var c;3!=a.I&&x("mpl_get_row_c0: invalid call sequence");1<=b&&b<=a.h||x("mpl_get_row_c0: i = "+b+"; row number out of range");c=a.o[b];return null==c.K.S&&null==c.K.Z?-c.S:0},ce=exports.mpl_get_col_name=function(a,b){3!=a.I&&x("mpl_get_col_name: invalid call sequence");1<=b&&b<=a.n||x("mpl_get_col_name: j = "+
b+"; column number out of range");var c=a.g[b].A.name,c=c+li("[",a.g[b].ka.D);255==c.length&&(c=c.slice(0,252)+"...");return c},de=exports.mpl_get_col_kind=function(a,b){var c;3!=a.I&&x("mpl_get_col_kind: invalid call sequence");1<=b&&b<=a.n||x("mpl_get_col_kind: j = "+b+"; column number out of range");switch(a.g[b].A.type){case 118:c=421;break;case 113:c=ee;break;case 101:c=fe}return c},ge=exports.mpl_get_col_bnds=function(a,b,c){var d;3!=a.I&&x("mpl_get_col_bnds: invalid call sequence");1<=b&&b<=
a.n||x("mpl_get_col_bnds: j = "+b+"; column number out of range");d=a.g[b];a=null==d.A.S?-t:d.S;b=null==d.A.Z?+t:d.Z;a==-t&&b==+t?(d=Wd,a=b=0):b==+t?(d=Xd,b=0):a==-t?(d=Yd,a=0):d=d.A.S!=d.A.Z?Zd:$d;c(a,b);return d},me=exports.mpl_has_solve_stmt=function(a){3!=a.I&&x("mpl_has_solve_stmt: invalid call sequence");return a.Qb},ne=exports.mpl_put_row_soln=function(a,b,c,d,e){a.o[b].stat=c;a.o[b].w=d;a.o[b].M=e},oe=exports.mpl_put_col_soln=function(a,b,c,d,e){a.g[b].stat=c;a.g[b].w=d;a.g[b].M=e},pe=exports.mpl_postsolve=
function(a){(3!=a.I||a.Kf)&&x("mpl_postsolve: invalid call sequence");var b;a.Kf=1;for(b=a.lb;null!=b;b=b.next)rk(a,b);a.lb=null;wk(a);y("Model has been successfully processed");return a.I},xk="Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),yk="January February March April May June July August September October November December".split(" ");function zk(a){for(var b="";0<a;)b+="^",a--;return b}
function Ak(a,b,c,d,e,f){y("Input string passed to str2time:");y(b);y(zk(c+1));y("Format string passed to str2time:\n");y(d);y(zk(e+1));U(a,f)}
function Pj(a,b,c){function d(){Ak(a,b,p,c,u,"time zone offset value incomplete or invalid")}function e(){Ak(a,b,p,c,u,"time zone offset value out of range")}function f(){b[p]!=c[u]&&Ak(a,b,p,c,u,"character mismatch");p++}var g,k,h,l,n,m,q,r,p,u;k=h=l=n=m=q=-1;r=2147483647;for(u=p=0;u<c.length;u++)if("%"==c[u])if(u++,"b"==c[u]||"h"==c[u]){var v;for(0<=h&&Ak(a,b,p,c,u,"month multiply specified");" "==b[p];)p++;for(h=1;12>=h;h++){v=yk[h-1];var H=!1;for(g=0;2>=g;g++)if(p[g].toUpperCase()!=v[g].toUpperCase()){H=
!0;break}if(!H){p+=3;for(g=3;"\x00"!=v[g]&&b[p].toUpperCase()==v[g].toUpperCase();g++)p++;break}}12<h&&Ak(a,b,p,c,u,"abbreviated month name missing or invalid")}else if("d"==c[u]){for(0<=l&&Ak(a,b,p,c,u,"day multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||Ak(a,b,p,c,u,"day missing or invalid");l=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(l=10*l+(b[p++]-0));1<=l&&31>=l||Ak(a,b,p,c,u,"day out of range")}else if("H"==c[u]){for(0<=n&&Ak(a,b,p,c,u,"hour multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=
b[p]||Ak(a,b,p,c,u,"hour missing or invalid");n=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(n=10*n+(b[p++]-0));0<=n&&23>=n||Ak(a,b,p,c,u,"hour out of range")}else if("m"==c[u]){for(0<=h&&Ak(a,b,p,c,u,"month multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||Ak(a,b,p,c,u,"month missing or invalid");h=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(h=10*h+(b[p++]-0));1<=h&&12>=h||Ak(a,b,p,c,u,"month out of range")}else if("M"==c[u]){for(0<=m&&Ak(a,b,p,c,u,"minute multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||
Ak(a,b,p,c,u,"minute missing or invalid");m=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(m=10*m+(b[p++]-0));0<=m&&59>=m||Ak(a,b,p,c,u,"minute out of range")}else if("S"==c[u]){for(0<=q&&Ak(a,b,p,c,u,"second multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||Ak(a,b,p,c,u,"second missing or invalid");q=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(q=10*q+(b[p++]-0));0<=q&&60>=q||Ak(a,b,p,c,u,"second out of range")}else if("y"==c[u]){for(0<=k&&Ak(a,b,p,c,u,"year multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||
Ak(a,b,p,c,u,"year missing or invalid");k=b[p++]-0;"0"<=b[p]&&"9">=b[p]&&(k=10*k+(b[p++]-0));k+=69<=k?1900:2E3}else if("Y"==c[u]){for(0<=k&&Ak(a,b,p,c,u,"year multiply specified");" "==b[p];)p++;"0"<=b[p]&&"9">=b[p]||Ak(a,b,p,c,u,"year missing or invalid");k=0;for(g=1;4>=g&&"0"<=b[p]&&"9">=b[p];g++)k=10*k+(b[p++]-0);1<=k&&4E3>=k||Ak(a,b,p,c,u,"year out of range")}else if("z"==c[u]){var E;for(2147483647!=r&&Ak(a,b,p,c,u,"time zone offset multiply specified");" "==b[p];)p++;if("Z"==b[p])E=n=m=0,p++;
else{"+"==b[p]?(E=1,p++):"-"==b[p]?(E=-1,p++):Ak(a,b,p,c,u,"time zone offset sign missing");n=0;for(g=1;2>=g;g++)"0"<=b[p]&&"9">=b[p]||d(),n=10*n+(b[p++]-0);23<n&&e();":"==b[p]&&(p++,"0"<=b[p]&&"9">=b[p]||d());m=0;if("0"<=b[p]&&"9">=b[p]){for(g=1;2>=g;g++)"0"<=b[p]&&"9">=b[p]||d(),m=10*m+(b[p++]-0);59<m&&e()}}r=E*(60*n+m)}else"%"==c[u]?f():Ak(a,b,p,c,u,"invalid conversion specifier");else" "!=c[u]&&f();0>k&&(k=1970);0>h&&(h=1);0>l&&(l=1);0>n&&(n=0);0>m&&(m=0);0>q&&(q=0);2147483647==r&&(r=0);g=vg(l,
h,k);return 60*(60*(24*(g-vg(1,1,1970))+n)+m)+q-60*r}function Bk(a,b,c){y("Format string passed to time2str:");y(b);y(zk(c));U(a,"invalid conversion specifier")}function Ck(a){return(a+vg(1,1,1970))%7+1}function Dk(a){a=vg(1,1,a)-vg(1,1,1970);switch(Ck(a)){case 1:a+=0;break;case 2:--a;break;case 3:a-=2;break;case 4:a-=3;break;case 5:a+=3;break;case 6:a+=2;break;case 7:a+=1}Ck(a);return a}
function Qj(a,b,c){var d,e=0,f=0,g=0,k,h,l,n="",m;-62135596800<=b&&64092211199>=b||U(a,"time2str("+b+",...); argument out of range");b=Math.floor(b+.5);k=Math.abs(b)/86400;d=Math.floor(k);0>b&&(d=k==Math.floor(k)?-d:-(d+1));wg(d+vg(1,1,1970),function(a,b,c){g=a;f=b;e=c});h=b-86400*d|0;k=h/60;h%=60;b=k/60;k%=60;for(l=0;l<c.length;l++){if("%"==c[l])if(l++,"a"==c[l])m=xk[Ck(d)-1].slice(0,3);else if("A"==c[l])m=xk[Ck(d)-1];else if("b"==c[l]||"h"==c[l])m=yk[f-1].slice(0,3);else if("B"==c[l])m=yk[f-1];
else if("C"==c[l])m=String(Math.floor(e/100));else if("d"==c[l])m=String(g);else if("D"==c[l])m=f+"/"+g+"/"+e%100;else if("e"==c[l])m=String(g);else if("F"==c[l])xa(m,e+"-"+f+"-"+g);else if("g"==c[l]){var q;d<Dk(e)?q=e-1:q=d<Dk(e+1)?e:e+1;m=String(q%100)}else"G"==c[l]?(d<Dk(e)?q=e-1:q=d<Dk(e+1)?e:e+1,m=String(q)):"H"==c[l]?m=String(b):"I"==c[l]?m=String(0==b?12:12>=b?b:b-12):"j"==c[l]?m=String(vg(g,f,e)-vg(1,1,e)+1):"k"==c[l]?m=String(b):"l"==c[l]?m=String(0==b?12:12>=b?b:b-12):"m"==c[l]?m=String(f):
"M"==c[l]?m=String(k):"p"==c[l]?m=11>=b?"AM":"PM":"P"==c[l]?m=11>=b?"am":"pm":"r"==c[l]?m=(0==b?12:12>=b?b:b-12)+":"+k+":"+h+" "+(11>=b?"AM":"PM"):"R"==c[l]?m=b+":"+k:"S"==c[l]?m=String(h):"T"==c[l]?m=b+":"+k+":"+h:"u"==c[l]?m=String(Ck(d)):"U"==c[l]?(m=vg(1,1,e)-vg(1,1,1970),m+=7-Ck(m),m=String((d+7-m)/7)):"V"==c[l]?(q=d<Dk(e)?d-Dk(e-1):d<Dk(e+1)?d-Dk(e):d-Dk(e+1),m=String(q/7+1)):"w"==c[l]?m=String(Ck(d)%7):"W"==c[l]?(m=vg(1,1,e)-vg(1,1,1970),m+=(8-Ck(m))%7,m=String((d+7-m)/7)):"y"==c[l]?m=String(e%
100):"Y"==c[l]?m=String(e):"%"==c[l]?m="%":Bk(a,c,l);else m=c[l];n+=m}return n}var Ek={};function sk(a,b){var c=a.Lc,d=Ek[c.a[1].toLowerCase()];d?c.link=new d(c,b,a.te):U(a,"Invalid table driver '"+c.a[1]+"'");null==c.link&&U(a,"error on opening table "+a.lb.C.tab.name)}var Fk=exports.mpl_tab_drv_register=function(a,b){Ek[a.toLowerCase()]=b};
function Gk(a,b,c){this.mode=b;this.Ia=null;this.count=0;this.m="\n";this.Jb=0;this.sb="";this.Za=0;this.Ra=[];this.te=c;this.jg=0;this.ye=1;this.kg=2;this.ze=3;2>Wj(a)&&x("csv_driver: file name not specified\n");this.Ia=Xj(a,2);if("R"==b){c?(this.data=c(a.a,b),this.cursor=0):x("csv_driver: unable to open "+this.Ia);this.Ag=0;for(Hk(this);;){Hk(this);if(this.Jb==this.ye)break;this.Jb!=this.ze&&x(this.Ia+":"+this.count+": invalid field name\n");this.Za++;for(b=Yj(a);1<=b&&Zj(a,b)!=this.sb;b--);this.Ra[this.Za]=
b}for(b=Yj(a);1<=b&&"RECNO"!=Zj(a,b);b--);this.Ra[0]=b}else if("W"==b){this.data="";c=Yj(a);for(b=1;b<=c;b++)this.data+=Zj(a,b)+(b<c?",":"\n");this.count++}}
function Hk(a){if(-1==a.m)a.Jb=a.jg,a.sb="EOF";else if("\n"==a.m){if(a.Jb=a.ye,a.sb="EOR",Ik(a),","==a.m&&x(a.Ia+":"+a.count+": empty field not allowed\n"),"\n"==a.m&&x(a.Ia+":"+a.count+": empty record not allowed\n"),"#"==a.m&&1==a.count)for(;"#"==a.m;){for(;"\n"!=a.m;)Ik(a);Ik(a);a.Ag++}}else if(","==a.m&&Ik(a),"'"==a.m||'"'==a.m){var b=a.m;a.sb="";a.Jb=a.ze;for(Ik(a);;){if(a.m==b&&(Ik(a),a.m!=b))if(","==a.m||"\n"==a.m)break;else x(a.Ia+":"+a.count+": invalid field");a.sb+=a.m;Ik(a)}0==a.sb.length&&
x(a.Ia+":"+a.count+": empty field not allowed")}else{a.sb="";for(a.Jb=a.kg;","!=a.m&&"\n"!=a.m;)"'"!=a.m&&'"'!=a.m||x(a.Ia+":"+a.count+": invalid use of single or double quote within field"),a.sb+=a.m,Ik(a);0==a.sb.length&&x(a.Ia+":"+a.count+": empty field not allowed");tg(a.sb,function(){})&&(a.Jb=a.ze)}}function Ik(a){var b;for("\n"==a.m&&a.count++;;)if(a.cursor<a.data.length?b=a.data[a.cursor++]:b=-1,"\r"!=b){"\n"!=b&&ta(b)&&x(a.Ia+":"+a.count+": invalid control character "+b);break}a.m=b}
Gk.prototype.readRecord=function(a){var b;0<this.Ra[0]&&dk(a,this.Ra[0],this.count-this.Ag-1);for(b=1;b<=this.Za;b++){Hk(this);if(this.Jb==this.jg)return-1;if(this.Jb==this.ye){var c=this.Za-b+1;1==c?x(this.Ia+":"+this.count+": one field missing"):x(this.Ia+":"+this.count+": "+c+" fields missing")}else if(this.Jb==this.kg){if(0<this.Ra[b]){var d=0;tg(this.sb,function(a){d=a});dk(a,this.Ra[b],d)}}else this.Jb==this.ze&&0<this.Ra[b]&&ek(a,this.Ra[b],this.sb)}Hk(this);this.Jb!=this.ye&&x(this.Ia+":"+
this.count+": too many fields");return 0};Gk.prototype.writeRecord=function(a){var b,c,d,e;c=Yj(a);for(b=1;b<=c;b++){switch(ak(a,b)){case "N":this.data+=bk(a,b);break;case "S":this.data+='"';d=ck(a,b);for(e=0;d.length>e;e++)'"'==d[e]?this.data+='""':this.data+=d[e];this.data+='"'}this.data+=b<c?",":"\n"}this.count++;return 0};Gk.prototype.flush=function(a){this.te(a.a,this.mode,this.data)};Fk("CSV",Gk);
function Jk(a,b,c){this.mode=b;this.Ia=null;2>Wj(a)&&x("json driver: file name not specified");this.Ia=Xj(a,2);if("R"==b)for(this.Ra={},c?(this.data=c(a.a,b),"string"==typeof this.data&&(this.data=JSON.parse(this.data)),this.cursor=1):x("json driver: unable to open "+this.Ia),a=0,b=this.data[0];a<b.length;a++)this.Ra[b[a]]=a;else if("W"==b){this.te=c;c=[];this.data=[c];var d=Yj(a);for(b=1;b<=d;b++)c.push(Zj(a,b))}}
Jk.prototype.writeRecord=function(a){var b,c=Yj(a),d=[];for(b=1;b<=c;b++)switch(ak(a,b)){case "N":d.push(bk(a,b));break;case "S":d.push(ck(a,b))}this.data.push(d);return 0};Jk.prototype.readRecord=function(a){var b=this.data[this.cursor++];if(null==b)return-1;for(var c=1;c<=Yj(a);c++){var d=this.Ra[Zj(a,c)];if(null!=d)switch(d=b[d],typeof d){case "number":dk(a,c,d);break;case "boolean":dk(a,c,Number(d));break;case "string":ek(a,c,d);break;default:x("Unexpected data type "+d+" in "+this.Ia)}}return 0};
Jk.prototype.flush=function(a){this.te(a.a,this.mode,this.data)};Fk("JSON",Jk);function Yb(){var a={bc:0};a.wc=a.ah=a.bh=0;a.name=a.ib=null;a.la=0;a.ce=a.be=0;a.Fb=a.Oc=null;a.Mb=a.rd=null;a.top=null;a.h=a.n=a.O=0;a.qf=a.Rd=null;a.ha=a.se=0;a.he=a.tg=a.Gg=a.vg=0;a.pa=null;a.Ea=null;a.oa=null;a.Sa=null;return a}function Kk(a,b,c){0==c?(b.ga=null,b.next=a.Fb,null==b.next?a.Oc=b:b.next.ga=b,a.Fb=b):(b.ga=a.Oc,b.next=null,null==b.ga?a.Fb=b:b.ga.next=b,a.Oc=b)}
function Lk(a,b){null==b.ga?a.Fb=b.next:b.ga.next=b.next;null==b.next?a.Oc=b.ga:b.next.ga=b.ga}function Mk(a,b){b.na||(b.na=1,Lk(a,b),Kk(a,b,0))}function Nk(a,b,c){0==c?(b.ga=null,b.next=a.Mb,null==b.next?a.rd=b:b.next.ga=b,a.Mb=b):(b.ga=a.rd,b.next=null,null==b.ga?a.Mb=b:b.ga.next=b,a.rd=b)}function Ok(a,b){null==b.ga?a.Mb=b.next:b.ga.next=b.next;null==b.next?a.rd=b.ga:b.next.ga=b.ga}function Pk(a,b){b.na||(b.na=1,Ok(a,b),Nk(a,b,0))}
function Qk(a){var b={};b.ia=++a.ce;b.name=null;b.c=-t;b.f=+t;b.l=null;b.na=0;Kk(a,b,1);return b}function Rk(a){var b={};b.H=++a.be;b.name=null;b.Ua=0;b.c=b.f=b.B=0;b.l=null;b.na=0;b.tb={};b.wb={};Nk(a,b,1);return b}function Sk(a,b,c){var d={};d.o=a;d.g=b;d.j=c;d.ya=null;d.G=a.l;d.va=null;d.L=b.l;null!=d.G&&(d.G.ya=d);null!=d.L&&(d.L.va=d);a.l=b.l=d}function Tk(a,b){var c;c={};c.Xd=b;c.info={};c.link=a.top;a.top=c;return c.info}
function Uk(a){for(var b;null!=a.l;)b=a.l,a.l=b.G,null==b.va?b.g.l=b.L:b.va.L=b.L,null!=b.L&&(b.L.va=b.va)}function Vk(a,b){Uk(b);Lk(a,b)}function Wk(a,b){for(var c;null!=b.l;)c=b.l,b.l=c.L,null==c.ya?c.o.l=c.G:c.ya.G=c.G,null!=c.G&&(c.G.ya=c.ya);Ok(a,b)}
function Zb(a,b,c){var d=cb,e=cb,f=b.h,g=b.n,k,h,l;a.bc=b.dir;a.bc==za?l=1:a.bc==Ea&&(l=-1);a.wc=f;a.ah=g;a.bh=b.O;d&&null!=b.name&&(a.name=b.name);d&&null!=b.ib&&(a.ib=b.ib);a.la=l*b.la;k=Array(1+f);for(h=1;h<=f;h++){var n=b.o[h],m;k[h]=m=Qk(a);d&&null!=n.name&&(m.name=n.name);if(e){var q=n.qa;n.type==Ka?(m.c=-t,m.f=+t):n.type==Sa?(m.c=n.c*q,m.f=+t):n.type==Ta?(m.c=-t,m.f=n.f*q):n.type==Q?(m.c=n.c*q,m.f=n.f*q):n.type==C&&(m.c=m.f=n.c*q)}else n.type==Ka?(m.c=-t,m.f=+t):n.type==Sa?(m.c=n.c,m.f=+t):
n.type==Ta?(m.c=-t,m.f=n.f):n.type==Q?(m.c=n.c,m.f=n.f):n.type==C&&(m.c=m.f=n.c)}for(f=1;f<=g;f++)if(m=b.g[f],h=Rk(a),d&&null!=m.name&&(h.name=m.name),c==Sc&&(h.Ua=Number(m.kind==Fc)),e)for(n=m.za,m.type==Ka?(h.c=-t,h.f=+t):m.type==Sa?(h.c=m.c/n,h.f=+t):m.type==Ta?(h.c=-t,h.f=m.f/n):m.type==Q?(h.c=m.c/n,h.f=m.f/n):m.type==C&&(h.c=h.f=m.c/n),h.B=l*m.B*n,m=m.l;null!=m;m=m.L)Sk(k[m.o.ia],h,m.o.qa*m.j*n);else for(m.type==Ka?(h.c=-t,h.f=+t):m.type==Sa?(h.c=m.c,h.f=+t):m.type==Ta?(h.c=-t,h.f=m.f):m.type==
Q?(h.c=m.c,h.f=m.f):m.type==C&&(h.c=h.f=m.c),h.B=l*m.B,m=m.l;null!=m;m=m.L)Sk(k[m.o.ia],h,m.j);a.ha=c;a.se=e}
function dc(a,b){var c,d,e,f,g,k,h;db(b);Ca(b,a.name);Da(b,a.ib);Fa(b,a.bc);a.bc==za?k=1:a.bc==Ea&&(k=-1);Xa(b,0,k*a.la);for(c=a.Fb;null!=c;c=c.next)c.na=e=La(b,1),Pa(b,e,c.name),d=c.c==-t&&c.f==+t?Ka:c.f==+t?Sa:c.c==-t?Ta:c.c!=c.f?Q:C,Ua(b,e,d,c.c,c.f);g=new Int32Array(1+b.h);h=new Float64Array(1+b.h);for(c=a.Mb;null!=c;c=c.next){e=Oa(b,1);Qa(b,e,c.name);Hc(b,e,c.Ua?Fc:Ma);d=c.c==-t&&c.f==+t?Ka:c.f==+t?Sa:c.c==-t?Ta:c.c!=c.f?Q:C;Va(b,e,d,c.c,c.f);Xa(b,e,k*c.B);f=0;for(d=c.l;null!=d;d=d.L)f++,g[f]=
d.o.na,h[f]=d.j;Za(b,e,f,g,h)}a.h=b.h;a.n=b.n;a.O=b.O;a.qf=new Int32Array(1+a.h);a.Rd=new Int32Array(1+a.n);c=a.Fb;for(e=0;null!=c;c=c.next)a.qf[++e]=c.ia;c=a.Mb;for(e=0;null!=c;c=c.next)a.Rd[++e]=c.H;a.name=a.ib=null;a.la=0;a.Fb=a.Oc=null;a.Mb=a.rd=null}
function Vb(a,b){var c,d,e,f;a.bc==za?d=1:a.bc==Ea&&(d=-1);a.ha==$b?(a.he=b.ra,a.tg=b.wa):a.ha==le?a.Gg=b.bf:a.ha==Sc&&(a.vg=b.Da);if(a.ha==$b){null==a.pa&&(a.pa=new Int8Array(1+a.ce));for(f=1;f<=a.ce;f++)a.pa[f]=0;null==a.oa&&(a.oa=new Int8Array(1+a.be));for(c=1;c<=a.be;c++)a.oa[c]=0}null==a.Sa&&(a.Sa=new Float64Array(1+a.be));for(c=1;c<=a.be;c++)a.Sa[c]=t;if(a.ha!=Sc)for(null==a.Ea&&(a.Ea=new Float64Array(1+a.ce)),f=1;f<=a.ce;f++)a.Ea[f]=t;if(a.ha==$b){for(f=1;f<=a.h;f++)c=b.o[f],e=a.qf[f],a.pa[e]=
c.stat,a.Ea[e]=d*c.M;for(c=1;c<=a.n;c++)d=b.g[c],e=a.Rd[c],a.oa[e]=d.stat,a.Sa[e]=d.w}else if(a.ha==le){for(f=1;f<=a.h;f++)c=b.o[f],e=a.qf[f],a.Ea[e]=d*c.nc;for(c=1;c<=a.n;c++)d=b.g[c],e=a.Rd[c],a.Sa[e]=d.Tb}else if(a.ha==Sc)for(c=1;c<=a.n;c++)d=b.g[c],e=a.Rd[c],a.Sa[e]=d.Va;for(e=a.top;null!=e;e=e.link)e.Xd(a,e.info)}
function Wb(a,b){var c,d,e,f;a.bc==za?e=1:a.bc==Ea&&(e=-1);if(a.ha==$b){b.valid=0;b.ra=a.he;b.wa=a.tg;b.ea=b.la;b.some=0;for(d=1;d<=b.h;d++)c=b.o[d],c.stat=a.pa[d],c.M=a.se?e*a.Ea[d]*c.qa:e*a.Ea[d],c.stat==A?c.M=0:c.stat==M?c.w=c.c:c.stat==P?c.w=c.f:c.stat==Ra?c.w=0:c.stat==Na&&(c.w=c.c);for(d=1;d<=b.n;d++)c=b.g[d],c.stat=a.oa[d],a.se?c.w=a.Sa[d]*c.za:c.w=a.Sa[d],c.stat==A?c.M=0:c.stat==M?c.w=c.c:c.stat==P?c.w=c.f:c.stat==Ra?c.w=0:c.stat==Na&&(c.w=c.c),b.ea+=c.B*c.w;for(d=1;d<=b.h;d++)if(c=b.o[d],
c.stat==A){f=0;for(e=c.l;null!=e;e=e.G)f+=e.j*e.g.w;c.w=f}for(d=1;d<=b.n;d++)if(c=b.g[d],c.stat!=A){f=c.B;for(e=c.l;null!=e;e=e.L)f-=e.j*e.o.M;c.M=f}}else if(a.ha==le){b.bf=a.Gg;b.Zd=b.la;for(d=1;d<=b.h;d++)c=b.o[d],c.nc=a.se?e*a.Ea[d]*c.qa:e*a.Ea[d];for(d=1;d<=b.n;d++)c=b.g[d],a.se?c.Tb=a.Sa[d]*c.za:c.Tb=a.Sa[d],b.Zd+=c.B*c.Tb;for(d=1;d<=b.h;d++){c=b.o[d];f=0;for(e=c.l;null!=e;e=e.G)f+=e.j*e.g.Tb;c.Tb=f}for(d=1;d<=b.n;d++){c=b.g[d];f=c.B;for(e=c.l;null!=e;e=e.L)f-=e.j*e.o.nc;c.nc=f}}else if(a.ha==
Sc){b.Da=a.vg;b.xa=b.la;for(d=1;d<=b.n;d++)c=b.g[d],c.Va=a.Sa[d],b.xa+=c.B*c.Va;for(d=1;d<=b.h;d++){c=b.o[d];f=0;for(e=c.l;null!=e;e=e.G)f+=e.j*e.g.Va;c.Va=f}}}function Xk(a,b){Tk(a,function(a,b){a.ha==$b&&(a.pa[b.p]=A);a.ha!=Sc&&(a.Ea[b.p]=0);return 0}).p=b.ia;Vk(a,b)}
function Yk(a,b){var c,d;c=Tk(a,function(a,b){if(a.ha==$b)if(a.oa[b.q]==A||a.oa[b.q]==M||a.oa[b.q]==P)a.oa[b.q]=a.oa[b.q];else return 1;a.Sa[b.q]=b.Ig+a.Sa[b.q];return 0});c.q=b.H;c.Ig=b.c;a.la+=b.B*b.c;for(d=b.l;null!=d;d=d.L)c=d.o,c.c==c.f?c.f=c.c-=d.j*b.c:(c.c!=-t&&(c.c-=d.j*b.c),c.f!=+t&&(c.f-=d.j*b.c));b.f!=+t&&(b.f-=b.c);b.c=0}
function Zk(a,b){var c,d;c=Tk(a,function(a,b){a.ha==$b&&(a.oa[b.q]=Na);a.Sa[b.q]=b.kh;return 0});c.q=b.H;c.kh=b.c;a.la+=b.B*b.c;for(d=b.l;null!=d;d=d.L)c=d.o,c.c==c.f?c.f=c.c-=d.j*b.c:(c.c!=-t&&(c.c-=d.j*b.c),c.f!=+t&&(c.f-=d.j*b.c));Wk(a,b)}
function $k(a,b){var c,d,e;d=1E-9+1E-12*Math.abs(b.c);b.f-b.c>d||(Tk(a,function(a,b){if(a.ha==$b)if(a.pa[b.p]==A)a.pa[b.p]=A;else if(a.pa[b.p]==Na)a.pa[b.p]=0<=a.Ea[b.p]?M:P;else return 1;return 0}).p=b.ia,c=.5*(b.f+b.c),e=Math.floor(c+.5),Math.abs(c-e)<=d&&(c=e),b.c=b.f=c)}
function al(a,b){var c,d,e,f;f=1E-9+1E-12*Math.abs(b.c);if(b.f-b.c>f)return 0;c=Tk(a,function(a,b){var c,d;if(a.ha==$b)if(a.oa[b.q]==A)a.oa[b.q]=A;else if(a.oa[b.q]==Na){d=b.m;for(c=b.l;null!=c;c=c.next)d-=c.j*a.Ea[c.Ra];a.oa[b.q]=0<=d?M:P}else return 1;return 0});c.q=b.H;c.m=b.B;c.l=null;if(a.ha==$b)for(d=b.l;null!=d;d=d.L)e={},e.Ra=d.o.ia,e.j=d.j,e.next=c.l,c.l=e;c=.5*(b.f+b.c);d=Math.floor(c+.5);Math.abs(c-d)<=f&&(c=d);b.c=b.f=c;return 1}
function bl(a,b){if(.001<b.c||-.001>b.f)return 1;b.c=-t;b.f=+t;Xk(a,b);return 0}function cl(a,b){function c(){e.stat=M;b.f=b.c}function d(){e.stat=P;b.c=b.f}var e;if(.001<b.B&&b.c==-t||-.001>b.B&&b.f==+t)return 1;e=Tk(a,function(a,b){a.ha==$b&&(a.oa[b.q]=b.stat);return 0});e.q=b.H;b.c==-t&&b.f==+t?(e.stat=Ra,b.c=b.f=0):b.f==+t?c():b.c==-t?d():b.c!=b.f?2.220446049250313E-16<=b.B?c():-2.220446049250313E-16>=b.B?d():Math.abs(b.c)<=Math.abs(b.f)?c():d():e.stat=Na;Zk(a,b);return 0}
function dl(a,b){var c;if(a.Ua)if(c=Math.floor(b+.5),1E-5>=Math.abs(b-c))b=c;else return 2;if(a.c!=-t){c=a.Ua?1E-5:1E-5+1E-8*Math.abs(a.c);if(b<a.c-c)return 1;if(b<a.c+.001*c)return a.f=a.c,0}if(a.f!=+t){c=a.Ua?1E-5:1E-5+1E-8*Math.abs(a.f);if(b>a.f+c)return 1;if(b>a.f-.001*c)return a.c=a.f,0}a.c=a.f=b;return 0}
function el(a,b){var c,d,e;e=b.l;d=e.g;c=dl(d,b.c/e.j);if(0!=c)return c;c=Tk(a,function(a,b){var c,d;if(a.ha==$b){if(a.oa[b.q]!=Na)return 1;a.pa[b.p]=Na;a.oa[b.q]=A}if(a.ha!=Sc){d=b.m;for(c=b.l;null!=c;c=c.next)d-=c.j*a.Ea[c.Ra];a.Ea[b.p]=d/b.Ha}return 0});c.p=b.ia;c.q=d.H;c.Ha=e.j;c.m=d.B;c.l=null;if(a.ha!=Sc)for(e=d.l;null!=e;e=e.L)e.o!=b&&(d={},d.Ra=e.o.ia,d.j=e.j,d.next=c.l,c.l=d);Vk(a,b);return 0}
function fl(a,b){var c;a.Ua&&(c=Math.floor(b+.5),b=1E-5>=Math.abs(b-c)?c:Math.ceil(b));if(a.c!=-t&&(c=a.Ua?.001:.001+1E-6*Math.abs(a.c),b<a.c+c))return 0;if(a.f!=+t){c=a.Ua?1E-5:1E-5+1E-8*Math.abs(a.f);if(b>a.f+c)return 4;if(b>a.f-.001*c)return a.c=a.f,3}c=a.c==-t?2:a.Ua&&b>a.c+.5?2:b>a.c+.3*(1+Math.abs(a.c))?2:1;a.c=b;return c}
function gl(a,b){var c;a.Ua&&(c=Math.floor(b+.5),b=1E-5>=Math.abs(b-c)?c:Math.floor(b));if(a.f!=+t&&(c=a.Ua?.001:.001+1E-6*Math.abs(a.f),b>a.f-c))return 0;if(a.c!=-t){c=a.Ua?1E-5:1E-5+1E-8*Math.abs(a.c);if(b<a.c-c)return 4;if(b<a.c+.001*c)return a.f=a.c,3}c=a.f==+t?2:a.Ua&&b<a.f-.5?2:b<a.f-.3*(1+Math.abs(a.f))?2:1;a.f=b;return c}
function hl(a,b){var c,d,e,f,g,k;e=b.l;d=e.g;0<e.j?(g=b.c==-t?-t:b.c/e.j,c=b.f==+t?+t:b.f/e.j):(g=b.f==+t?-t:b.f/e.j,c=b.c==-t?+t:b.c/e.j);if(g==-t)g=0;else if(g=fl(d,g),4==g)return 4;if(c==+t)k=0;else if(3==g)k=0;else if(k=gl(d,c),4==k)return 4;if(!g&&!k)return b.c=-t,b.f=+t,Xk(a,b),0;c=Tk(a,function(a,b){var c,d;if(a.ha==Sc)return 0;d=b.m;for(c=b.l;null!=c;c=c.next)d-=c.j*a.Ea[c.Ra];if(a.ha==$b){c=function(){b.cg?(a.pa[b.p]=0<b.Ha?P:M,a.oa[b.q]=A,a.Ea[b.p]=d/b.Ha):(a.pa[b.p]=A,a.Ea[b.p]=0);return 0};
var e=function(){b.Rf?(a.pa[b.p]=0<b.Ha?M:P,a.oa[b.q]=A,a.Ea[b.p]=d/b.Ha):(a.pa[b.p]=A,a.Ea[b.p]=0);return 0};if(a.oa[b.q]==A)a.pa[b.p]=A,a.Ea[b.p]=0;else if(a.oa[b.q]==M)e();else if(a.oa[b.q]==P)c();else if(a.oa[b.q]==Na){if(1E-7<d&&(0<b.Ha&&b.c!=-t||0>b.Ha&&b.f!=+t||!b.Rf))return a.oa[b.q]=M,e();if(-1E-7>d&&(0<b.Ha&&b.f!=+t||0>b.Ha&&b.c!=-t||!b.cg))return a.oa[b.q]=P,c();if(b.c!=-t&&b.f==+t)a.pa[b.p]=M;else if(b.c==-t&&b.f!=+t)a.pa[b.p]=P;else if(b.c!=-t&&b.f!=+t)a.pa[b.p]=b.Ha*a.Sa[b.q]<=.5*(b.c+
b.f)?M:P;else return 1;a.oa[b.q]=A;a.Ea[b.p]=d/b.Ha}else return 1}a.ha==le&&(a.Ea[b.p]=2.220446049250313E-16<d&&b.Rf||-2.220446049250313E-16>d&&b.cg?d/b.Ha:0);return 0});c.p=b.ia;c.q=d.H;c.Ha=e.j;c.m=d.B;c.c=b.c;c.f=b.f;c.Rf=g;c.cg=k;c.l=null;if(a.ha!=Sc)for(d=d.l;null!=d;d=d.L)d!=e&&(f={},f.Ra=d.o.ia,f.j=d.j,f.next=c.l,c.l=f);Vk(a,b);return g>=k?g:k}
function il(a,b){var c,d,e,f;e=b.l;d=e.o;c=Tk(a,function(a,b){var c,d;if(a.ha==$b){if(a.pa[b.p]==A||a.pa[b.p]==Ra)a.oa[b.q]=a.pa[b.p];else if(a.pa[b.p]==M)a.oa[b.q]=0<b.Ha?P:M;else if(a.pa[b.p]==P)a.oa[b.q]=0<b.Ha?M:P;else return 1;a.pa[b.p]=Na}a.ha!=Sc&&(a.Ea[b.p]+=b.m/b.Ha);c=b.od;for(d=b.l;null!=d;d=d.next)c-=d.j*a.Sa[d.Ra];a.Sa[b.q]=c/b.Ha;return 0});c.p=d.ia;c.q=b.H;c.Ha=e.j;c.od=d.c;c.m=b.B;c.l=null;for(e=d.l;null!=e;e=e.G)e.g!=b&&(f={},f.Ra=e.g.H,f.j=e.j,f.next=c.l,c.l=f,e.g.B-=e.j/c.Ha*c.m);
a.la+=c.od/c.Ha*c.m;0<c.Ha?(d.c=b.f==+t?-t:c.od-c.Ha*b.f,d.f=b.c==-t?+t:c.od-c.Ha*b.c):(d.c=b.c==-t?-t:c.od-c.Ha*b.c,d.f=b.f==+t?+t:c.od-c.Ha*b.f);Wk(a,b)}
function jl(a,b){function c(){e.stat=M;f.f=f.c}function d(){e.stat=P;f.c=f.f}var e,f,g,k,h,l;g=b.l;f=g.o;h=f.c;if(h!=-t)for(k=f.l;null!=k;k=k.G)if(k!=g)if(0<k.j){if(k.g.f==+t){h=-t;break}h-=k.j*k.g.f}else{if(k.g.c==-t){h=-t;break}h-=k.j*k.g.c}l=f.f;if(l!=+t)for(k=f.l;null!=k;k=k.G)if(k!=g)if(0<k.j){if(k.g.c==-t){l=+t;break}l-=k.j*k.g.c}else{if(k.g.f==+t){l=+t;break}l-=k.j*k.g.f}k=0<g.j?h==-t?-t:h/g.j:l==+t?-t:l/g.j;h=0<g.j?l==+t?+t:l/g.j:h==-t?+t:h/g.j;if(b.c!=-t&&(l=1E-9+1E-12*Math.abs(b.c),k<b.c-
l)||b.f!=+t&&(l=1E-9+1E-12*Math.abs(b.f),h>b.f+l))return 1;b.c=-t;b.f=+t;e=Tk(a,function(a,b){if(a.ha==$b)if(a.pa[b.p]==A)a.pa[b.p]=A;else if(a.pa[b.p]==Na)a.pa[b.p]=b.stat;else return 1;return 0});e.p=f.ia;e.stat=-1;g=b.B/g.j;if(2.220446049250313E-16<g)if(f.c!=-t)c();else{if(1E-5<g)return 2;d()}else if(-2.220446049250313E-16>g)if(f.f!=+t)d();else{if(-1E-5>g)return 2;c()}else f.f==+t?c():f.c==-t?d():Math.abs(f.c)<=Math.abs(f.f)?c():d();return 0}
function kl(a,b,c){var d,e=null,f,g,k;d=1;for(g=b.l;null!=g;g=g.G)d<Math.abs(g.j)&&(d=Math.abs(g.j));for(g=b.l;null!=g;g=g.G)if(Math.abs(g.j)<1E-7*d)return 1;d=Tk(a,function(a,b){var c,d,e,f,g;if(a.ha==Sc)return 0;if(a.ha==$b){if(a.pa[b.p]!=A)return 1;for(c=b.l;null!=c;c=c.next){if(a.oa[c.H]!=Na)return 1;a.oa[c.H]=c.stat}}for(c=b.l;null!=c;c=c.next){e=c.m;for(d=c.l;null!=d;d=d.next)e-=d.j*a.Ea[d.Ra];c.m=e}d=null;f=0;for(c=b.l;null!=c;c=c.next)if(e=c.m,g=Math.abs(e/c.Jc),c.stat==M)0>e&&f<g&&(d=c,f=
g);else if(c.stat==P)0<e&&f<g&&(d=c,f=g);else return 1;null!=d&&(a.ha==$b&&(a.pa[b.p]=b.stat,a.oa[d.H]=A),a.Ea[b.p]=d.m/d.Jc);return 0});d.p=b.ia;d.stat=b.c==b.f?Na:0==c?M:P;d.l=null;for(g=b.l;null!=g;g=g.G)if(f=g.g,a.ha!=Sc&&(e={},e.H=f.H,e.stat=-1,e.Jc=g.j,e.m=f.B,e.l=null,e.next=d.l,d.l=e),0==c&&0>g.j||0!=c&&0<g.j?(a.ha!=Sc&&(e.stat=M),f.f=f.c):(a.ha!=Sc&&(e.stat=P),f.c=f.f),a.ha!=Sc)for(f=f.l;null!=f;f=f.L)f!=g&&(k={},k.Ra=f.o.ia,k.j=f.j,k.next=e.l,e.l=k);b.c=-t;b.f=+t;return 0}
function ll(a){var b,c=0,d,e;d=0;for(b=a.l;null!=b;b=b.G)if(0<b.j){if(b.g.c==-t){d=-t;break}d+=b.j*b.g.c}else{if(b.g.f==+t){d=-t;break}d+=b.j*b.g.f}e=0;for(b=a.l;null!=b;b=b.G)if(0<b.j){if(b.g.f==+t){e=+t;break}e+=b.j*b.g.f}else{if(b.g.c==-t){e=+t;break}e+=b.j*b.g.c}if(a.c!=-t&&(b=.001+1E-6*Math.abs(a.c),a.c-b>e)||a.f!=+t&&(b=.001+1E-6*Math.abs(a.f),a.f+b<d))return 51;a.c!=-t&&(b=1E-9+1E-12*Math.abs(a.c),a.c-b>d&&(c=a.c+b<=e?c|1:c|2));a.f!=+t&&(b=1E-9+1E-12*Math.abs(a.f),a.f+b<e&&(c=a.f-b>=d?c|16:
c|32));return c}function ml(a,b,c){a.ha==$b&&(a=Tk(a,function(a,b){if(a.ha!=$b)return 1;a.pa[b.p]=a.pa[b.p]==A?A:b.stat;return 0}),a.p=b.ia,a.stat=b.f==+t?M:b.c==-t?P:b.c!=b.f?0==c?P:M:Na);0==c?b.c=-t:1==c&&(b.f=+t)}
function nl(a){var b,c,d,e,f,g,k,h,l,n,m;h=l=n=m=0;for(d=a.rd;null!=d;d=d.ga)if(d.Ua&&d.c!=d.f&&(0!=d.c||1!=d.f))if(-1E6>d.c||1E6<d.f||4095<d.f-d.c)h++;else if(l++,0!=d.c&&Yk(a,d),e=d.f|0,1!=e){g=2;for(c=4;e>=c;)g++,c+=c;n+=g;b=Tk(a,function(a,b){var c,d,e=a.Sa[b.q];c=1;for(d=2;c<b.n;c++,d+=d)e+=d*a.Sa[b.H+(c-1)];a.Sa[b.q]=e;return 0});b.q=d.H;b.H=0;b.n=g;e<c-1?(c=Qk(a),m++,c.c=-t,c.f=e):c=null;d.f=1;null!=c&&Sk(c,d,1);k=1;for(c=2;k<g;k++,c+=c)for(e=Rk(a),e.Ua=1,e.c=0,e.f=1,e.B=c*d.B,0==b.H&&(b.H=
e.H),f=d.l;null!=f;f=f.L)Sk(f.o,e,c*f.j)}0<l&&y(l+" integer variable(s) were replaced by "+n+" binary ones");0<m&&y(m+" row(s) were added due to binarization");0<h&&y("Binarization failed for "+h+" integer variable(s)")}function ol(a,b){var c,d,e;d=null;for(c=a.l;null!=c;c=c.G)e={},e.ja=b*c.j,e.kc=c.g,e.next=d,d=e;return d}
function pl(a,b,c){var d,e,f;for(d=a;null!=d;d=d.next);e=0;for(d=a;null!=d;d=d.next)if(1!=d.ja)if(-1==d.ja)e++;else break;if(null==d&&b==1-e)return 1;for(d=a;null!=d;d=d.next)0>d.ja&&(b-=d.ja);for(d=a;null!=d;d=d.next)if(Math.abs(d.ja)>b)return 0;e=null;for(d=a;null!=d;d=d.next)if(null==e||Math.abs(e.ja)>Math.abs(d.ja))e=d;f=null;for(d=a;null!=d;d=d.next)d!=e&&(null==f||Math.abs(f.ja)>Math.abs(d.ja))&&(f=d);if(Math.abs(e.ja)+Math.abs(f.ja)<=b+(.001+1E-6*Math.abs(b)))return 0;b=1;for(d=a;null!=d;d=
d.next)0<d.ja?d.ja=1:(d.ja=-1,--b);c(b);return 2}function ql(a,b){var c,d,e,f,g=0,k;for(f=0;1>=f;f++){if(0==f){if(b.f==+t)continue;e=ol(b,1);k=+b.f}else{if(b.c==-t)continue;e=ol(b,-1);k=-b.c}c=pl(e,k,function(a){k=a});if(1==f&&1==c||2==c){g++;if(b.c==-t||b.f==+t)c=null;else for(c=Qk(a),0==f?(c.c=b.c,c.f=+t):(c.c=-t,c.f=b.f),d=b.l;null!=d;d=d.G)Sk(c,d.g,d.j);Uk(b);b.c=-t;for(b.f=k;null!=e;e=e.next)Sk(b,e.kc,e.ja);null!=c&&(b=c)}}return g}
function rl(a,b,c){var d,e;for(d=a;null!=d;d=d.next);e=0;for(d=a;null!=d;d=d.next)if(1!=d.ja)if(-1==d.ja)e++;else break;if(null==d&&b==1-e)return 1;for(d=a;null!=d;d=d.next)0>d.ja&&(b-=d.ja);if(.001>b)return 0;e=1E-9+1E-12*Math.abs(b);for(d=a;null!=d;d=d.next)if(Math.abs(d.ja)<b-e)return 0;b=1;for(d=a;null!=d;d=d.next)0<d.ja?d.ja=1:(d.ja=-1,--b);c(b);return 2}
function sl(a,b){var c,d,e,f,g=0,k;for(f=0;1>=f;f++){if(0==f){if(b.c==-t)continue;e=ol(b,1);k=+b.c}else{if(b.f==+t)continue;e=ol(b,-1);k=-b.f}c=rl(e,k,function(a){k=a});if(1==f&&1==c||2==c){g++;if(b.c==-t||b.f==+t)c=null;else for(c=Qk(a),0==f?(c.c=-t,c.f=b.f):(c.c=b.c,c.f=+t),d=b.l;null!=d;d=d.G)Sk(c,d.g,d.j);Uk(b);b.c=k;for(b.f=+t;null!=e;e=e.next)Sk(b,e.kc,e.ja);null!=c&&(b=c)}}return g}
function tl(a,b,c){var d,e=0,f,g;f=0;for(d=a;null!=d;d=d.next)if(0<d.ja){if(d.kc.c==-t)return e;f+=d.ja*d.kc.c}else{if(d.kc.f==+t)return e;f+=d.ja*d.kc.f}for(d=a;null!=d;d=d.next)d.kc.Ua&&0==d.kc.c&&1==d.kc.f&&(0<d.ja?(a=f,b-d.ja<a&&a<b&&(g=b-a,.001<=g&&d.ja-g>=.01*(1+d.ja)&&(d.ja=g,e++))):(a=f-d.ja,b<a&&a<b-d.ja&&(g=d.ja+(a-b),-.001>=g&&g-d.ja>=.01*(1-d.ja)&&(d.ja=g,f+=a-b,b=a,e++))));c(b);return e}
function ul(a,b){var c,d,e,f,g=Array(2),k;for(f=g[0]=g[1]=0;1>=f;f++){if(0==f){if(b.c==-t)continue;e=ol(b,1);k=+b.c}else{if(b.f==+t)continue;e=ol(b,-1);k=-b.f}g[f]=tl(e,k,function(a){k=a});if(0<g[f]){if(b.c==-t||b.f==+t)c=null;else for(c=Qk(a),0==f?(c.c=-t,c.f=b.f):(c.c=b.c,c.f=+t),d=b.l;null!=d;d=d.G)Sk(c,d.g,d.j);Uk(b);b.c=k;b.f=+t;for(d=e;null!=d;d=d.next)Sk(b,d.kc,d.ja);null!=c&&(b=c)}}return g[0]+g[1]}
function vl(a,b,c){function d(){for(f=b.l;null!=f;f=g){e=f.g;g=f.G;for(k=e.l;null!=k;k=k.L)Mk(a,k.o);Zk(a,e)}Xk(a,b);return 0}var e,f,g,k,h;if(null==b.l){h=bl(a,b);if(0==h)return 0;if(1==h)return bc}if(null==b.l.G)if(e=b.l.g,b.c==b.f){h=el(a,b);if(0==h){for(f=e.l;null!=f;f=f.L)Mk(a,f.o);Zk(a,e);return 0}if(1==h||2==h)return bc}else{h=hl(a,b);if(0<=h&&3>=h){Pk(a,e);if(2<=h)for(f=e.l;null!=f;f=f.L)Mk(a,f.o);3==h&&Zk(a,e);return 0}if(4==h)return bc}h=ll(b);if(51==h)return bc;if(0==(h&15))b.c!=-t&&ml(a,
b,0);else if(1!=(h&15)&&2==(h&15)&&0==kl(a,b,0))return d();if(0==(h&240))b.f!=+t&&ml(a,b,1);else if(16!=(h&240)&&32==(h&240)&&0==kl(a,b,1))return d();if(b.c==-t&&b.f==+t){for(f=b.l;null!=f;f=f.G)Pk(a,f.g);Xk(a,b);return 0}return a.ha==Sc&&c&&0>wl(a,b,1)?bc:0}
function wl(a,b,c){var d,e,f,g,k,h=0,l;k=!1;e=1;for(d=b.l;null!=d;d=d.G)d.g.tb.tb=-t,d.g.wb.wb=+t,e<Math.abs(d.j)&&(e=Math.abs(d.j));g=1E-6*e;if(b.c!=-t){e=null;for(d=b.l;null!=d;d=d.G)if(0<d.j&&d.g.f==+t||0>d.j&&d.g.c==-t)if(null==e)e=d;else{k=!0;break}if(!k){k=b.c;for(d=b.l;null!=d;d=d.G)d!=e&&(k=0<d.j?k-d.j*d.g.f:k-d.j*d.g.c);if(null==e)for(d=b.l;null!=d;d=d.G)d.j>=+g?d.g.tb.tb=d.g.f+k/d.j:d.j<=-g&&(d.g.wb.wb=d.g.c+k/d.j);else e.j>=+g?e.g.tb.tb=k/e.j:e.j<=-g&&(e.g.wb.wb=k/e.j)}}k=!1;if(b.f!=+t){e=
null;for(d=b.l;null!=d;d=d.G)if(0<d.j&&d.g.c==-t||0>d.j&&d.g.f==+t)if(null==e)e=d;else{k=!0;break}if(!k){k=b.f;for(d=b.l;null!=d;d=d.G)d!=e&&(k=0<d.j?k-d.j*d.g.c:k-d.j*d.g.f);if(null==e)for(d=b.l;null!=d;d=d.G)d.j>=+g?d.g.wb.wb=d.g.c+k/d.j:d.j<=-g&&(d.g.tb.tb=d.g.f+k/d.j);else e.j>=+g?e.g.wb.wb=k/e.j:e.j<=-g&&(e.g.tb.tb=k/e.j)}}for(e=b.l;null!=e;)for(d=e.g,e=e.G,g=0;1>=g;g++){f=d.c;l=d.f;if(0==g){if(d.tb.tb==-t)continue;k=fl(d,d.tb.tb)}else{if(d.wb.wb==+t)continue;k=gl(d,d.wb.wb)}if(0==k||1==k)d.c=
f,d.f=l;else if(2==k||3==k){h++;if(c)for(f=d.l;null!=f;f=f.L)f.o!=b&&Mk(a,f.o);if(3==k){Zk(a,d);break}}else if(4==k)return-1}return h}function xl(a,b){var c,d,e;if(null==b.l){e=cl(a,b);if(0==e)return 0;if(1==e)return cc}if(null==b.l.L){var f=function(){il(a,b);if(c.c==-t&&c.f==+t){for(d=c.l;null!=d;d=d.G)Pk(a,d.g);Xk(a,c)}else Mk(a,c);return 0};c=b.l.o;if(c.c==c.f){if(!b.Ua)return f()}else if(!b.Ua){e=jl(a,b);if(0==e)return f();if(1!=e&&2==e)return cc}}return 0}
function ac(a,b){var c,d,e;for(c=a.Fb;null!=c;c=d)d=c.next,c.c==-t&&c.f==+t&&Xk(a,c);for(c=a.Fb;null!=c;c=d)d=c.next,c.c!=-t&&c.f!=+t&&c.c<c.f&&$k(a,c);for(c=a.Mb;null!=c;c=d)d=c.next,c.c==c.f&&Zk(a,c);for(c=a.Mb;null!=c;c=d)d=c.next,c.c!=-t&&c.f!=+t&&c.c<c.f&&(e=al(a,c),0!=e&&1==e&&Zk(a,c));for(c=a.Fb;null!=c;c=c.next)c.na=1;for(c=a.Mb;null!=c;c=c.next)c.na=1;for(d=1;d;){for(d=0;;){c=a.Fb;if(null==c||!c.na)break;d=a;e=c;e.na&&(e.na=0,Lk(d,e),Kk(d,e,1));c=vl(a,c,b);if(0!=c)return c;d=1}for(;;){c=
a.Mb;if(null==c||!c.na)break;d=a;e=c;e.na&&(e.na=0,Ok(d,e),Nk(d,e,1));c=xl(a,c);if(0!=c)return c;d=1}}if(a.ha==Sc&&!b)for(c=a.Fb;null!=c;c=c.next)if(0>wl(a,c,0))return c=bc;return 0}
function Tc(a,b){var c,d,e,f,g;c=ac(a,1);if(0!=c)return c;b.qd&&nl(a);g=0;for(c=a.Oc;null!=c;c=d)if(d=c.ga,(c.c!=-t||c.f!=+t)&&c.c!=c.f&&null!=c.l&&null!=c.l.G){for(f=c.l;null!=f&&(e=f.g,e.Ua&&0==e.c&&1==e.f);f=f.G);null==f&&(g+=ql(a,c))}0<g&&y(g+" hidden packing inequaliti(es) were detected");g=0;for(c=a.Oc;null!=c;c=d)if(d=c.ga,(c.c!=-t||c.f!=+t)&&c.c!=c.f&&null!=c.l&&null!=c.l.G&&null!=c.l.G.G){for(f=c.l;null!=f&&(e=f.g,e.Ua&&0==e.c&&1==e.f);f=f.G);null==f&&(g+=sl(a,c))}0<g&&y(g+" hidden covering inequaliti(es) were detected");
g=0;for(c=a.Oc;null!=c;c=d)d=c.ga,c.c!=c.f&&(g+=ul(a,c));0<g&&y(g+" constraint coefficient(s) were reduced");return 0}function yl(a){var b,c;b=1;for(c=32;55>=c;b++,c++)a.qb[b]=a.qb[b]-a.qb[c]&2147483647;for(c=1;55>=b;b++,c++)a.qb[b]=a.qb[b]-a.qb[c]&2147483647;a.Mf=54;return a.qb[55]}function qg(){var a={},b;a.qb=Array(56);a.qb[0]=-1;for(b=1;55>=b;b++)a.qb[b]=0;a.Mf=0;Md(a,1);return a}
function Md(a,b){var c,d,e=1;b=d=b-0&2147483647;a.qb[55]=d;for(c=21;c;c=(c+21)%55)a.qb[c]=e,e=d-e&2147483647,b&1?b=1073741824+(b>>1):b>>=1,e=e-b&2147483647,d=a.qb[c];yl(a);yl(a);yl(a);yl(a);yl(a)}function Qi(a){return 0<=a.qb[a.Mf]?a.qb[a.Mf--]:yl(a)}function Oj(a){var b;do b=Qi(a);while(2147483648<=b);return b%16777216}function rg(a){a=Qi(a)/2147483647;return-.3*(1-a)+.7*a}var De=1,Fe=2,Ve=1,Re=2,Ce=0,Te=1E-10;function Se(a,b,c){return(b-1)*a.N+c-b*(b-1)/2}
function zl(a,b,c){var d;0==b?(b=1,d=0):Math.abs(a)<=Math.abs(b)?(a=-a/b,d=1/Math.sqrt(1+a*a),b=d*a):(a=-b/a,b=1/Math.sqrt(1+a*a),d=b*a);c(b,d)}
function Ue(a,b,c){for(var d=a.n,e=a.Pb,f=a.C,g,k,h,l,n,m;b<d;b++)l=Se(a,b,b),k=(b-1)*a.N+1,n=(d-1)*a.N+1,Math.abs(f[l])<Te&&Math.abs(c[b])<Te&&(f[l]=c[b]=0),0!=c[b]&&zl(f[l],c[b],function(a,r){g=b;for(h=l;g<=d;g++,h++){var p=f[h],u=c[g];f[h]=a*p-r*u;c[g]=r*p+a*u}g=1;h=k;for(m=n;g<=d;g++,h++,m++)p=e[h],u=e[m],e[h]=a*p-r*u,e[m]=r*p+a*u});Math.abs(c[d])<Te&&(c[d]=0);f[Se(a,d,d)]=c[d]}
Ce&&(check_error=function(a,b){var c=a.n,d=a.Pb,e=a.C,f=a.p,g=a.m,k,h,l,n,m=0;for(k=1;k<=c;k++)for(h=1;h<=c;h++){n=0;for(l=1;l<=c;l++)n+=d[(k-1)*a.N+l]*g[(l-1)*a.N+h];l=f[h];l=k<=l?e[Se(a,k,l)]:0;n=Math.abs(n-l)/(1+Math.abs(l));m<n&&(m=n)}1E-8<m&&y(b+": dmax = "+m+"; relative error too large")});
function Ke(a,b,c,d){a.ta<a.n&&x("scf_solve_it: singular matrix");if(b){b=a.n;var e=a.Pb,f=a.C,g=a.p,k=a.eg,h,l,n;for(h=1;h<=b;h++)k[h]=c[g[h]+d];for(h=1;h<=b;h++)for(l=Se(a,h,h),n=k[h]/=f[l],g=h+1,l++;g<=b;g++,l++)k[g]-=f[l]*n;for(g=1;g<=b;g++)c[g+d]=0;for(h=1;h<=b;h++)for(n=k[h],g=1,l=(h-1)*a.N+1;g<=b;g++,l++)c[g+d]+=e[l]*n}else{b=a.n;e=a.Pb;f=a.C;k=a.p;h=a.eg;for(var m,g=1;g<=b;g++){m=0;l=1;for(n=(g-1)*a.N+1;l<=b;l++,n++)m+=e[n]*c[l+d];h[g]=m}for(g=b;1<=g;g--){m=h[g];l=b;for(n=Se(a,g,b);l>g;l--,
n--)m-=f[n]*h[l];h[g]=m/f[n]}for(g=1;g<=b;g++)c[k[g]+d]=h[g]}}
var gc=exports.glp_scale_prob=function(a,b){function c(a,b){var c,d,e;d=1;for(c=a.o[b].l;null!=c;c=c.G)if(e=Math.abs(c.j),e=e*c.o.qa*c.g.za,null==c.ya||d>e)d=e;return d}function d(a,b){var c,d,e;d=1;for(c=a.o[b].l;null!=c;c=c.G)if(e=Math.abs(c.j),e=e*c.o.qa*c.g.za,null==c.ya||d<e)d=e;return d}function e(a,b){var c,d,e;d=1;for(c=a.g[b].l;null!=c;c=c.L)if(e=Math.abs(c.j),e=e*c.o.qa*c.g.za,null==c.va||d>e)d=e;return d}function f(a,b){var c,d,e;d=1;for(c=a.g[b].l;null!=c;c=c.L)if(e=Math.abs(c.j),e=e*
c.o.qa*c.g.za,null==c.va||d<e)d=e;return d}function g(a){var b,d,e;for(b=d=1;b<=a.h;b++)if(e=c(a,b),1==b||d>e)d=e;return d}function k(a){var b,c,e;for(b=c=1;b<=a.h;b++)if(e=d(a,b),1==b||c<e)c=e;return c}function h(a,b){var c,e,g;for(e=0;1>=e;e++)if(e==b)for(c=1;c<=a.h;c++)g=d(a,c),Ab(a,c,Cb(a,c)/g);else for(c=1;c<=a.n;c++)g=f(a,c),Bb(a,c,Db(a,c)/g)}function l(a){var b,e,f;for(b=e=1;b<=a.h;b++)if(f=d(a,b)/c(a,b),1==b||e<f)e=f;return e}function n(a){var b,c,d;for(b=c=1;b<=a.n;b++)if(d=f(a,b)/e(a,b),
1==b||c<d)c=d;return c}function m(a){var b,h,m=0,v;h=l(a)>n(a);for(b=1;15>=b;b++){v=m;m=k(a)/g(a);if(1<b&&m>.9*v)break;v=a;for(var H=h,E=void 0,B=E=void 0,J=void 0,B=0;1>=B;B++)if(B==H)for(E=1;E<=v.h;E++)J=c(v,E)*d(v,E),Ab(v,E,Cb(v,E)/Math.sqrt(J));else for(E=1;E<=v.n;E++)J=e(v,E)*f(v,E),Bb(v,E,Db(v,E)/Math.sqrt(J))}}b&~(Uc|Vc|Wc|Xc|hc)&&x("glp_scale_prob: flags = "+b+"; invalid scaling options");b&hc&&(b=Uc|Vc|Xc);(function(a,b){function c(a,b,d,e){return a+": min|aij| = "+b+" max|aij| = "+d+" ratio = "+
e+""}var d,e;y("Scaling...");Eb(a);d=g(a);e=k(a);y(c(" A",d,e,e/d));if(.1<=d&&10>=e&&(y("Problem data seem to be well scaled"),b&Xc))return;b&Uc&&(m(a),d=g(a),e=k(a),y(c("GM",d,e,e/d)));b&Vc&&(h(a,l(a)>n(a)),d=g(a),e=k(a),y(c("EQ",d,e,e/d)));if(b&Wc){for(d=1;d<=a.h;d++)Ab(a,d,sg(Cb(a,d)));for(d=1;d<=a.n;d++)Bb(a,d,sg(Db(a,d)));d=g(a);e=k(a);y(c("2N",d,e,e/d))}})(a,b)};
function Qb(a,b){function c(a,b,c,d){var e=a.h,f=a.Ga,g=a.Fa,h=a.Ma;a=a.head[b];if(a<=e)e=1,c[1]=a,d[1]=1;else for(b=f[a-e],e=f[a-e+1]-b,ha(c,1,g,b,e),ha(d,1,h,b,e),c=1;c<=e;c++)d[c]=-d[c];return e}function d(a){var b=od(a.Y,a.h,c,a);a.valid=0==b;return b}function e(a,b,c){var d=a.h,e;if(c<=d){var f=Array(2);e=Array(2);f[1]=c;e[1]=1;b=Me(a.Y,b,1,f,0,e)}else{var g=a.Ga,f=a.Fa,h=a.Ma;e=a.mb;var k;k=g[c-d];c=g[c-d+1];g=0;for(d=k;d<c;d++)e[++g]=-h[d];b=Me(a.Y,b,g,f,k-1,e)}a.valid=0==b;return b}function f(a,
b,c){var d=a.h,e=a.mb,f=a.mb,g=a.h,h=a.Ga,k=a.Fa,l=a.Ma,m=a.head,n,p,q;ha(f,1,b,1,g);for(b=1;b<=g;b++)if(q=c[b],0!=q)if(n=m[b],n<=g)f[n]-=q;else for(p=h[n-g],n=h[n-g+1];p<n;p++)f[k[p]]+=l[p]*q;wd(a.Y,e);for(a=1;a<=d;a++)c[a]+=e[a]}function g(a,b,c){var d=a.h,e=a.mb,f=a.mb,g=a.h,h=a.Ga,k=a.Fa,l=a.Ma,m=a.head,n,p,q,I;for(n=1;n<=g;n++){p=m[n];I=b[n];if(p<=g)I-=c[p];else for(q=h[p-g],p=h[p-g+1];q<p;q++)I+=l[q]*c[k[q]];f[n]=I}yd(a.Y,e);for(a=1;a<=d;a++)c[a]+=e[a]}function k(a,b,c){var d=a.h,e=a.Be,f=a.Jd,
g=a.Ae,h=a.Ce,k;if(c<=d)k=e[c]+f[c]++,g[k]=b,h[k]=1;else{k=a.Ga;var l=a.Fa;a=a.Ma;var m;m=k[c-d];c=k[c-d+1];for(d=m;d<c;d++)k=l[d],k=e[k]+f[k]++,g[k]=b,h[k]=-a[d]}}function h(a,b,c){var d=a.h,e=a.Be,f=a.Jd,g=a.Ae,h=a.Ce,k;if(c<=d){for(d=k=e[c];g[d]!=b;d++);k+=--f[c];g[d]=g[k];h[d]=h[k]}else{k=a.Ga;a=a.Fa;var l,m;m=k[c-d];for(c=k[c-d+1];m<c;m++){l=a[m];for(d=k=e[l];g[d]!=b;d++);k+=--f[l];g[d]=g[k];h[d]=h[k]}}}function l(a,b){var c=a.c,d=a.f,e=a.stat,f,g;f=a.head[a.h+b];switch(e[b]){case M:g=c[f];break;
case P:g=d[f];break;case Ra:g=0;break;case Na:g=c[f]}return g}function n(a,b){var c=a.h,d=a.n,e=a.Ga,g=a.Fa,h=a.Ma,k=a.head,m=a.Gc,n,p,q,I;for(n=1;n<=c;n++)m[n]=0;for(n=1;n<=d;n++)if(p=k[c+n],I=l(a,n),0!=I)if(p<=c)m[p]-=I;else for(q=e[p-c],p=e[p-c+1];q<p;q++)m[g[q]]+=I*h[q];ha(b,1,m,1,c);wd(a.Y,b);f(a,m,b)}function m(a){var b=a.n,c=a.Ta,d=a.Hc,e;e=a.h;var f=a.B,h=a.head,k=a.Gc,l;for(l=1;l<=e;l++)k[l]=f[h[l]];ha(d,1,k,1,e);yd(a.Y,d);g(a,k,d);for(e=1;e<=b;e++){f=a.h;l=a.B;k=h=void 0;h=a.head[f+e];k=
l[h];if(h<=f)k-=d[h];else{l=a.Ga;for(var m=a.Fa,n=a.Ma,p=void 0,q=void 0,p=void 0,p=l[h-f],q=l[h-f+1];p<q;p++)k+=n[p]*d[m[p]]}c[e]=k}}function q(a){var b=a.h,c=a.n,d=a.head,e=a.gd,f=a.gamma,g;a.Ub=1E3;ja(e,1,0,b+c);for(a=1;a<=c;a++)g=d[b+a],e[g]=1,f[a]=1}function r(a,b){var c=a.n,d=a.stat,e=a.Ta,f=a.gamma,g,h,k,l;l=h=0;for(g=1;g<=c;g++){k=e[g];switch(d[g]){case M:if(k>=-b)continue;break;case P:if(k<=+b)continue;break;case Ra:if(-b<=k&&k<=+b)continue;break;case Na:continue}k=k*k/f[g];l<k&&(h=g,l=k)}a.q=
h}function p(a){var b=a.h,c=a.Ab,d=a.Xa,e=a.Xa,f,g;g=a.head[b+a.q];for(f=1;f<=b;f++)e[f]=0;if(g<=b)e[g]=-1;else{var h=a.Ga;f=a.Fa;var k=a.Ma,l;l=h[g-b];for(g=h[g-b+1];l<g;l++)e[f[l]]=k[l]}wd(a.Y,d);e=0;for(f=1;f<=b;f++)0!=d[f]&&(c[++e]=f);a.Wb=e}function u(a){var b=a.h,c=a.Ab,d=a.Xa,e=a.Hc,g,h;h=a.head[b+a.q];for(g=1;g<=b;g++)e[g]=0;if(h<=b)e[h]=-1;else{var k=a.Ga;g=a.Fa;var l=a.Ma,m;m=k[h-b];for(h=k[h-b+1];m<h;m++)e[g[m]]=l[m]}f(a,e,d);e=0;for(g=1;g<=b;g++)0!=d[g]&&(c[++e]=g);a.Wb=e}function v(a,
b){var c=a.Wb,d=a.Ab,e=a.Xa,f,g,h;g=0;for(f=1;f<=c;f++)h=Math.abs(e[d[f]]),g<h&&(g=h);a.mh=g;h=b*(1+.01*g);for(g=0;g<c;)f=d[c],Math.abs(e[f])<h?c--:(g++,d[c]=d[g],d[g]=f);a.nh=g}function H(a,b){var c=a.h,d=a.type,e=a.c,f=a.f,g=a.B,h=a.head,k=a.I,l=a.La,m=a.q,n=a.Ab,p=a.Xa,q=a.nh,I,r,u,v,w,ia,z,B,D;z=0<a.Ta[m]?-1:1;I=h[c+m];d[I]==Q?(m=-1,r=0,D=f[I]-e[I],w=1):(r=m=0,D=t,w=0);for(u=1;u<=q;u++){c=n[u];I=h[c];v=z*p[c];if(0<v)if(1==k&&0>g[I])ia=b*(1+.1*Math.abs(e[I])),B=(e[I]+ia-l[c])/v,I=M;else if(1==
k&&0<g[I])continue;else if(d[I]==Ta||d[I]==Q||d[I]==C)ia=b*(1+.1*Math.abs(f[I])),B=(f[I]+ia-l[c])/v,I=P;else continue;else if(1==k&&0<g[I])ia=b*(1+.1*Math.abs(f[I])),B=(f[I]-ia-l[c])/v,I=P;else if(1==k&&0>g[I])continue;else if(d[I]==Sa||d[I]==Q||d[I]==C)ia=b*(1+.1*Math.abs(e[I])),B=(e[I]-ia-l[c])/v,I=M;else continue;0>B&&(B=0);if(D>B||D==B&&w<Math.abs(v))m=c,r=I,D=B,w=Math.abs(v)}if(!(0==b||0>=m||0==D))for(ia=D,r=m=0,D=t,w=0,u=1;u<=q;u++){c=n[u];I=h[c];v=z*p[c];if(0<v)if(1==k&&0>g[I])B=(e[I]-l[c])/
v,I=M;else if(1==k&&0<g[I])continue;else if(d[I]==Ta||d[I]==Q||d[I]==C)B=(f[I]-l[c])/v,I=P;else continue;else if(1==k&&0<g[I])B=(f[I]-l[c])/v,I=P;else if(1==k&&0>g[I])continue;else if(d[I]==Sa||d[I]==Q||d[I]==C)B=(e[I]-l[c])/v,I=M;else continue;0>B&&(B=0);B<=ia&&w<Math.abs(v)&&(m=c,r=I,D=B,w=Math.abs(v))}a.p=m;0<m&&d[h[m]]==C?a.he=Na:a.he=r;a.oh=z*D}function E(a,b){var c=a.h,d=a.p,e;for(e=1;e<=c;e++)b[e]=0;b[d]=1;yd(a.Y,b)}function B(a,b){var c=a.h,d=a.p,e=a.Hc,f;for(f=1;f<=c;f++)e[f]=0;e[d]=1;g(a,
e,b)}function J(a,b){var c=a.h,d=a.n,e=a.Be,f=a.Jd,g=a.Ae,h=a.Ce,k=a.Yb,l=a.pb,m,n,p,I;for(m=1;m<=d;m++)l[m]=0;for(m=1;m<=c;m++)if(I=b[m],0!=I)for(n=e[m],p=n+f[m];n<p;n++)l[g[n]]-=I*h[n];c=0;for(m=1;m<=d;m++)0!=l[m]&&(k[++c]=m);a.Bc=c}function R(a){var b=a.La,c=a.q,d=a.Wb,e=a.Ab,f=a.Xa,g=a.p,h=a.oh;0<g&&(b[g]=l(a,c)+h);if(0!=h)for(c=1;c<=d;c++)a=e[c],a!=g&&(b[a]+=f[a]*h)}function T(a){var b=a.B,c=a.head,d=a.Wb,e=a.Ab,f=a.Xa,g,h;h=b[c[a.h+a.q]];for(g=1;g<=d;g++)a=e[g],h+=b[c[a]]*f[a];return h}function O(a){var b=
a.Ta,c=a.q,d=a.Bc,e=a.Yb;a=a.pb;var f,g,h;h=b[c]/=a[c];for(g=1;g<=d;g++)f=e[g],f!=c&&(b[f]-=a[f]*h)}function S(a){var b=a.h,c=a.type,d=a.Ga,e=a.Fa,f=a.Ma,g=a.head,h=a.gd,k=a.gamma,l=a.q,m=a.Wb,n=a.Ab,p=a.Xa,I=a.p,q=a.Bc,r=a.Yb,u=a.pb,v=a.Hc,w,ia,z,B,D,E;a.Ub--;B=D=h[g[b+l]]?1:0;for(w=1;w<=b;w++)v[w]=0;for(ia=1;ia<=m;ia++)w=n[ia],h[g[w]]?(v[w]=w=p[w],B+=w*w):v[w]=0;yd(a.Y,v);m=u[l];for(ia=1;ia<=q;ia++)if(a=r[ia],a!=l){w=u[a]/m;n=g[b+a];if(n<=b)E=v[n];else for(E=0,z=d[n-b],p=d[n-b+1];z<p;z++)E-=f[z]*
v[e[z]];p=k[a]+w*w*B+2*w*E;w=(h[n]?1:0)+D*w*w;k[a]=p>=w?p:w;2.220446049250313E-16>k[a]&&(k[a]=2.220446049250313E-16)}c[g[I]]==C?k[l]=1:(k[l]=B/(m*m),2.220446049250313E-16>k[l]&&(k[l]=2.220446049250313E-16))}function G(a){var b=a.h,c=a.head,d=a.stat,e=a.q,f=a.p;a=a.he;var g;if(0>f)switch(d[e]){case M:d[e]=P;break;case P:d[e]=M}else g=c[f],c[f]=c[b+e],c[b+e]=g,d[e]=a}function Z(a,b){var c=a.h,d=a.n,e=a.type,f=a.c,g=a.f,h=a.B,k=a.head,l=a.La,m,n=0,p;b*=.9;for(m=1;m<=c+d;m++)h[m]=0;for(d=1;d<=c;d++){m=
k[d];if(e[m]==Sa||e[m]==Q||e[m]==C)p=b*(1+.1*Math.abs(f[m])),l[d]<f[m]-p&&(h[m]=-1,n++);if(e[m]==Ta||e[m]==Q||e[m]==C)p=b*(1+.1*Math.abs(g[m])),l[d]>g[m]+p&&(h[m]=1,n++)}return n}function Y(a){var b=a.h,c=a.n,d=a.B,e=a.ib;a=a.eb;var f;for(f=1;f<=b;f++)d[f]=0;for(f=1;f<=c;f++)d[b+f]=a*e[f]}function ba(a,b){var c=a.h,d=a.type,e=a.c,f=a.f,g=a.B,h=a.head,k=a.I,l=a.La,m,n,p;for(m=1;m<=c;m++)if(n=h[m],1==k&&0>g[n]){if(p=b*(1+.1*Math.abs(e[n])),l[m]>e[n]+p)return 1}else if(1==k&&0<g[n]){if(p=b*(1+.1*Math.abs(f[n])),
l[m]<f[n]-p)return 1}else{if(d[n]==Sa||d[n]==Q||d[n]==C)if(p=b*(1+.1*Math.abs(e[n])),l[m]<e[n]-p)return 1;if(d[n]==Ta||d[n]==Q||d[n]==C)if(p=b*(1+.1*Math.abs(f[n])),l[m]>f[n]+p)return 1}return 0}function oa(a,b){var c=a.h,d=a.c,e=a.f,f=a.B,g=a.head,h=a.La,k,l,m;for(k=1;k<=c;k++)if(l=g[k],0>f[l]){if(m=b*(1+.1*Math.abs(d[l])),h[k]<d[l]-m)return 1}else if(0<f[l]&&(m=b*(1+.1*Math.abs(e[l])),h[k]>e[l]+m))return 1;return 0}function z(a){var b=a.h,c=a.n,d=a.ib,e=a.head,f=a.La,g,h,k;k=d[0];for(g=1;g<=b;g++)h=
e[g],h>b&&(k+=d[h-b]*f[g]);for(f=1;f<=c;f++)h=e[b+f],h>b&&(k+=d[h-b]*l(a,f));return k}function F(a,b,c){var d=a.h,e=a.type,f=a.c,g=a.f,h=a.I,k=a.head,l=a.La,m,n;if(!(b.s<fc||0<b.cb&&1E3*ma(a.ic)<b.cb||a.da==a.$d||!c&&0!=a.da%b.dc)){m=n=0;for(b=1;b<=d;b++)c=k[b],(e[c]==Sa||e[c]==Q||e[c]==C)&&l[b]<f[c]&&(n+=f[c]-l[b]),(e[c]==Ta||e[c]==Q||e[c]==C)&&l[b]>g[c]&&(n+=l[b]-g[c]),e[c]==C&&m++;y((1==h?" ":"*")+a.da+": obj = "+z(a)+" infeas = "+n+" ("+m+")");a.$d=a.da}}function D(a,b,c,d,e){var f=a.h,g=a.n,
h=a.eb,k=a.head,l=a.stat,m=a.La,n=a.Ta;b.valid=1;a.valid=0;b.Y=a.Y;a.Y=null;ha(b.head,1,k,1,f);b.ra=c;b.wa=d;b.ea=z(a);b.da=a.da;b.some=e;for(a=1;a<=f;a++)c=k[a],c<=f?(c=b.o[c],c.stat=A,c.bind=a,c.w=m[a]/c.qa):(c=b.g[c-f],c.stat=A,c.bind=a,c.w=m[a]*c.za),c.M=0;for(m=1;m<=g;m++)if(c=k[f+m],c<=f){c=b.o[c];c.stat=l[m];c.bind=0;switch(l[m]){case M:c.w=c.c;break;case P:c.w=c.f;break;case Ra:c.w=0;break;case Na:c.w=c.c}c.M=n[m]*c.qa/h}else{c=b.g[c-f];c.stat=l[m];c.bind=0;switch(l[m]){case M:c.w=c.c;break;
case P:c.w=c.f;break;case Ra:c.w=0;break;case Na:c.w=c.c}c.M=n[m]/c.za/h}}var w,ca=2,L=0,K=0,aa=0,N,da,ea;w=function(a){var b=a.h,c=a.n;a=a.O;var d={};d.h=b;d.n=c;d.type=new Int8Array(1+b+c);d.c=new Float64Array(1+b+c);d.f=new Float64Array(1+b+c);d.B=new Float64Array(1+b+c);d.ib=new Float64Array(1+c);d.Ga=new Int32Array(1+c+1);d.Fa=new Int32Array(1+a);d.Ma=new Float64Array(1+a);d.head=new Int32Array(1+b+c);d.stat=new Int8Array(1+c);d.Be=new Int32Array(1+b+1);d.Jd=new Int32Array(1+b);d.Ae=null;d.Ce=
null;d.La=new Float64Array(1+b);d.Ta=new Float64Array(1+c);d.gd=new Int8Array(1+b+c);d.gamma=new Float64Array(1+c);d.Ab=new Int32Array(1+b);d.Xa=new Float64Array(1+b);d.Yb=new Int32Array(1+c);d.pb=new Float64Array(1+c);d.mb=new Float64Array(1+b);d.Gc=new Float64Array(1+b);d.Hc=new Float64Array(1+b);d.fg=new Float64Array(1+b);return d}(a);(function(a,b){var c=a.h,d=a.n,e=a.type,f=a.c,g=a.f,h=a.B,l=a.ib,m=a.Ga,n=a.Fa,p=a.Ma,I=a.head,q=a.stat,r=a.gd,u=a.gamma,w,v;for(w=1;w<=c;w++)v=b.o[w],e[w]=v.type,
f[w]=v.c*v.qa,g[w]=v.f*v.qa,h[w]=0;for(w=1;w<=d;w++)v=b.g[w],e[c+w]=v.type,f[c+w]=v.c/v.za,g[c+w]=v.f/v.za,h[c+w]=v.B*v.za;l[0]=b.la;ha(l,1,h,c+1,d);e=0;for(w=1;w<=d;w++)e<Math.abs(l[w])&&(e=Math.abs(l[w]));0==e&&(e=1);switch(b.dir){case za:a.eb=1/e;break;case Ea:a.eb=-1/e}1>Math.abs(a.eb)&&(a.eb*=1E3);for(w=l=1;w<=d;w++)for(m[w]=l,e=b.g[w].l;null!=e;e=e.L)n[l]=e.o.ia,p[l]=e.o.qa*e.j*e.g.za,l++;m[d+1]=l;ha(I,1,b.head,1,c);m=0;for(w=1;w<=c;w++)v=b.o[w],v.stat!=A&&(m++,I[c+m]=w,q[m]=v.stat);for(w=1;w<=
d;w++)v=b.g[w],v.stat!=A&&(m++,I[c+m]=c+w,q[m]=v.stat);a.valid=1;b.valid=0;a.Y=b.Y;b.Y=null;I=a.h;q=a.n;m=a.Ga;n=a.Fa;p=a.Be;w=a.Jd;for(l=1;l<=I;l++)w[l]=1;for(l=1;l<=q;l++)for(f=m[l],e=m[l+1];f<e;f++)w[n[f]]++;for(l=p[1]=1;l<=I;l++)w[l]>q&&(w[l]=q),p[l+1]=p[l]+w[l];a.Ae=new Int32Array(p[I+1]);a.Ce=new Float64Array(p[I+1]);I=a.h;q=a.n;m=a.head;n=a.stat;ja(a.Jd,1,0,I);for(p=1;p<=q;p++)n[p]!=Na&&(w=m[I+p],k(a,p,w));a.I=0;a.ic=la();a.Of=a.da=b.da;a.$d=-1;a.Ub=0;ja(r,1,0,c+d);for(w=1;w<=d;w++)u[w]=1})(w,
a);for(b.s>=mc&&y("Objective scale factor = "+w.eb+"");;){if(0==ca){ea=d(w);if(0!=ea)return b.s>=Mb&&(y("Error: unable to factorize the basis matrix ("+ea+")"),y("Sorry, basis recovery procedure not implemented yet")),a.Y=w.Y,w.Y=null,a.ra=a.wa=Aa,a.ea=0,a.da=w.da,a.some=0,ea=Tb;ca=w.valid=1;L=K=0}if(0==L&&(n(w,w.La),L=1,0==w.I&&(0<Z(w,b.Ib)?w.I=1:(Y(w),w.I=2),K=0,F(w,b,1)),ba(w,b.Ib))){b.s>=Mb&&y("Warning: numerical instability (primal simplex, phase "+(1==w.I?"I":"II")+")");ca=w.I=0;aa=5;continue}1!=
w.I||oa(w,b.Ib)||(w.I=2,Y(w),K=0,F(w,b,1));0==K&&(m(w),K=1);switch(b.ed){case oc:0==w.Ub&&q(w)}if(2147483647>b.pc&&w.da-w.Of>=b.pc){if(1!=L||2==w.I&&1!=K){1!=L&&(L=0);2==w.I&&1!=K&&(K=0);continue}F(w,b,1);b.s>=Xb&&y("ITERATION LIMIT EXCEEDED; SEARCH TERMINATED");switch(w.I){case 1:N=Ad;Y(w);m(w);break;case 2:N=ec}r(w,b.vb);da=0==w.q?ec:Ad;D(w,a,N,da,0);return ea=pg}if(2147483647>b.ub&&1E3*ma(w.ic)>=b.ub){if(1!=L||2==w.I&&1!=K){1!=L&&(L=0);2==w.I&&1!=K&&(K=0);continue}F(w,b,1);b.s>=Xb&&y("TIME LIMIT EXCEEDED; SEARCH TERMINATED");
switch(w.I){case 1:N=Ad;Y(w);m(w);break;case 2:N=ec}r(w,b.vb);da=0==w.q?ec:Ad;D(w,a,N,da,0);return ea=Qc}F(w,b,0);r(w,b.vb);if(0==w.q){if(1!=L||1!=K){1!=L&&(L=0);1!=K&&(K=0);continue}F(w,b,1);switch(w.I){case 1:b.s>=Xb&&y("PROBLEM HAS NO FEASIBLE SOLUTION");N=jc;Y(w);m(w);r(w,b.vb);da=0==w.q?ec:Ad;break;case 2:b.s>=Xb&&y("OPTIMAL SOLUTION FOUND"),N=da=ec}D(w,a,N,da,0);return ea=0}p(w);aa&&u(w);v(w,b.ve);var I=w.Ta[w.q],ia=T(w);if(Math.abs(I-ia)>1E-5*(1+Math.abs(ia))||!(0>I&&0>ia||0<I&&0<ia))if(b.s>=
mc&&y("d1 = "+I+"; d2 = "+ia+""),1!=K||!aa){1!=K&&(K=0);aa=5;continue}w.Ta[w.q]=0<I?0<ia?ia:2.220446049250313E-16:0>ia?ia:-2.220446049250313E-16;switch(b.le){case pc:H(w,0);break;case qc:H(w,.3*b.Ib)}if(0==w.p){if(1!=L||1!=K||!aa){1!=L&&(L=0);1!=K&&(K=0);aa=1;continue}F(w,b,1);switch(w.I){case 1:b.s>=Mb&&y("Error: unable to choose basic variable on phase I");a.Y=w.Y;w.Y=null;a.ra=a.wa=Aa;a.ea=0;a.da=w.da;a.some=0;ea=Tb;break;case 2:b.s>=Xb&&y("PROBLEM HAS UNBOUNDED SOLUTION"),D(w,a,ec,jc,w.head[w.h+
w.q]),ea=0}return ea}if(0<w.p&&(I=w.Xa[w.p],ia=1E-5*(1+.01*w.mh),Math.abs(I)<ia&&(b.s>=mc&&y("piv = "+I+"; eps = "+ia+""),!aa))){aa=5;continue}0<w.p&&(I=w.fg,E(w,I),aa&&B(w,I),J(w,I));if(0<w.p&&(I=w.Xa[w.p],ia=w.pb[w.q],Math.abs(I-ia)>1E-8*(1+Math.abs(I))||!(0<I&&0<ia||0>I&&0>ia))){b.s>=mc&&y("piv1 = "+I+"; piv2 = "+ia+"");if(1!=ca||!aa){1!=ca&&(ca=0);aa=5;continue}0==w.pb[w.q]&&(w.Bc++,w.Yb[w.Bc]=w.q);w.pb[w.q]=I}R(w);L=2;0<w.p&&(O(w),K=2,1==w.I&&(I=w.head[w.p],w.Ta[w.q]-=w.B[I],w.B[I]=0));if(0<
w.p)switch(b.ed){case oc:0<w.Ub&&S(w)}0<w.p&&(ea=e(w,w.p,w.head[w.h+w.q]),ca=0==ea?2:w.valid=0);0<w.p&&(h(w,w.q,w.head[w.h+w.q]),w.type[w.head[w.p]]!=C&&k(w,w.q,w.head[w.p]));G(w);w.da++;0<aa&&aa--}}
function Sb(a,b){function c(a,b,c,d){var e=a.h,f=a.Ga,g=a.Fa,h=a.Ma;a=a.head[b];if(a<=e)e=1,c[1]=a,d[1]=1;else for(b=f[a-e],e=f[a-e+1]-b,ha(c,1,g,b,e),ha(d,1,h,b,e),c=1;c<=e;c++)d[c]=-d[c];return e}function d(a){var b=od(a.Y,a.h,c,a);a.valid=0==b;return b}function e(a,b,c){var d=a.h,e;if(c<=d){var f=Array(2);e=Array(2);f[1]=c;e[1]=1;b=Me(a.Y,b,1,f,0,e)}else{var g=a.Ga,f=a.Fa,h=a.Ma;e=a.mb;var k;k=g[c-d];c=g[c-d+1];g=0;for(d=k;d<c;d++)e[++g]=-h[d];b=Me(a.Y,b,g,f,k-1,e)}a.valid=0==b;return b}function f(a,
b,c){var d=a.h,e=a.mb,f=a.mb,g=a.h,h=a.Ga,k=a.Fa,l=a.Ma,m=a.head,n,p,q;ha(f,1,b,1,g);for(b=1;b<=g;b++)if(q=c[b],0!=q)if(n=m[b],n<=g)f[n]-=q;else for(p=h[n-g],n=h[n-g+1];p<n;p++)f[k[p]]+=l[p]*q;wd(a.Y,e);for(a=1;a<=d;a++)c[a]+=e[a]}function g(a,b,c){var d=a.h,e=a.mb,f=a.mb,g=a.h,h=a.Ga,k=a.Fa,l=a.Ma,m=a.head,n,p,q,r;for(n=1;n<=g;n++){p=m[n];r=b[n];if(p<=g)r-=c[p];else for(q=h[p-g],p=h[p-g+1];q<p;q++)r+=l[q]*c[k[q]];f[n]=r}yd(a.Y,e);for(a=1;a<=d;a++)c[a]+=e[a]}function k(a,b){var c=a.c,d=a.f,e=a.stat,
f,g;f=a.head[a.h+b];switch(e[b]){case M:g=c[f];break;case P:g=d[f];break;case Ra:g=0;break;case Na:g=c[f]}return g}function h(a,b){var c=a.h,d=a.n,e=a.Ga,g=a.Fa,h=a.Ma,l=a.head,m=a.Gc,n,p,q,r;for(n=1;n<=c;n++)m[n]=0;for(n=1;n<=d;n++)if(p=l[c+n],r=k(a,n),0!=r)if(p<=c)m[p]-=r;else for(q=e[p-c],p=e[p-c+1];q<p;q++)m[g[q]]+=r*h[q];ha(b,1,m,1,c);wd(a.Y,b);f(a,m,b)}function l(a){var b=a.n,c=a.Ta,d=a.Hc,e;e=a.h;var f=a.B,h=a.head,k=a.Gc,l;for(l=1;l<=e;l++)k[l]=f[h[l]];ha(d,1,k,1,e);yd(a.Y,d);g(a,k,d);for(e=
1;e<=b;e++){f=a.h;l=a.B;k=h=void 0;h=a.head[f+e];k=l[h];if(h<=f)k-=d[h];else{l=a.Ga;for(var m=a.Fa,n=a.Ma,p=void 0,q=void 0,p=void 0,p=l[h-f],q=l[h-f+1];p<q;p++)k+=n[p]*d[m[p]]}c[e]=k}}function n(a){var b=a.h,c=a.n,d=a.head,e=a.gd,f=a.gamma;a.Ub=1E3;ja(e,1,0,b+c);for(a=1;a<=b;a++)c=d[a],e[c]=1,f[a]=1}function m(a,b){var c=a.h,d=a.type,e=a.c,f=a.f,g=a.head,h=a.La,k=a.gamma,l,m,n,p,q,r,u;q=p=n=0;for(l=1;l<=c;l++){m=g[l];u=0;if(d[m]==Sa||d[m]==Q||d[m]==C)r=b*(1+.1*Math.abs(e[m])),h[l]<e[m]-r&&(u=e[m]-
h[l]);if(d[m]==Ta||d[m]==Q||d[m]==C)r=b*(1+.1*Math.abs(f[m])),h[l]>f[m]+r&&(u=f[m]-h[l]);0!=u&&(m=k[l],2.220446049250313E-16>m&&(m=2.220446049250313E-16),m=u*u/m,q<m&&(n=l,p=u,q=m))}a.p=n;a.Qe=p}function q(a,b){var c=a.h,d=a.p,e;for(e=1;e<=c;e++)b[e]=0;b[d]=1;yd(a.Y,N)}function r(a,b){var c=a.h,d=a.p,e=a.Hc,f;for(f=1;f<=c;f++)e[f]=0;e[d]=1;g(a,e,b)}function p(a,b){var c=a.h,d,e;e=0;for(d=1;d<=c;d++)0!=b[d]&&e++;if(.2<=e/c){c=a.h;d=a.n;e=a.Ga;var f=a.Fa,g=a.Ma,h=a.head,k=a.stat,l=a.Yb,m=a.pb,n,p,q,
r,u;r=0;for(n=1;n<=d;n++)if(k[n]==Na)m[n]=0;else{p=h[c+n];if(p<=c)u=-b[p];else for(q=e[p-c],p=e[p-c+1],u=0;q<p;q++)u+=b[f[q]]*g[q];0!=u&&(l[++r]=n);m[n]=u}a.Bc=r}else{f=a.h;c=a.n;g=a.hg;h=a.gg;k=a.ig;l=a.bind;m=a.stat;d=a.Yb;e=a.pb;for(r=1;r<=c;r++)e[r]=0;for(n=1;n<=f;n++)if(p=b[n],0!=p)for(r=l[n]-f,1<=r&&m[r]!=Na&&(e[r]-=p),r=g[n],q=g[n+1],u=r;u<q;u++)r=l[f+h[u]]-f,1<=r&&m[r]!=Na&&(e[r]+=p*k[u]);f=0;for(r=1;r<=c;r++)0!=e[r]&&(d[++f]=r);a.Bc=f}}function u(a,b){var c=a.Bc,d=a.Yb,e=a.pb,f,g,h;g=0;for(f=
1;f<=c;f++)h=Math.abs(e[d[f]]),g<h&&(g=h);a.ph=g;h=b*(1+.01*g);for(g=0;g<c;)f=d[c],Math.abs(e[f])<h?c--:(g++,d[c]=d[g],d[g]=f);a.qh=g}function v(a,b){var c=a.stat,d=a.Ta,e=a.Yb,f=a.pb,g=a.qh,h,k,l,m,n,p,q,r,u;p=0<a.Qe?1:-1;l=0;r=t;n=0;for(k=1;k<=g;k++){h=e[k];m=p*f[h];if(0<m)if(c[h]==M||c[h]==Ra)q=(d[h]+b)/m;else continue;else if(c[h]==P||c[h]==Ra)q=(d[h]-b)/m;else continue;0>q&&(q=0);if(r>q||r==q&&n<Math.abs(m))l=h,r=q,n=Math.abs(m)}if(0!=b&&0!=l&&0!=r)for(u=r,l=0,r=t,n=0,k=1;k<=g;k++){h=e[k];m=
p*f[h];if(0<m)if(c[h]==M||c[h]==Ra)q=d[h]/m;else continue;else if(c[h]==P||c[h]==Ra)q=d[h]/m;else continue;0>q&&(q=0);q<=u&&n<Math.abs(m)&&(l=h,r=q,n=Math.abs(m))}a.q=l;a.Xg=p*r}function H(a){var b=a.h,c=a.Ab,d=a.Xa,e=a.Xa,f,g;g=a.head[b+a.q];for(f=1;f<=b;f++)e[f]=0;if(g<=b)e[g]=-1;else{var h=a.Ga;f=a.Fa;var k=a.Ma,l;l=h[g-b];for(g=h[g-b+1];l<g;l++)e[f[l]]=k[l]}wd(a.Y,d);e=0;for(f=1;f<=b;f++)0!=d[f]&&(c[++e]=f);a.Wb=e}function E(a){var b=a.h,c=a.Ab,d=a.Xa,e=a.Hc,g,h;h=a.head[b+a.q];for(g=1;g<=b;g++)e[g]=
0;if(h<=b)e[h]=-1;else{var k=a.Ga;g=a.Fa;var l=a.Ma,m;m=k[h-b];for(h=k[h-b+1];m<h;m++)e[g[m]]=l[m]}f(a,e,d);e=0;for(g=1;g<=b;g++)0!=d[g]&&(c[++e]=g);a.Wb=e}function B(a){var b=a.Ta,c=a.Bc,d=a.Yb,e=a.pb,f=a.q;a=a.Xg;var g,h;b[f]=a;if(0!=a)for(h=1;h<=c;h++)g=d[h],g!=f&&(b[g]-=e[g]*a)}function J(a){var b=a.La,c=a.p,d=a.q,e=a.Wb,f=a.Ab,g=a.Xa,h;h=a.Qe/g[c];b[c]=k(a,d)+h;if(0!=h)for(d=1;d<=e;d++)a=f[d],a!=c&&(b[a]+=g[a]*h)}function R(a){var b=a.h,c=a.type,d=a.head,e=a.gd,f=a.gamma,g=a.p,h=a.Bc,k=a.Yb,
l=a.pb,m=a.q,n=a.Wb,p=a.Ab,q=a.Xa,r=a.Hc,u,w,v,z,B,D;a.Ub--;B=D=e[d[g]]?1:0;for(u=1;u<=b;u++)r[u]=0;for(z=1;z<=h;z++)if(w=k[z],v=d[b+w],e[v])if(w=l[w],B+=w*w,v<=b)r[v]+=w;else{var E=a.Ga;u=a.Fa;var F=a.Ma,G;G=E[v-b];for(v=E[v-b+1];G<v;G++)r[u[G]]-=w*F[G]}wd(a.Y,r);a=q[g];for(z=1;z<=n;z++)u=p[z],v=d[u],u!=g&&c[d[u]]!=Ka&&(w=q[u]/a,h=f[u]+w*w*B+2*w*r[u],w=(e[v]?1:0)+D*w*w,f[u]=h>=w?h:w,2.220446049250313E-16>f[u]&&(f[u]=2.220446049250313E-16));c[d[b+m]]==Ka?f[g]=1:(f[g]=B/(a*a),2.220446049250313E-16>
f[g]&&(f[g]=2.220446049250313E-16));v=d[g];if(c[v]==C&&e[v])for(e[v]=0,z=1;z<=n;z++){u=p[z];if(u==g){if(c[d[b+m]]==Ka)continue;w=1/q[g]}else{if(c[d[u]]==Ka)continue;w=q[u]/q[g]}f[u]-=w*w;2.220446049250313E-16>f[u]&&(f[u]=2.220446049250313E-16)}}function T(a){var b=a.h,c=a.type,d=a.head,e=a.bind,f=a.stat,g=a.p,h=a.Qe;a=a.q;var k;k=d[g];d[g]=d[b+a];d[b+a]=k;e[d[g]]=g;e[d[b+a]]=b+a;f[a]=c[k]==C?Na:0<h?M:P}function O(a,b){var c=a.h,d=a.n,e=a.cc,f=a.head,g=a.Ta,h,k;for(h=1;h<=d;h++)if(k=f[c+h],g[h]<-b&&
(e[k]==Sa||e[k]==Ka)||g[h]>+b&&(e[k]==Ta||e[k]==Ka))return 1;return 0}function S(a){var b=a.h,c=a.n,d=a.type,e=a.c,f=a.f,g=a.cc,h=a.head,k=a.stat;a=a.Ta;var l;for(l=1;l<=b+c;l++)switch(g[l]){case Ka:d[l]=Q;e[l]=-1E3;f[l]=1E3;break;case Sa:d[l]=Q;e[l]=0;f[l]=1;break;case Ta:d[l]=Q;e[l]=-1;f[l]=0;break;case Q:case C:d[l]=C,e[l]=f[l]=0}for(e=1;e<=c;e++)l=h[b+e],k[e]=d[l]==C?Na:0<=a[e]?M:P}function G(a){var b=a.h,c=a.n,d=a.type,e=a.c,f=a.f,g=a.ad,h=a.bd,k=a.head,l=a.stat,m=a.Ta;ha(d,1,a.cc,1,b+c);ha(e,
1,g,1,b+c);ha(f,1,h,1,b+c);for(a=1;a<=c;a++)switch(g=k[b+a],d[g]){case Ka:l[a]=Ra;break;case Sa:l[a]=M;break;case Ta:l[a]=P;break;case Q:l[a]=2.220446049250313E-16<=m[a]?M:-2.220446049250313E-16>=m[a]?P:Math.abs(e[g])<=Math.abs(f[g])?M:P;break;case C:l[a]=Na}}function Z(a,b){var c=a.n,d=a.stat,e=a.Ta,f;for(f=1;f<=c;f++)if(e[f]<-b&&(d[f]==M||d[f]==Ra)||e[f]>+b&&(d[f]==P||d[f]==Ra))return 1;return 0}function Y(a){var b=a.h,c=a.n,d=a.ib,e=a.head,f=a.La,g,h,l;l=d[0];for(g=1;g<=b;g++)h=e[g],h>b&&(l+=d[h-
b]*f[g]);for(f=1;f<=c;f++)h=e[b+f],h>b&&(l+=d[h-b]*k(a,f));return l}function ba(a,b,c){var d=a.h,e=a.n,f=a.B,g=a.cc,h=a.head,l=a.stat,m=a.I,n=a.La,p=a.Ta;if(!(b.s<fc||0<b.cb&&1E3*ma(a.ic)<b.cb||a.da==a.$d||!c&&0!=a.da%b.dc)){b=0;if(1==m){for(l=1;l<=d;l++)b-=f[h[l]]*n[l];for(n=1;n<=e;n++)b-=f[h[d+n]]*k(a,n)}else for(n=1;n<=e;n++)0>p[n]&&(l[n]==M||l[n]==Ra)&&(b-=p[n]),0<p[n]&&(l[n]==P||l[n]==Ra)&&(b+=p[n]);e=0;for(l=1;l<=d;l++)g[h[l]]==C&&e++;1==a.I?y(" "+a.da+": infeas = "+b+" ("+e+")"):y("|"+a.da+
": obj = "+Y(a)+" infeas = "+b+" ("+e+")");a.$d=a.da}}function oa(a,b,c,d,e){var f=a.h,g=a.n,h=a.eb,k=a.head,l=a.stat,m=a.La,n=a.Ta;b.valid=1;a.valid=0;b.Y=a.Y;a.Y=null;ha(b.head,1,k,1,f);b.ra=c;b.wa=d;b.ea=Y(a);b.da=a.da;b.some=e;for(a=1;a<=f;a++)c=k[a],c<=f?(c=b.o[c],c.stat=A,c.bind=a,c.w=m[a]/c.qa):(c=b.g[c-f],c.stat=A,c.bind=a,c.w=m[a]*c.za),c.M=0;for(m=1;m<=g;m++)if(c=k[f+m],c<=f){c=b.o[c];c.stat=l[m];c.bind=0;switch(l[m]){case M:c.w=c.c;break;case P:c.w=c.f;break;case Ra:c.w=0;break;case Na:c.w=
c.c}c.M=n[m]*c.qa/h}else{c=b.g[c-f];c.stat=l[m];c.bind=0;switch(l[m]){case M:c.w=c.c;break;case P:c.w=c.f;break;case Ra:c.w=0;break;case Na:c.w=c.c}c.M=n[m]/c.za/h}}this.chrome_workaround_1=function(a,b){var c=a.Ga,d=a.Fa,e=a.Ma,f=a.n,g,h,k;for(k=h=1;k<=f;k++)for(c[k]=h,g=b.g[k].l;null!=g;g=g.L)d[h]=g.o.ia,e[h]=g.o.qa*g.j*g.g.za,h++;c[f+1]=h};this.chrome_workaround_2=function(a,b){var c,d,e,f=a.hg,g=a.gg,h=a.ig,k=a.h;for(d=c=1;d<=k;d++)for(f[d]=c,e=b.o[d].l;null!=e;e=e.G)g[c]=e.g.H,h[c]=e.o.qa*e.j*
e.g.za,c++;f[k+1]=c};var z,F=2,D=0,w=0,ca=0,L,K,aa;z=function(a){var b=a.h,c=a.n;a=a.O;var d={};d.h=b;d.n=c;d.type=new Int8Array(1+b+c);d.c=new Float64Array(1+b+c);d.f=new Float64Array(1+b+c);d.B=new Float64Array(1+b+c);d.cc=new Int8Array(1+b+c);d.ad=new Float64Array(1+b+c);d.bd=new Float64Array(1+b+c);d.ib=new Float64Array(1+c);d.Ga=new Int32Array(1+c+1);d.Fa=new Int32Array(1+a);d.Ma=new Float64Array(1+a);d.hg=new Int32Array(1+b+1);d.gg=new Int32Array(1+a);d.ig=new Float64Array(1+a);d.head=new Int32Array(1+
b+c);d.bind=new Int32Array(1+b+c);d.stat=new Int8Array(1+c);d.La=new Float64Array(1+b);d.Ta=new Float64Array(1+c);d.gd=new Int8Array(1+b+c);d.gamma=new Float64Array(1+b);d.Yb=new Int32Array(1+c);d.pb=new Float64Array(1+c);d.Ab=new Int32Array(1+b);d.Xa=new Float64Array(1+b);d.mb=new Float64Array(1+b);d.Gc=new Float64Array(1+b);d.Hc=new Float64Array(1+b);d.fg=new Float64Array(1+b);return d}(a);(function(a,b){var c=a.h,d=a.n,e=a.type,f=a.c,g=a.f,h=a.B,k=a.cc,l=a.ad,m=a.bd,n=a.ib,p=a.head,q=a.bind,r=
a.stat,u=a.gd,w=a.gamma,v,z;for(v=1;v<=c;v++)z=b.o[v],e[v]=z.type,f[v]=z.c*z.qa,g[v]=z.f*z.qa,h[v]=0;for(v=1;v<=d;v++)z=b.g[v],e[c+v]=z.type,f[c+v]=z.c/z.za,g[c+v]=z.f/z.za,h[c+v]=z.B*z.za;ha(k,1,e,1,c+d);ha(l,1,f,1,c+d);ha(m,1,g,1,c+d);n[0]=b.la;ha(n,1,h,c+1,d);e=0;for(v=1;v<=d;v++)e<Math.abs(n[v])&&(e=Math.abs(n[v]));0==e&&(e=1);switch(b.dir){case za:a.eb=1/e;break;case Ea:a.eb=-1/e}1>Math.abs(a.eb)&&(a.eb*=1E3);for(v=1;v<=d;v++)h[c+v]*=a.eb;chrome_workaround_1(a,b);chrome_workaround_2(a,b);ha(p,
1,b.head,1,c);h=0;for(v=1;v<=c;v++)z=b.o[v],z.stat!=A&&(h++,p[c+h]=v,r[h]=z.stat);for(v=1;v<=d;v++)z=b.g[v],z.stat!=A&&(h++,p[c+h]=c+v,r[h]=z.stat);for(h=1;h<=c+d;h++)q[p[h]]=h;a.valid=1;b.valid=0;a.Y=b.Y;b.Y=null;a.I=0;a.ic=la();a.Of=a.da=b.da;a.$d=-1;a.Ub=0;ja(u,1,0,c+d);for(v=1;v<=c;v++)w[v]=1})(z,a);for(b.s>=mc&&y("Objective scale factor = "+z.eb+"");;){if(0==F){aa=d(z);if(0!=aa)return b.s>=Mb&&(y("Error: unable to factorize the basis matrix ("+aa+")"),y("Sorry, basis recovery procedure not implemented yet")),
a.Y=z.Y,z.Y=null,a.ra=a.wa=Aa,a.ea=0,a.da=z.da,a.some=0,aa=Tb;F=z.valid=1;D=w=0}if(0==w&&(l(z),w=1,0==z.I&&(0!=O(z,.9*b.vb)?(z.I=1,S(z)):(z.I=2,G(z)),D=z.Ub=0),0!=Z(z,b.vb))){b.s>=Mb&&y("Warning: numerical instability (dual simplex, phase "+(1==z.I?"I":"II")+")");if(b.hb==Rb)return oa(z,a,Aa,Aa,0),aa=Tb;F=z.I=0;ca=5;continue}1==z.I&&0==O(z,b.vb)&&(ba(z,b,1),z.I=2,1!=w&&(l(z),w=1),G(z),D=z.Ub=0);0==D&&(h(z,z.La),2==z.I&&(z.La[0]=Y(z)),D=1);switch(b.ed){case oc:0==z.Ub&&n(z)}if(2==z.I&&0>z.eb&&b.ef>
-t&&z.La[0]<=b.ef){if(1!=D||1!=w){1!=D&&(D=0);1!=w&&(w=0);continue}ba(z,b,1);b.s>=Xb&&y("OBJECTIVE LOWER LIMIT REACHED; SEARCH TERMINATED");oa(z,a,Ad,ec,0);return aa=Tf}if(2==z.I&&0<z.eb&&b.ff<+t&&z.La[0]>=b.ff){if(1!=D||1!=w){1!=D&&(D=0);1!=w&&(w=0);continue}ba(z,b,1);b.s>=Xb&&y("OBJECTIVE UPPER LIMIT REACHED; SEARCH TERMINATED");oa(z,a,Ad,ec,0);return aa=Uf}if(2147483647>b.pc&&z.da-z.Of>=b.pc){if(2==z.I&&1!=D||1!=w){2==z.I&&1!=D&&(D=0);1!=w&&(w=0);continue}ba(z,b,1);b.s>=Xb&&y("ITERATION LIMIT EXCEEDED; SEARCH TERMINATED");
switch(z.I){case 1:K=Ad;G(z);h(z,z.La);break;case 2:K=ec}oa(z,a,Ad,K,0);return aa=pg}if(2147483647>b.ub&&1E3*ma(z.ic)>=b.ub){if(2==z.I&&1!=D||1!=w){2==z.I&&1!=D&&(D=0);1!=w&&(w=0);continue}ba(z,b,1);b.s>=Xb&&y("TIME LIMIT EXCEEDED; SEARCH TERMINATED");switch(z.I){case 1:K=Ad;G(z);h(z,z.La);break;case 2:K=ec}oa(z,a,Ad,K,0);return aa=Qc}ba(z,b,0);m(z,b.Ib);if(0==z.p){if(1!=D||1!=w){1!=D&&(D=0);1!=w&&(w=0);continue}ba(z,b,1);switch(z.I){case 1:b.s>=Xb&&y("PROBLEM HAS NO DUAL FEASIBLE SOLUTION");G(z);
h(z,z.La);L=Ad;K=jc;break;case 2:b.s>=Xb&&y("OPTIMAL SOLUTION FOUND"),L=K=ec}oa(z,a,L,K,0);return aa=0}var N=z.fg;q(z,N);ca&&r(z,N);p(z,N);u(z,b.Ib);switch(b.le){case pc:v(z,0);break;case qc:v(z,.3*b.vb)}if(0==z.q){if(1!=D||1!=w||!ca){1!=D&&(D=0);1!=w&&(w=0);ca=1;continue}ba(z,b,1);switch(z.I){case 1:b.s>=Mb&&y("Error: unable to choose basic variable on phase I");a.Y=z.Y;z.Y=null;a.ra=a.wa=Aa;a.ea=0;a.da=z.da;a.some=0;aa=Tb;break;case 2:b.s>=Xb&&y("PROBLEM HAS NO FEASIBLE SOLUTION"),oa(z,a,jc,ec,
z.head[z.p]),aa=0}return aa}var da=z.pb[z.q],ea=1E-5*(1+.01*z.ph);if(Math.abs(da)<ea&&(b.s>=mc&&y("piv = "+da+"; eps = "+ea+""),!ca)){ca=5;continue}H(z);ca&&E(z);da=z.Xa[z.p];ea=z.pb[z.q];if(Math.abs(da-ea)>1E-8*(1+Math.abs(da))||!(0<da&&0<ea||0>da&&0>ea)){b.s>=mc&&y("piv1 = "+da+"; piv2 = "+ea+"");if(1!=F||!ca){1!=F&&(F=0);ca=5;continue}0==z.Xa[z.p]&&(z.Wb++,z.Ab[z.Wb]=z.p);z.Xa[z.p]=ea}J(z);2==z.I&&(z.La[0]+=z.Ta[z.q]/z.eb*(z.Qe/z.Xa[z.p]));D=2;B(z);w=2;switch(b.ed){case oc:0<z.Ub&&R(z)}aa=e(z,
z.p,z.head[z.h+z.q]);F=0==aa?2:z.valid=0;T(z);z.da++;0<ca&&ca--}};
}(typeof exports === 'object' && exports || this));
+19
View File
@@ -0,0 +1,19 @@
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
colors: {
background: "var(--background)",
foreground: "var(--foreground)",
},
},
},
plugins: [],
};
export default config;
+26
View File
@@ -0,0 +1,26 @@
{
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
"plugins": [
{
"name": "next"
}
],
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"]
}