Browse code

added CHANGELOG.txt appinfo/info.xml appinfo/signature.json css/style.css img/closewnd.svg js/adminsettings.js js/deleteoldsms.js ...

DoubleBastionAdmin authored on 23/05/2023 19:00:54
Showing 17 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,105 @@
1
+======= CHANGELOG =======
2
+
3
+Versions:
4
+
5
+== 1.0.0 - 2022-1-27 ==
6
+* Initial release.
7
+
8
+== 1.0.1 - 2022-3-31 ==
9
+* Changed presentation text.
10
+
11
+== 1.0.2 - 2022-4-13 ==
12
+* Changed application controller class, to respect custom path of 'datadirectory'.
13
+* Fixed filters row arrow not showing up when using Apache.
14
+* Added the 'Contributors.txt' file.
15
+
16
+== 1.0.3 - 2022-4-15 ==
17
+* Changed the way the app gets the timezone.
18
+
19
+== 1.0.4 - 2022-5-7 ==
20
+* Changed the data type of the 'message' column in the 'sms_relent_sent' and 'sms_relent_received' tables.
21
+
22
+== 1.0.5 - 2022-5-9 ==
23
+* Changed string length for 'message' column in 'sms_relent_sent' and 'sms_relent_received' tables.
24
+* Changed syntax of SQL queries and of encryption function.
25
+* Changed structure of webhook URLs in case Nextcloud is served on a subdirectory.
26
+
27
+== 1.0.6 - 2022-8-13 ==
28
+* Added support for Twilio.
29
+* Added support for new lines in messages and email notifications.
30
+* Solved column width issue in sent/received SMS tables.
31
+* Minor explanatory text changes.
32
+
33
+== 1.0.7 - 2022-8-16 ==
34
+* Solved bug related to receiving messages on Twilio number when it's not associated with any Messaging Service.
35
+* Changed css properties for Network column.
36
+
37
+== 1.0.8 - 2022-8-23 ==
38
+* Added support for Flowroute.
39
+* Added automatic scrolling to bottom of received/sent messages table when clicking on 'Received/Sent SMS Messages' button.
40
+* Added scroll bar to info pop-up notes.
41
+
42
+== 1.0.9 - 2022-9-3 ==
43
+* Added support for MMS.
44
+* Minor CSS improvements.
45
+* Small changes to explanatory text.
46
+
47
+== 1.1.0 - 2022-9-5 ==
48
+* Solved issue with previewing images picked from Nextcloud.
49
+* Text changes to README.md.
50
+
51
+== 1.1.1 - 2022-9-9 ==
52
+* Changed signature verification process for Twilio.
53
+* Removed Alphanumeric Sender ID for Flowroute, since it's not supported.
54
+* Minor text changes on presentation page and settings page.
55
+
56
+== 1.1.2 - 2022-10-27 ==
57
+* Changed CSS settings to match the modifications introduced in Nextcloud 25.
58
+
59
+== 1.1.3 - 2022-12-1 ==
60
+* Fixed SQL error that appeared in fresh installations.
61
+* Added support for dark themes.
62
+* Updated explanatory text for Telnyx on the Settings page.
63
+
64
+== 1.1.4 - 2022-12-2 ==
65
+* Changed migration files to prevent installation errors.
66
+* Modified 3 svg files converting text objects to paths.
67
+
68
+== 1.1.5 - 2023-2-28 ==
69
+* Fixed issue related to Twilio message signing.
70
+* Updated message pricing information in app description.
71
+
72
+== 1.1.6 - 2023-5-8 ==
73
+* Implemented showing display names of message authors before their messages.
74
+* Added checkbox to enable/disable prepending display names before messages.
75
+* Custom display names can be now saved for external phone numbers.
76
+* Restrictions for groups or users can be placed on phone numbers by admins.
77
+* Admins can see just their own messages or all the messages in their message tables.
78
+* Auto-replies with 'daily mode' and 'vacation mode' can be configured for any controlled phone number.
79
+* Added a new message table that lists all the messages grouped by phone numbers.
80
+* Added the ability to see all the messages sent/received to/from a phone number, by clicking on 
81
+  a button located below the number, in the 'Received SMS Messages' and 'Sent SMS Messages' tables
82
+
83
+== 1.1.7 - 2023-5-9 ==
84
+* Fixed bug related to not being able to see messages in pop-up windows and on grouped messages table.
85
+
86
+== 1.1.8 - 2023-5-9 ==
87
+* Fixed migration issue bug.
88
+
89
+== 1.1.9 - 2023-5-9 ==
90
+* Made the app available to upgrade to for Nextcloud 26.
91
+
92
+== 1.2.0 - 2023-5-20 ==
93
+* Fixed auto-reply bug.
94
+* Moved the API keys and alphanumeric sender ID fields from the Personal settings page to the Admin 
95
+  settings page.
96
+* Available phone numbers are loaded automatically when the app's icon is clicked.
97
+* When only one phone number is available, it is selected automatically in the 'Set ID' field.
98
+* Admins can share their API keys with other non-admins.
99
+* Admins can see only their messages and the messages of the non-admins whith whom they share their API 
100
+  keys. Non-admins can see only their messages.
101
+* Added pop-up window that shows the messages exchanged between 2 phone numbers and allows sending replies.
102
+
103
+== 1.2.1 - 2023-5-23 ==
104
+* Allowed non-admin users to see incoming messages received on the phone numbers they are restricted to.
105
+* Customized confirm pop-up windows.
0 106
new file mode 100644
... ...
@@ -0,0 +1,90 @@
1
+<?xml version="1.0"?>
2
+<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
3
+      xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
4
+    <id>sms_relentless</id>
5
+    <name>SMS Relentless</name>
6
+    <summary>Send and receive SMS in Nextcloud</summary>
7
+    <description><![CDATA[
8
+This application allows sending and receiving SMS and MMS messages in Nextcloud. An SMS/MMS enabled phone number acquired from 
9
+Telnyx or Plivo or Twilio or Flowroute is needed. The 'libcurl' PHP library has to be installed on the server. Detailed instructions 
10
+on how to configure and use this application can be found on the 'Admin documentation' page.
11
+
12
+### Features:
13
+
14
+* 🚀 Use one or multiple local phone numbers in countries of your choice, to send and receive SMS/MMS messages with your browser, on any device connected to the Internet.
15
+
16
+* 📑 Sent and received SMS/MMS messages are stored in the database per sending/receiving user and can be viewed in paginated tables with filters for every column.
17
+
18
+* 🖼️  Up to 10 files of various formats, including jpeg, png and gif, can be sent as MMS messages from MMS enabled phone numbers. Files included in incoming MMS messages are not downloaded automatically. They are stored as URL links to the actual files, so that the receivers can download them only if they trust the senders.
19
+
20
+* 📔 SMS/MMS messages older than a specified number of days can be deleted in bulk with one click and they are automatically archived in csv files stored in Nextcloud, before being removed from the database. This makes them available for future analysis.
21
+
22
+* 💻 Sending SMS/MMS messages to thousands of recipients can be achieved by uploading a txt/csv file containing the recipients' phone numbers and the same SMS/MMS is sent automatically to all. The time interval between two consecutive messages is configurable.
23
+
24
+* 👤 The Display Name of Nextcloud users can be prepended to their messages, so that the origin of the messages is much clearer.
25
+
26
+* ⚠️  Admins can restrict the use of specific phone numbers to specific groups or users.
27
+
28
+* ✉️  Auto-replies in 'daily mode' and 'vacation mode' can be configured for any controlled phone number.
29
+
30
+* 🔏 SMS/MMS messages coming from Telnyx, Plivo and Twilio are checked for authenticity by verifying the SMS provider's signature.
31
+
32
+* 📧 Users receive notifications in Nextcloud and (optionally) emails when new SMS/MMS messages arrive.
33
+
34
+* 📄 Each sent message receives a delivery receipt displayed in the Sent SMS Messages table.
35
+
36
+* 📱 It works with regular 'long code' (10-digit) phone numbers, but also with 'toll-free' numbers and 'short codes'. Users see a list with their current phone numbers and can set them as Sender IDs. Setting alphanumeric Sender IDs is also possible. 
37
+
38
+* 💵 It allows checking the current Telnyx/Plivo/Twilio balance by selecting the provider on the left panel.
39
+
40
+* 💰 The only ongoing cost is about $1 per month (depending on the country) for an SMS/MMS enabled phone number located in a country chosen by the user. No contracts.
41
+
42
+* 💸 Low prices per SMS: starting from $0.0060 per sent message and $0.0040 per received message (Telnyx), or $0.0070 per sent message and $0 per received message (Plivo), or $0.0099 per sent message and 0.0079 per received message (Twilio), or $0.0055 per sent message and 0.0040 per received message (Flowroute) in the USA.
43
+
44
+We have no affiliation with Telnyx, Plivo, Twilio or Flowroute.
45
+
46
+### Documentation
47
+
48
+* [Admin documentation](https://www.doublebastion.com/install-nextcloud/#install-sms-relentless)
49
+
50
+### Donations
51
+
52
+* 🎁 [Donate](https://www.doublebastion.com/donations/)
53
+
54
+    ]]></description>
55
+    <version>1.2.1</version>
56
+    <licence>AGPL</licence>
57
+    <author mail="contact@doublebastion.com">Double Bastion LLC</author>
58
+    <namespace>SMSRelentless</namespace>
59
+	<documentation>
60
+		<admin>https://www.doublebastion.com/install-nextcloud/#install-sms-relentless</admin>
61
+	</documentation>
62
+    <category>office</category>
63
+    <category>organization</category>
64
+
65
+    <website>https://www.doublebastion.com/sms-relentless/</website>
66
+    <bugs>https://git.doublebastion.com/sms-relentless/issues/develop</bugs>
67
+    <repository>https://git.doublebastion.com/sms-relentless/develop/</repository>
68
+
69
+    <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_screenshot.png</screenshot>
70
+
71
+    <dependencies>
72
+            <nextcloud min-version="25" max-version="26" />
73
+    </dependencies>
74
+
75
+    <navigations>
76
+        <navigation>
77
+            <name>SMS Relentless</name>
78
+            <route>sms_relentless.page.index</route>
79
+            <order>102</order>
80
+            <icon>../img/sms_relentless.svg</icon>
81
+        </navigation>
82
+    </navigations>
83
+
84
+    <settings>
85
+            <personal>OCA\SMSRelentless\Settings\Personal</personal>
86
+            <personal-section>OCA\SMSRelentless\Settings\PersonalSection</personal-section>
87
+            <admin>OCA\SMSRelentless\Settings\Admin</admin>
88
+    	    <admin-section>OCA\SMSRelentless\Settings\AdminSection</admin-section>
89
+    </settings>
90
+</info>
0 91
new file mode 100644
... ...
@@ -0,0 +1,857 @@
1
+{
2
+    "hashes": {
3
+        "CHANGELOG.txt": "4f318c7f08665daee525a929afe65d1c71d81d64fb87db2be2cfba8474d44bee6682eb65a85d66261ce4c58805a9c8bbf38af9af49f0692410a3b999aa243ec9",
4
+        "COPYING.txt": "a0a86214ea153fb07ff35ceec0848dd1703eae22de036a825efc8394e50f65e3044832f3b49cf7e45a39edc470bdf738abc36a3a78ca7df3a6e73c14eaef94a8",
5
+        "Contributors.txt": "8ab4ea9b8c38e4d115af6ca08e8e27592198b763982bd166b67f38ee0b9f2b7e093cd58ce0927ae38ee3bc015b129add2ffeb3967288c804da493241bc67ba9b",
6
+        "README.md": "1303375a0e275dee4117b365e323d5b918a916d28460d202dd3990d1d07d1ca4c88136e0aa05d1222894a37339072f05a9d8c8cc32dd91ae85a703cfb48b9dc4",
7
+        "appinfo\/info.xml": "c3afc60756b557a3b0c4bf78179b6e4ddf25fb0b1c2a5d7be82e0ea208096d802f458e4aa96fba4618fc50decad3bd23edb28841c8beff01c816afc6c8376f87",
8
+        "appinfo\/routes.php": "201af4a964d75ace65e4d46aff122afa72390d324b5cab798158985e13234f6f92f6c7320970dc55cd8f64735f07612e107acd8e2574960afb93fe308fa8b5fa",
9
+        "css\/style.css": "c021733ef461a794669690194ddddb16e4a8d45fa5b860e3fccdfc0b6a71c243077535c0661d968461b18ba14e82c72179c5f3e9c14010537d09e2d71f6b9787",
10
+        "img\/add.svg": "5711a740d20d8243b4fa9a52783689af96b3b01af6e422ec6a9f0aca16db068869a5a302e6960168d9c90e2dc0a69eed851d69e7f1bf33684304cf861f990604",
11
+        "img\/arrow-top-small.svg": "3fba2fbf3a27f4d6b44d1c94da2260d025bbe682a3db18c21b9aa548f4878609770cdaa2e5c24e8b5cd97249647187b7499ab18bcd843ae7ee145def41561bbf",
12
+        "img\/arrow-top.svg": "389b15b7bfa8c90a79cd80958d1150538ddd0aeed875eae3a498b9bee8da3e63752fbc6c073cf58405fc35633a9b786e34b3ca1f6d234af685277aa8d439e1a6",
13
+        "img\/arrowDown.svg": "6fb30b189e848b26369238f7446eb1533327a4e99c70b699c10bb03088eeb7d47393f18d4f16bc03edb945f36cf13b96f05b763dba821c0b04b209cd81624103",
14
+        "img\/arrowUp.svg": "4f6a413d836635fd7e2e4d5846ee257c9a13e80624468e444ec906febfcf07a1c84f48d29cce730f29729cc8fbbbd3dab490e2192e5beb2707a6a4b1036bfd76",
15
+        "img\/check.svg": "aff77744fbd4e8eef8d91fd9e128e9e8be2830a93db9ba8d8a8277e78c8610d6ea5ec9678b3dfd2b8f2b4f8970dc40c4111e7af5011b0873bf461f5fbdeeaa88",
16
+        "img\/clearfilters.svg": "f554eff67f4c1440eb3865ea98b00bcde1f27361ae5888dfa7db1ed95d074915aaba0f6aed3f70d6d7c4cb5ca592dbc3f3175f958708e54830f895e8b652b499",
17
+        "img\/closewnd.svg": "38f6ba89d70905ab3d2c7d524fee42ce08f007622bb1256d04556cccdf40f549d39ab2fc455c878e6c318c03a8680d042c8e7d0dff9360a921e397e38567bf9a",
18
+        "img\/dots.svg": "e4a46301c4b70f3820be8d6906ccec273a96edaaab44d7c133bb58f5499f2fc6381f2029c27d0393e3d31e1cf10bc55ee98f05347fa6af3533cc74290d9bb909",
19
+        "img\/filter_icon.svg": "5258d0d0e3677c10a8ae5d8cc37318855e5a6d5071d5a61ee6d29aad7109292502d60571f2c5ae716295dd8f93a327c060ec7c65f2f9cbfee4b85086682a385e",
20
+        "img\/garbage.svg": "b76cde0659b7f127a810406d2b734f03871e3a7c8bc53acb723c2a97fa6ca0801a26cfebd4ceaa28d2ad237a67a222e00aafaecaf7e749cc8e8f93ae35a4c4f3",
21
+        "img\/garbage_bright.svg": "45bbad63a659b6add876294f8aebda1cf03790b0c253ba442f04fd9677c1a35795eb823dbb92bbf38066e8cdf89fb34671763dabbcdad4722aba3ffcaa21581b",
22
+        "img\/group.svg": "fbc10073fb9f5ac1780ccad2c61586512a922359b48ff76194bc5be2711ba99efcf9ce42a694e4cf1209dc78cf2bd077e12f98590c1fe1123260a23419cd256f",
23
+        "img\/incoming.svg": "c8f6e4c7e55c7fff5c74a87fe14e9f404fe5954a546949f148fd60cae7dd2e9165e883c34f1a3eb5500c12ae2bf281ab1607e04c4b75bd6322571ccf7e6ccc25",
24
+        "img\/list.svg": "2364a4ad93d0e4c85345a293f4f6b0e4135cbfb8b7b5e1ecd81d08affd0e0441439f9cd9e60da77eaa53052ef20cec20b49263e387b500c1fb4a3607b081e73f",
25
+        "img\/nextcloud_logo.svg": "4e0d3f0c371d668d83d443e5b1f69f0eedcc759092601d8fe8710dd97b16fd53aa3f9667bba7f305dc3aacfbc14e29b09b78da8b7bf6f41dcb83f5b16473991e",
26
+        "img\/nextcloud_logo_bright.svg": "aeab941556e29f9537508171583bb3309372866122c150c887c21d6a567c5aa06d2653db67c7151b064d4e2fa25f1fc63df21c786ede02ca5f40f12e5c1bad26",
27
+        "img\/outgoing.svg": "b5be7538df66570991b975b1fdca452144fdc27a14521dfb2ae4d0393d0f3b8abb6837458892e04adbdec0182ee3fd25ae33c6792457154dc2cab6e35bd6eb9e",
28
+        "img\/question.svg": "c2bb43256a2b8c43997dd6b40a2db8c811e3a2a28a0ebc11c8e87d71c21b8cfea3367a39730e6675ca77c9ec6e9adb4bab65cee474c02276f905b4477e28b1bf",
29
+        "img\/refresh_logo.svg": "a95a19645bbde5e2146a3ec669950bc6029bfc6104886552eaeb4746733657ecbe4f9199e676ee2e9852ef0c5adb612d93e300e3fa9713fc611e1f8e7c1d5183",
30
+        "img\/reply.svg": "7e78973c9ef21f69c5138b036192a889350ba4333df42c3e343ab34ecc497574a601d5c6e2275846c9fd2adc525e209c006e9a957dff5d0c53fe1a69ee557e09",
31
+        "img\/sms_relentless.svg": "010ad7cee20f3a256a24bee2482b6798f042a3992c7df5d56ba803cca93552c3cda2a68d1772e67143ce45207b89d397e34ba6909f6b8515134db64e2c5497eb",
32
+        "img\/sms_relentless_dark.svg": "cbe97fe9fe636790ea0b415035cd78321ff53ec93ab1276d4ef609555592fa13d09b2037c20e06bbb9024fcfcc0ebb806c89572b08adcfe4ee9d06c6466b685a",
33
+        "img\/sms_relentless_delete_old_messages.png": "077c74a6f138ed1c46ee9426c0c0573bbee12b71c85ae0cb3ebba1ea040b4f88099405d1074a49496050f092e47af03feac9afb85ed1a2480d74d9f07716d287",
34
+        "img\/sms_relentless_filter_messages_by_date_and_keyword.png": "a014a100ec4be4e5d2e09b8d8afc85125fc3f5fdd4379c8338c209a08cfc65a547b1ebbebe6dcc81d05b68081a66982a31f85bf7f7b6c66f441e679743f65814",
35
+        "img\/sms_relentless_grey.svg": "ffac810d151f22067a4ce4985b6c84ec6f6bbf7f1c0a8711ad4a374b838251d3681edfa8439e18c1fcb78160fcdfa20d4f08527a594c5080938aa611991acb2e",
36
+        "img\/sms_relentless_logo.png": "bcc8bc7301aa9c4811ee875b5deb4ed21d9c7eca187970643962f0ae11a7483adc5257e26b307c41644dfef63ec82c4e61a221f133c62827e1d4418928c253c5",
37
+        "img\/sms_relentless_mms_sending.png": "063dcd7d06eced6be8a33c00abd9605ec196c3962c526212990760ee5f157fac0f9778d50d84ff5593a01ea0cdc15d5e848dbe39af47d082909e671f45832bef",
38
+        "img\/sms_relentless_received.png": "1161fbf9e9351510edf200ae89f36730af1c1410cda4186f631d15797e2e484e384898eae1dd97d2904a4d6272f551bb25071a01ecaae101acefb32f855e6f50",
39
+        "img\/sms_relentless_screenshot.png": "5bddd3148637473bd5d0b551df701094c8983e1a7706d753697df1bcec27029b88ef92146c7bc9213914dcdfce65eeaf6eb49d9aa95ce4d6e7f6317f4d9324ab",
40
+        "img\/sms_relentless_send_mass_sms.png": "f8043b8d2dd53058c28552ef96e637072337d1c751930f3418ba8ea7a394507246f35ed98f8123ff1e9e6598babbafdc5b893dbedc0624a2d9c5c1184c6ad60e",
41
+        "img\/sms_relentless_send_sms.png": "0a028ba48f0b86d820dd2fc13327c9069665a327f461310847286bc6ae085fbb7337162b27125b2d42fd7136a30c9dc7f6866501912647899aa0cc7ae676f706",
42
+        "img\/sms_relentless_sent.png": "7aef983c66793540b102f6879151449ad0da60751d89eae68ffeec7b20ac6e84a1d92388fb808d10dbf63f7bedb68c888dda509ea2ecd7715ca8f264e05a470f",
43
+        "img\/user-grey.svg": "1128d96d0a4281591140149de57924e014a1d709ab97d351100c901569bbabc8c8834caf1a5932408b7918997547c323b8b9f4f410e1f03a4eeb89045bd95ff8",
44
+        "img\/user.svg": "d69cf4ee448f7ba5d46fcee24895e8705c297f078d943ecee1ea242b470c5e89318a5eb077c81e9c2a656f903c4e869298cc2935cf05a4a5f79e295dbf86df60",
45
+        "js\/adminsettings.js": "817e186eb3c18f49ebb0db58d39e6ce9ba266ccc5706c55e4e8244785371e6074a49474dc4967eaef892e32e058b36676bca613c8c1ba8db876f0379cd66585e",
46
+        "js\/arrowup.js": "819fd1975011e2819502cbe5bd006204122d5e73560f6f7fabe9c9f14c7086206e54c8b51e3b005820a1e2d9d29c9254ce2c1c8687285efc8daf3d667e51e738",
47
+        "js\/deleteoldsms.js": "119caf1bdcb36616939bebd024963bc32a19e5ca318630a5a36c72c41c480d72a81b385a2c9891f87ae7d42c25c30fe1b5bb122caca802c4eb31387850fb4363",
48
+        "js\/sendsms.js": "5606b17557daddbfdbe505e5be133c06ee0143a84314d245e771daf0e95fa92e35c954321944f00ee9b81e1f29fd08cfab0de27514b42c819ff33860513a688a",
49
+        "js\/settings.js": "4ca5e175ebe913ad1db8bdb0ea7d50c4c8f54aaf8788736a95540a803f4a3e666b504e5c37ab45aa8122e29b818be464d129b1cd3d3033346dbf380ba8a5cd96",
50
+        "js\/showsmstables.js": "1ed549101d72feeb5e9a2ec4ea57856066cff4a5399554771040c82cec6dafcc020e5f97c858d9af072e42d29adb217801db9ff7b5c3acdaa466f6df466034f0",
51
+        "js\/tiff.js": "0c20e8d4f9f602ef497a26a50d8fd253abd55cf53afb0699638264550e931aba9b5b41c1ab0fdabee064046aab13b921c8d6988d76048f6c9795bed5aaac8aa7",
52
+        "js\/tiff.min.js": "c35f67b587aab62db7a3de662779a7b3264d70f5f856142cae88eadd1b477e474977f2b8c5ab31c16be002cb7ca9b52282e6de533b6fd79a02e6d33815919cb4",
53
+        "l10n\/en_GB.js": "30be5a195908c731891e456c699053a5b9675e5c21bcfbe6f2091f467dab6bf0dff3ea167b9f96e7c6b492d74709d5c732a5eabdbec30c129607b0990773609e",
54
+        "l10n\/en_GB.json": "7f1567f247b9b4ad32dd836903f34ae02cb93c26b34e7eec509ddd1a6e320d64be2d907796017c379afd7a9fd75c9ed5bd00187e93da4100132beed5c16ca74b",
55
+        "lib\/AppConfig.php": "c52269913ee80151397520bbebe4f0c725526910ce18f8717ba1c8016a5f4dcdc9a6f9350bc56c8a6b607ea342ee0cbe0f65afd9f03c31902190c008f41c9672",
56
+        "lib\/AppInfo\/Application.php": "7e5ff3a817b1d46e8b05e2453c34450c5629c25b5c3955593b36a22e5ff0a6a67a197665d476f7904c3dc8712105687153954c22a12f597828247a56a80f509b",
57
+        "lib\/Controller\/AuthorApiController.php": "d019b31f73493f7bec44a7e87d56255c79204b9d03376fc3492a7639b32eb7a9a5ec040fea82cd74f54f3ae0dba8389ee487f0f3a05a0c57a4380eab69595210",
58
+        "lib\/Controller\/PageController.php": "07da5883ea41b3f7993a3e358a03a3db592a30fa81ea1ed0f26a234fcc3824a243316b76824fb9a24f40304ae945c48118dd4bed1f0d2f6993e479ab2c1dcab6",
59
+        "lib\/Controller\/SmsrelentlessController.php": "ed7b3db597923fcf1a1cdd207a505612aa9c7bde2e95d2136231c529c6eb71554bbf323570b44c915e832846951d1ed4b5f713a8ef2baac88a3a34d5cbdaa2bf",
60
+        "lib\/Migration\/Version100Date20211106192148.php": "96b9793edf72598c0330aed9f0c6c27ebf02287bd84b6b7a0285fc784bdf6442b560bc5dd2e55b464bb384a24831ae17d7ea144b0896d9b11cb82a27fbf602ff",
61
+        "lib\/Migration\/Version106Date20220813144231.php": "33f1f2953e038350e37c670462cc79fa48ab3a72b595f5fce970fdcc6d7eefa3401722da4cc532c7114d0c8aab7fbf0281afb374a695d5c1c1b311c30f64c9b8",
62
+        "lib\/Migration\/Version108Date20220823132408.php": "5d94388496cd88cec1dbbe67a2e9d6ae6fd5db7ed42d4bc737710d3c51ad4d8ad29d53a62739e05e2986e2d4c96374f4660a53dd7b7808d30e44e5c605105971",
63
+        "lib\/Migration\/Version114Date20221202011625.php": "920ee001204afad537bf2b7dbdb7c78e95b4ad0c79f5f693bd56347a1df91045cd83348f99e2ad714df2a735cf1a1d85aeb385c675ef6e90eed26f18b0b7d344",
64
+        "lib\/Migration\/Version116Date20230508212745.php": "9aac351f06522844ca8df30901c1bd9d0f5a1171e4228984f7abc93f99b8af1bc7dee72cb33067cec02bdaba70891c72b5a5b9366b22300ce34e5325a21bbdfa",
65
+        "lib\/Migration\/Version117Date20230509183517.php": "0c8d70c7105c42e46953377d1c2e918e6094550f290511db5fe715d7bf294ba9deec88193f6e33f827e39ed2ba470a89b760ba1f6a937b259696b785f7010a65",
66
+        "lib\/Migration\/Version118Date20230509194216.php": "7cd6bec3daf696b4ae3a9afe774c6d4fb0c00abb572970a9ca4f378820b16b8d5b5b03de625dd9ce0470df46aaa95b1f00004130bed84d4198075796adf90cac",
67
+        "lib\/Migration\/Version120Date20230520072431.php": "b9842b342653c3c5994164e4d47699d9629d8847c237a14b291817657dee695635821ea225868e47bd36393874e89369f53a19d3da4142708f60fb0dd81e0ce8",
68
+        "lib\/Migration\/Version121Date20230523201743.php": "d79bd0bf26d98108ddfb2a66646faad59f95a8905a1577496fa41ce65987a0ab5819e6da9e071e6c435d7403acca3a6c2a95f793d651cb4de3eb57b0fb25d8d6",
69
+        "lib\/Service\/SmsrelentlessService.php": "60881ced4534ae784141a53e4fe4b70f28b44d03c90c166ab8d9803aa7e210a99b53a14525ba358ccf2872164918d53d3cb71c95b2f4b1e8ba7e66150d3fabec",
70
+        "lib\/Settings\/Admin.php": "e4e5f6e8fc5748b11c90b676326dc228fbc52fe1f77a07e7b7460c6dbf2a8013b5e0b0f9084aac3f941478ae6ae75c47be17df3d229d8a998363b9a1d289f405",
71
+        "lib\/Settings\/AdminSection.php": "1c8fb26e8347d67c69af385b0aa33be2764135a4672b872b6c6d41bef3eac6733ca2796c393c8ff334ff56accd7ed4d4c38ca50baff2360d8d8be02b9f8a7c08",
72
+        "lib\/Settings\/Personal.php": "db6fc80342c865841edcae7d2cce5e50d04473a9ac47e26c2daabce493bbb1bbb922bbe9eb7353d759965506dbf1b4c99ce8e9c93f5c43769e1064cba19f95dd",
73
+        "lib\/Settings\/PersonalSection.php": "e65e1a8939e3818e7cd295ce86581a603b1e2fedb732ce51ed1fce62cb61ebae9b93742b1d923f08e14cdc6bd5cf2818d47917321e0aa1736932830c05a81682",
74
+        "providers\/Flowroute\/readme.txt": "25f08fea0f30105e850dbf07bb7a9351e47883640dd87d26981cf50f02ab5af8ef59dbd1fbe5e4127c0e019e13ce036f9414401b9d3f3a924c4125c291e53446",
75
+        "providers\/Plivo\/composer.json": "2d8def5ce9444d4bfe4ff32e008e6aeec924efd40e0cb61f3a72585fc4cf89e7b62970e796d56ebdd5d2f6378f39d3ad540ffdd02c31e2c4daae9b760482619e",
76
+        "providers\/Plivo\/composer.lock": "d9a2b89de334156eaded5ca4cdaee9b53c05e5d78584faf000a141692225a1bf6a1dd9ea6259bee2158ca7669c4000b3c366703fcd1f55a835278aa9f653c7c1",
77
+        "providers\/Plivo\/vendor\/autoload.php": "597387bcc320be22e8b0060c456fc745d8e3fbb06cd1cfbdf093b0ee52aa30cb7e4c31d6d8c38450f52387c0cd5f9d0483e3976611d96f391f5651b71d2095fc",
78
+        "providers\/Plivo\/vendor\/composer\/ClassLoader.php": "2b6fa585122ace1ba816410acbd8372cb75329917aae6363dbad48e396cca581452616e1386a2e445a8fbb0e461b988279103f4f89adf704bce7726f761abf0e",
79
+        "providers\/Plivo\/vendor\/composer\/InstalledVersions.php": "62b61a5303337c975905fa55addb6b1157034fecaa5fb3b5bad251ef7fa1b1ba840308f64fd2e1244d2098b7f87431e35939a153298530cdbd82f81b99cabaa2",
80
+        "providers\/Plivo\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a",
81
+        "providers\/Plivo\/vendor\/composer\/autoload_classmap.php": "1844f7843fdaabef42d1d9e4c09f92f51a5ad45b26d44b34a2aa9202a183489239a0f5ee6502f302b169ccfa3a4bea7308771ca02d3bad96095b5b2194a65377",
82
+        "providers\/Plivo\/vendor\/composer\/autoload_files.php": "c0eaa5b28b83539deb67f24a98ebff5ac0483f9117a72d5cbba02e26f1f18cd4c93ebc23786047ee61eeef11961c55ae6cd4d4096a16f18a19d2af49a47820bb",
83
+        "providers\/Plivo\/vendor\/composer\/autoload_namespaces.php": "0ac6bde683c053d62b7024686ecced083ca1a326d5346a248b1a058ac74a5af71d515d311ce76df799a518027f734b80b9e7f6e8022a9556c0f24ce90240d822",
84
+        "providers\/Plivo\/vendor\/composer\/autoload_psr4.php": "91bffab80b2ba961f206bf3008a7380f81b7cac7b09afe4bcd2d4787d8b4c839ffe2a67442e04010918631b1c76b66304e7d7bce76371e741b444f2ef527355f",
85
+        "providers\/Plivo\/vendor\/composer\/autoload_real.php": "2ff5b7a817e3acbf585fe506b11345f6f3ab0f21c0ee96c67037f09de6130126d4c0e728ea22508192787a451322369197610726f96f32a12f91b7e48cee86a1",
86
+        "providers\/Plivo\/vendor\/composer\/autoload_static.php": "4fdf5e58875a6dc6bab4aafefd254cf3504f78feecdeda5fb431a56f84b37d2cf8fab8e233ecaadc2667f1be492ded264423f3200e1095aa507172b0dad3f60b",
87
+        "providers\/Plivo\/vendor\/composer\/installed.json": "0365a8c8cb376a0b3ca8cdf63147012435d2488c5ab585db3f9e0d926b588887992c1c8cfe07ac187f5f72afa9a3db936c6885d443db444147d7c87ff0f3084b",
88
+        "providers\/Plivo\/vendor\/composer\/installed.php": "923c151f9cca2fe9489aa4cfe04053d20e1923dfb388cc6aea2486557d77284fe6d9d2a77a7acd94496237465f03b712166a2f2f5837ab13bbb7f0aed8d52552",
89
+        "providers\/Plivo\/vendor\/composer\/platform_check.php": "49e79f2c7c1c32796dfef02f64feda4fc8fc5aa05197465fba579997d332cb9dfcad3511efbb34a32a2b2c8d8901be4ca39867026b2471fb17999ba840c3c340",
90
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/LICENSE": "6f6cbdccc57476f5386f5336c1efa105b4116760a329ae2fedb30fabe1f34f7c1a3073e7f711e07284c8b57b3b8ab6dcb38ba8d71f6835ac024ad524ad658f94",
91
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/README.md": "8f3226941b2d676aa31b66f5a38f6fa78a4073ec7ea6d6a3aaf0209072cbc8df2ebee65f64460e350f499f8448542443f9859db75f927fcbe70f1f59384e1a70",
92
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/composer.json": "82e17e8f606504476175a3c5116bff37c3d58faf5fbd9590cc4047f787b6aae79a84c660bf2e8dca453b998926dec84e6d5bca5d81b6817e09d99c6774cd04e3",
93
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/BeforeValidException.php": "8aac5fb14b6d94bcf048a1cd4935af09c25183e74eaad8f2db19902f1f017a33261707b12be8080d5a662bd01d997d4d5805cfcdf3127f447feb6ec6b971f563",
94
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/ExpiredException.php": "7cf0ec0dd02717f5152abf5c01979526fbb89f04c01802915745097c8606e432b41a4de5bf92b7cd1543b37a939ce8e133b7622f29cc48798c321654dfb94a3a",
95
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWK.php": "3f134e7503b44f882a92a699dc4cbb4d7415bb93526438e4395cbe877ab2da700d3ef7a8c037d7d2ffabb84e20165f93e338bb32c2bad9426e63708da4f842e3",
96
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWT.php": "9e5e21477b0495c3cc6fdff79d9b6acc136c0187d732cfa4ea438d9802be4642c2fe0e76b288238fa29bb0a8e37e31d57546d548519436dc49de467cfa704ed1",
97
+        "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/SignatureInvalidException.php": "0c00a3a08bf4fc2eb675fe8ad3d8cb732a82a8f88d37dba5e510ec798a49342b8089098dfae1f1ef1906e62a4b8e465fb7b4c6d17c9c0d8e66ba33ab271e5c88",
98
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/CHANGELOG.md": "f99b50bf2d30b8e842d2db14a28068364b330b402db7bb1fe87fd4e1e3a9009edb05a519a4c35be68ba99c4c334680ff52ff0bebb84ab99de8814959d34e9c90",
99
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/LICENSE": "ed4199d68a412c0515450194549bac0c6a6d838b3950c036bff6c97457fade76fc914d11bf008321b3e2622ef0a3c14da0bee2f109529cfa5a5fdc11fc6452ae",
100
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/README.md": "dcb463420d7da1805c5cc020988f60c15fc5623a2493556ba4bba63d431c21f0584c1e65f27bf0a4c7962074aacf40d763981f878a10e12327cff9b89204ae57",
101
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/UPGRADING.md": "4f2540329c6e06bc0f05a574b0ce5d77ac3f7fa4032371665dce41a766cd28ee12a0b7803ca507faf005f6a3ec5107a60978b69a4fede8bc562333b736576f55",
102
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/composer.json": "8746b3c8b0fcf0ede926b6a60b4d34e7a3e0e9664aef67b34e7e238c25179d22ce599e8c4a580e9f3d73122a0c9b373b87526874c947878ab339e662b03c150d",
103
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizer.php": "649dbacf3be500e6171769c18b1eec1888bfe831dcef8464ebce4461d5fd337c60a200d3c89f9bd7c2714c0567e5e220b31ec2970e7a013f914123824ea324a8",
104
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizerInterface.php": "d0a1271ad03136dca5752c0dfaa7fa678c6fb03890be828780201cd9fbdc8169ff4fd7c17867cf82ef1672ecf0e9f871f682ade1a8ff37e7b84d24c572e1b962",
105
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Client.php": "8fc98c3490398476a81f660a0dda38306acedaab2f662f762881c11f98bab8b5194ea6c05477bfb2676848f54229087df8fac0e6aacec6499f2313e09b940ea4",
106
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientInterface.php": "d1ab53fbb1b6695e6537050421b3a749a7b34b3184015da449a1c76987fd6944bcc1c4cca7247b98b338926af89fa477f9be4897e6316cefb2c1656520c3ea2d",
107
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientTrait.php": "ec1e95b2f1c56e4443c6fcf695ede88e02f1129b7027287f968a0ef2f7debb7533ce2371a27b5ee07f78818786b0a6d1b3d2f8ce28f44f4a8f7e275bbd1b6727",
108
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJar.php": "3fa0964d59cbba956bb47fe103f02e4707a2a6ebe5a60dd5c33f59402a090b6f0110c2795b52f961f6ddf338567382e1248f1e27bf2d0e2033a43efd15e2705c",
109
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJarInterface.php": "a3c6b9138e285d6c6b7521dc7059a04e1c80bc0de7a925c93ecde6c95cb7fadab91ee05e9594d6b891872a557a1b98fc6717ca1d1d46e00992c9cdcdb934a71a",
110
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/FileCookieJar.php": "35111b9229059f54b537baec960b8480d5e3caf2961ca3e7e45de3fa5ad5bd0b0a91c2c4231f6386a4966bf9d97aa308a7e444000dae9b21f8c58b6832dee68b",
111
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SessionCookieJar.php": "9cf11d2908913a7555e9e190e6a4ffb0f0e26ddb3d141faeb0e7bafaa6f0b3259119ce6febb6d01b5a7f5a3193f72a099f08ea45b5955bdc7120bfd4857879a6",
112
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SetCookie.php": "7d6c4c14c9d652c27da23923cb577fa999e24f81c1b82f13fa329da3eda3373ba7a832b72d793d924fda9d6a3a02cb39db97e49e17feab3ecc93f395e614d44b",
113
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/BadResponseException.php": "4b7a572e9796b8043d56dc6650709e59bde237b3bacab1206b807485cc850ec99dde86892696d73121c345f1c88a9d2e879dc91be2cd438defe2609e521011b4",
114
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ClientException.php": "0011418b0cd07eff70f99645a008c30e9a6a90b9ec396e8cf70ffc281140054bf313eba40d97ed34b59e04e5fd6712330d34268353493d112b8029c1c42e5046",
115
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ConnectException.php": "bca929720f3f8f4484899b18b40f5d4d40ebc4105b316679a9349b97200c74ad2ae6408e2362b4639bcc4a3150fe63ca1e08bc1b159c51744d76466c41203c83",
116
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/GuzzleException.php": "444ae2d2847cc99d9a3895e2d23f0abe59bf0eae279809f7a4983e34098ee0a0ad7408d251df821c4029621060aff1ea0dc890615535ea4368e5796151a767cb",
117
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/InvalidArgumentException.php": "2647ca6c297960b01b29435db7522ece3a997def6b3af71e26113abd43ca4493501c130e7767b845db0e723f9955164ce33664d49bd67a45bd29d270a66e0e3b",
118
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/RequestException.php": "b0b3163e4eb96ace90c03faf9406b89ae21c7cd5fcabe78035d5d9e1e7ba0ff72bcf31b877ce2d5cd38e940cf0ead52659c3637dfa3567745fb46a11cc9de31a",
119
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ServerException.php": "9cab599fd913d8f0bb1b8f448932ae0b5c5b1cd7d83fc4e1e4c13fec29b0a849a5385a6c40183b8dc58404ed020227b9ea4483ac89d135c6c82e4c7985604044",
120
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TooManyRedirectsException.php": "99c4e6f908a5dc03939ca083232cf48cecd742616e00839ae25ca173ec458e6da10be2690b98588b76e0f3c24ee7f35c09ed5c848f9348c639c414aecedf6c2d",
121
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TransferException.php": "665600a8617328454b70a43fbb72c81ea196584dc22e10324b3c861974aa55ff5867b30b86a65123f1bd4fece75049a9f6c4bfeef5410a9f29913d350358178b",
122
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactory.php": "1dd7a848ab73a8db9354fa2f0461a995320ccb677b29464812a484730a85f405d8b6c9b39783881b299328cb8f99e67b9d959b00672bf60a4559b136fdae8119",
123
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactoryInterface.php": "0d063ee120e0ff6042a58d29b109bf6573494d427e20184a4d448ef31fe0cb0cedd60bb47c7289d5f6e1027413a28f9f57921823605d4f11086da5c9be8c0902",
124
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlHandler.php": "ae0388a0146bd0cfff1c597570f58acec92876d3d01298e1988dabc717ffd76895b45359cafd7bbc62ca1fb5e7e96fdab70697a2cb469c8c5d0298aef12e44e9",
125
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlMultiHandler.php": "d03d4a374657d671554d06e5622eef0d1b06d0a39a9167ec6f894ee28af31defe1d4306f937376cf5997c1421643e08e757880e45a1c9c10959c967022160f96",
126
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/EasyHandle.php": "7438c054921687fcc4bea6ef6b49aae15651a95cced2cf73ffe46bb15abdf924afdd4784e8d2121ca851934fafce69d3661f1a792e6f2352cc5f5c1803ace3de",
127
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/MockHandler.php": "0d8e2e43e0b8079f20de6b86c241afdc83bb5bcdc5a91ac47084ffdf2a3904a79e5db6fbafa4715785ded8fb90dd8fc418aa05bc0fa8c52220555720f81e827e",
128
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/Proxy.php": "9caf11da430da351eff6e9be0a1e8e029bce41283a6d8215e2215d6abbd3f021018564d1e6717f65f280703d5e4dab78a2b522042d63c5a9cfd019b0bb0aa4f9",
129
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/StreamHandler.php": "e45738ddf123fa57df229fccc94622b9a2ad5dd9bf6f65d24756239b587937bac9b7a37220e65c55f2abbd7159bc16ac785893d4aac5c192e6422af4fc4f1222",
130
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/HandlerStack.php": "900b9df966c3c1f3aadc45bd42a81e8ab153c74d0eb90cb3c8b2f9d46115353f45e5bcaf0eaba1281ab98dffb3d136a0c0fa0058fe73d906eebb741b273c150a",
131
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatter.php": "99460bb55080cbc7e08eb6f1b3c8abc71c38cd5d6e04422bdf8144ca554e7d7de29fc5d5dbf7aab5f7440c4ec9d779d684f8194f90139a1ece1bb086f14e3cc5",
132
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatterInterface.php": "609462659ab00682e7fdd1bb56aed5ad3cf54a2ee3b641623175b9dca0136b4e1cbd3cb0541526ed86d05174a18a9333ba52a9e50f4c05ece55cdc636815e385",
133
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Middleware.php": "42fea3a5bff7eb363a7af1f85a21a9322aee8d7e343295209815739f8bbd5dc372f14e3e8c5454f7650a3b9d802ca25fa069d64fa16b0f5d4d48c3d626ba3527",
134
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Pool.php": "a6d17779976754d7c16127680ae32f8e45ed54c3ef4a2a6364a1e4100ce732b8494b2848977ba6b2bf6fd296d7a54b30a2f021cba5a88ddd0d1e0f3a3712b9cd",
135
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/PrepareBodyMiddleware.php": "268182133f0e484b56fa23193d20def23166eeabcc2fd9626b17cbc20188d76549adaa4c768df695b787d31b2eb26a5316f0a3531ad3ed022aaddf0574fc2ac8",
136
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RedirectMiddleware.php": "38bbd75b92a6764b0502cea113e222d5cce7abe53c7ea0c01e441fbbb6b0514f2f54388ff14d459ed611925eaf9b48c0aee1b1fb41892d07d1b260734a1d2afb",
137
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RequestOptions.php": "239e524c17dadb296efbd8b9ba82b94ddfcd90c83377fe4bf2890dae5dbc62f58032205274575f14bb2e745112ee59bb559936b992d9a227dec00f5b2e32c03d",
138
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RetryMiddleware.php": "01236bb2265c0761148ccdda7d3668c10f9539119bcdcc36f10d077ca32013ca0169938d6f4bd0703018f38fac53b2bd34e873a07d8e5287c26fb64b7284dfe8",
139
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/TransferStats.php": "4fe882f7f801ba55a3934e00d81aef09edd092eadef498f3bb424f7f32dc8d568940806a9d8e80b1b6c768cffd41ecf0814a0bb366195b2400f08a8e310a8c19",
140
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Utils.php": "c3e52199a0a1755f52b6902b78d008de10e33ff8b93242a709d7a12e8c05c1c2c09c2874439606f0f3ce6b353bbe3b8ac385a236307b428fbccc078e1959c7c1",
141
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions.php": "f45c62cbff0de0255f4f149ee3e93c52bdae44492d43c9314a48d8a793ef028f8a8f704a2b28c5b84491687c3b682e9f85c4ea61bf63de56c6cc6a4ba8081ae8",
142
+        "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions_include.php": "058a92f735b5848dc18be383478bd1659a0b578beba1dce5a1ef3b7a0b6b5f643e2f222dd72ed09ec72e8a5c5c9fae9757979f7c4016c5654bcce9d7dfd42d37",
143
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/.php_cs.dist": "4d42019074dff2a1a5bebfa51568de254e5128b88ad309bbed5e8348ef213035cf3a4da66ae6753354a0dcf6ccc0001bfafa2453028bffb3548f2ede26c30177",
144
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/CHANGELOG.md": "0c021cdbfea029de4a20511445e64d0d6c35400025f1361cc913754adce9b2dc16efeac12cbdd489ffcbb76e95f91108dcc557fb9dfdacc99e5bb98f20b55b43",
145
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/LICENSE": "9699a00cb2c5ebf932515e1232b83f79c944f8100881df096de09e25222fa01173bf24d9e083db7d9605d1e4f5dfa14c726aed52c0fc2499643714a9e64c4cc5",
146
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/Makefile": "a350f48cbb68a05cd07f787522193851f9cdc6b2643e34eb502fe261387d97e5ceb8499a22b20ff2fec5d7352ff239a952fa3b129ba3407fae871683d65e9bbe",
147
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/README.md": "1ea705deca28d726cc65d0f55db886545b9f5309ccc085bb482f627a0ddb5f8609d6635f65686e3e26b9a23cb8bf03b3e8d02a26d25eaf8195dc6c2cc93be0bf",
148
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/composer.json": "74a66451bfa422f886266ff300b4ca5f7b0ed62199293635671718caced457f6eab5b8c9467f24e999762f56368fb35742dc0adaa35a233d32c72783112a6c50",
149
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/phpstan-baseline.neon": "916bcb7d298578dfc4770a3c49ee558eef9a20dbff8e3d097506379c8680917b08a8f96f2b59d96b1b56b1ccf4a5478c868a2da504a1935956db70f51528494f",
150
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/phpstan.neon.dist": "ddfcf700a47b916ed1072c979f13d6d51327c9bc389c49ad264ba23279b01151b90aaeef0a81a13eafd40115d407ceaf471c20a61b47f1b4796f8adf3c1ad218",
151
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/psalm.xml": "52c09c8b7daf6d90db16a5ce50b7a8ce15c1ffa02265fd1d4b117cf717331475245bfd4f2dc45d3990d67333988a11081e13ebf783bca8854a1df9c1b0cc9cfa",
152
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/AggregateException.php": "97b6e46aa16ad26a2b714129b83d933cba02ec7afcda514ef67c5027cf5b9b93a5d7cbc72560307adf294179a4d7b86a6da9caa835bcf5be17e398501bb88fba",
153
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/CancellationException.php": "b958ade84fa4e6c7a7efed66dfb6a7f83b9743a9ac6581276eb99bcab667ebcdfea92a9bb114d086c5831d26abf7f6ec3e03254067e2b29abaec995e28cbce8d",
154
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Coroutine.php": "d1c789e47536cf8c9db52acf791bc6de0d61790856a78f0cf6a9c98a1628d2c42cdf9e5e94e05fea802a099bd3ae3c65b790f2fb5a342bd130654c4cfb4fcf07",
155
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Create.php": "a3651bfb1f458675c58397460c8534c2819404fc89422467f119de4cd80147177e462a9965bde6a75e74e4354c3c6935cebe1891e6a53a1bb26383f22e9dbccc",
156
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Each.php": "e57ea03f69e1680b56676ca1057e8defe7eaefeffb456b636f3cb32295eb6be36073c7a9a621f656c40d5661c0fbfaa3a632961d82ec7f116ab7fb5aa9db196a",
157
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/EachPromise.php": "c7d79757cca80b7352ffd12a6743a515255e4a89764f65067035b16fe39c09b6dabb833aec3fad3cb741aefd778f620202caf79e98b86095c6b252f4e555bbcd",
158
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/FulfilledPromise.php": "952eac7f7cc150394dedb72ac97e624db8156ecd41c8afc382ed0cf8e4c2c6c94879b7ddf6ff76608c6a95ef30ee136f44fa03ab9f5ce4b7fa01bcd0c7e7574f",
159
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Is.php": "894b3c475b5a828e442745507fae4b35bf394fc9fc93905258f9736a67112c321b1f3e353f8f3fb84e8778bff67bd9d27a6fd5ab6dab3218a30d82b8fd14ae0a",
160
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Promise.php": "bbfba94124c36b87941e1548162708a5543f156d64a8f465f78397a02bdc34c764b60f73d5e77a3a2e48727f4cbd91f60b9c1cd47c0fe205994c4ffdadb99c5c",
161
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromiseInterface.php": "8d8d1d9e04d75ceb6d3e656794fa93170a3b1f9c2dd3b53ba6b4dd3e599f880599cab0b1ec15eaedc1b26d09d6c535dc9fe92802ea8ab1ed5927ee8cda7cb9b3",
162
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromisorInterface.php": "1058176a68078d02c288528673176648e38d2b8093e67b0984d73ebc710c0bda7019689303b1f064726cbbfc9382e733443e9d5443a77715ba40bb798ac79e04",
163
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectedPromise.php": "53914a46ca238b8d079333f9c71180aed015a77bf765cd2793790dde21fa7fcf67dcedc5c797a1d7caa06d788bd9631628712861b1185f3cef9aa63260aff0cd",
164
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectionException.php": "6dae5e0b0b47538e5c94a3d4890623e3ec41be8198a1d00ca84d77f32b9d074cae13e25ea90e2af614e802aa28271def466e5ab623c187df49425cdfc5bc05f3",
165
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueue.php": "431a73762758dd08406a41587115a11e61f921cc01997ea71efd803b2e3882b9cb7f6d89694e06ecd2992f2bffa38ba55d631dba7fabfce3b84d68dd4913a02f",
166
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueueInterface.php": "f0b2b36ffb75337c590f82d3d7d19a4caa4eecd6003c0bec7ef935604dfe35f4e960f49da7115b3b3cf65c61d04bdf258310ae1b4f4b6cff4eb09f52626adc11",
167
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Utils.php": "9bb1eebf4d0f43bc47cda6f70f08b3fde962355075bb87d40ec75d41b552c262a79023a72e2e8d776b6d0db1ef1d412e398ae16d96476aa5c72afbdab9d5a9fc",
168
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/functions.php": "b756c2bce2557e9c6b8db2ebfb026354418c93f54169d1e9249478532bb02e1062c30e14060a3bae195098c74deb4f7580943aca944a162615c44139acfa7861",
169
+        "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/functions_include.php": "17063296fca8aa655e7d5267abcf04051cd58fab5a7ff02530e1becb5002306252d5ec55c82461cc51f62c881c51dd80da53ed9d90640b6d0dd56d5e8f819022",
170
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/CHANGELOG.md": "0540da857957565d77741b846932c739e0883751660d561b2a0990a7cec8188573c2d31400cf9f125d1b6eab482455d19f30a8363354341e3c54088a0c418e7a",
171
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/LICENSE": "5d25479f1c9c0b802e2944e029d7011f9b9d3f7b37f7c12eb77321ba448414f79b0b254c0846d2e5e1b8826bed85d7c377803a4ad5d5afb288f220c761822043",
172
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/README.md": "b9759cedfe2199b2477e95fc0770f35ed6a4a18c6e6b4b4e30a20f75945505dcc76834e20e61e3aed90fd790c677536bb43f593de8a68558a200000eca8d0bdc",
173
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/composer.json": "27ad0b2937068e201fd0312a7dcfba706a8a318ca4e09d80f29611803bfb28d48433ba5f2b452da8bd76fdfe2b9f073f81f2e2cd6fc3e4223b20637408f6c836",
174
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/AppendStream.php": "d94d352d6f640589e84fe2aae0bd20880c4d6e897a29a47d4dffe6aed4d852fd5df274db2e68124c7f15b84d6f4fc684873fd03d003db39caa61b024b053e396",
175
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/BufferStream.php": "eee7de67e107fb33e8f97949743726a30e8201fd874490fc93870a410b1e0e3a059b75dda972b3a844b8c739b9b768a73d65c61bf8030589d0d787aa26f70e8e",
176
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/CachingStream.php": "e9b1e3d5e2bfae610677b9d216643be7b2e8b97cf661bc5c67631f994df0dc88a9a9ac7bb9dd68fcfd2ed343cadbbae227a8a46baa3b732733497e24f1338be7",
177
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/DroppingStream.php": "63db37354a2eba98b768f0929ee9a4ffbce1647a79cc9aee5e994cb693e53cfdb9f7a0fc4c32b68b46c64b39438b1c53a30532f5f8fb442f07062a6b4861e39e",
178
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/FnStream.php": "bd25e2ca8ea196a5e876c5b9d01c6f2a27b206f7ba05d047cb46476c52191a594f1280c7435b6429e4ea411fe5fc01a2388e213df26d27c5ae5094a0d0f2d619",
179
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Header.php": "27014466522ffca93b4a3da6e96a5e8501f11691f7642a2e5091f3d0c1b146789ea41fd7fa1e3948f264926e7b764b557b1b564a95a7b5cd56c17c8ddfb6b7d1",
180
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/InflateStream.php": "e19b69eb2f1d2f8782f7285414095ea810f746d02a447badef5ec7185623235f17f5689682b185ba124e71a19b0dcf3d36b64894d183e25edf27f1d1e34c1c0f",
181
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LazyOpenStream.php": "8c262a2c574767d61a9eb084d6848bef77d047601ec5688a90fbc012d5349d9b4ea188444fe509c8ffbcbf6ecdfd839a461505ed3746b6e1c5283860f7fd4a2d",
182
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LimitStream.php": "81a43b1ec261207c1a52faac2c5099a429e43083bbe0c9099f447859d2ea12a45d30e7f0b5a994696084b3c59401bc28564685c432644caf6a9d8b9669404c91",
183
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Message.php": "4e9b857c226b57e2d2faea27643d6f213bba65bf158889a528fd684cf1acce6f480805d04da39a32fbd25be9fc51c4f1a3c1bbc9e92f3707fcf33a120b2aa256",
184
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MessageTrait.php": "367bacfe383be2caeb0064fe80e5f6b138050dd4189bb65ff82d8f86d0b1b604090b61a2473d7e80c733c395cb893fa9eb2dad0a63a353c19da32e940a1de01a",
185
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MimeType.php": "98467f19beca7d4239963d4d91a7896d44539c13a5c694c4aa8ec68f3b57031367d1cddff19fb51c389393cd1402a574c9afdc448766c8807228d726796d2e9c",
186
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MultipartStream.php": "5bbb8f71ad1f2f421eac8c0d40c3a18372516e8ab8f2bb3f917871bec9aef0eafbef930902084aa3ca64a8ae930edb1f2befe1e6b49dec387ea239c5c475c099",
187
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/NoSeekStream.php": "f003ec01ce15f5dd56200396a84a2c94a1b134d320230983ef91efb1abc770827018894a1b8d1f3a68c2aa481e8f0bfbaec4c568d0b0fe251a61f76ee22efa38",
188
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/PumpStream.php": "15192b83cabf910107b30bde59197618e524aece85f9d396dcd8459174fe50a1cb82de51e5225b8e6ea64fbeec7b4d94f035bba2ed893efebb660105021fc98d",
189
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Query.php": "8ace1f141c08396103431803ed35e1bf247fdf7f7c7b727ca63e58a1cfdd7e353a6c266c8a7bdbb863e5d290414ea630bbe37f55f275cc5a5b946b794ce01740",
190
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Request.php": "e0582b7b304fddcd81a214bd8ecd4db301479eddec3084b18b822f5e22fbc9d1fe3f3d2f6ba52959619dfbd0e98db304b2400e67675fca41f470ca6126085da2",
191
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Response.php": "32524250d58fba5c152472ed37160a9aba92c586c9b2a6bc55f97134e490636189bc8708fd8ca4145478a5bb20ea51b5bc417fa8d61ab08fab3479a04c4506e2",
192
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Rfc7230.php": "beb2f85fd643c3cdb3c92b401c4df1385bc6fcddf7dfbfbed88396611438720a1b86ecb9b913472ca8edf1bd9782a3692b2138195fb366ac1b8a7f1b0b81d390",
193
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/ServerRequest.php": "f3fead87c83ce2f73b2890ec79cc620f319c59ebc41a041e4b70b38bb1e412c928fd7ff0f10d96fffed841cdc1ef2874d5ddb0e7cfbbad3ffa81ce7484365c05",
194
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Stream.php": "7d108ed410ba89cad35637f837d97f7ef53c43a4666d0502e3e7dc4aad06e7bc365f311961d2bb8768faf9d9c6d64d09e080aa9bc65638084a127e7a563acbbb",
195
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamDecoratorTrait.php": "e1b90e1d97a4a1ed1eb1552bcaa9011f79733167b7e5e3f2af8cfdc54adf0d64a414ed630ec74418020fd8ecc7c75e43db6bbe0fdb9ec6d3ea928bd3bb3f4561",
196
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamWrapper.php": "7ed1833a91a1f56b743172192b7ce4399928b261eddba6bdcdde958bbeedeadcaadff4fe5b3913dad0e4b2cd9346f47b43849cc65bbdb839c9d9e4b586638eef",
197
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UploadedFile.php": "a66f1119bd7327a19315456f17ac2d3ecb40e564705d41047a91a02b431efcde1eab2750b2f354fd2f5c10c1ec1b5968e84e758d51210f011dafa8df5fb35c0c",
198
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Uri.php": "fc5c81c97687dcd34ebd18c6714479eb6b4d1c7d58963bf7f1f732eae98a04b094dd9c99d58f4bff265b2faf0629a456c391ab5b96534c927420f51a95dda637",
199
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriNormalizer.php": "8992ef486358f43df4a9567a6a232ad76883d9c7cacdc94707343e5465c857a4385739f66d0024136df94c59e60a5ccbf1850634a55f2cc1f56adddc717434e0",
200
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriResolver.php": "46e4c0ed24579ad9a0cf467141fda7dce6dd3a3d3281a1606261f322462d1b19bca413f3c5590b7ad42fda1fc57e60ba86d121b5af0c5b5a2ea21bbdf07f44fa",
201
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Utils.php": "be75312627f929b2ac94cd6d12972816a13660a40d25cf87f6fc7fb7af416316ba8988656147a16becfa8120ce2a484c84d9f399b43dea2cd3c7ed916f7d8302",
202
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/functions.php": "f31604b89969730b482cd03a13b1356ff9b91324eeaa9ec45a45f86be2bd52a8209cec55aa878d5875a3c82fadd86848d558789d0072e853505d644f0a2603ab",
203
+        "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/functions_include.php": "5b85d1438039f778c454f67bfd3ff2933d06b1aa4bbf9dc516e385bd36cd749f7001de6278c5a1b4e3c5a7d280876d4d35337f87a0dcc6e521ccc20a3ddad1bb",
204
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/AUTHORS.md": "bd202fc574c862a7c3d4a27653605b6fa377823744a793a7848ddaa7001166fd645d6047892d79c8488786d82fee785b87b19e9af1d04512503eb195bd300aad",
205
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/CHANGELOG.md": "ef87f930b797ba0b32dec670491e021b5c881f6986624c1906d8f910e8393b37e6d7f5eb9f860c1bb8447ce61a206bca80db4b2279c57bb064a28be3d83690fd",
206
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/Jenkinsfile": "98d95e7185d040e9aea6e75118ec17ac34e38e17f8ad5a38d869ea02c0c9de5dd79d208a78da23ccb87444df7b7de827b314469027ee7573cc51423521786320",
207
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/LICENSE.txt": "0974968907abaaf61b640ece98a502e3c677b7cf734ccc82cb522b3e166c50eaccb189b4d31b03bdfe8e61a97b3ce06917a7ff5c7c60887e2ae944f909fb6e72",
208
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/README.md": "ddaea1367057ed09023311b6ce37938985c188fbbcb6867c6c3ddfbdb984b954e42fd6450d1e5cfe10374ddc4448f9b96d6130d465983d634ddb3c0b01a276a4",
209
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/ci\/config.yml": "d50e43de2ba68261ae35625f8ce984903baffc3c6535d31a7fb3c5efddd08f71cf0ec3aaf22ee9e17e93852dd99284b653b343a053ba50a45cf6716033131e3f",
210
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/composer.json": "c6b4f35c928d33d62b48139a8be5d85868fdcd0716380865f8dbe0f5a708600ad7dffb3ba510a45bf4a8002f7e1fbefb1c835de7e3e2d9b7c1cbddf9fa2b565d",
211
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/JWT.php": "ee8052cfd45be4eac77df60902c518a14bf2df07ae7218322493a8e2d115280b87c65f9637ca766a63d82dce36c7c78e894984dc83031a9b7a8d5a6345d38214",
212
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/Phlo.php": "f9d6482c51987aaa3d7f0db59cd45030e17284262681866999309205161094d96a55a39dd2898d0b7980074d764e1bde6cb6ad1f50be8a40cc9d557431c1bf91",
213
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/SSML.php": "932a827eedcd81956c275529815a2f7542636b0cb887fcf182648e8f972006f6ba8ea4a763b3de48aac989f26a5e44752c7d3a62df256ee2b6a1c922de677e14",
214
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Authentication\/BasicAuth.php": "42c036c38225556834ad5cb916db0c4783c7127909053ef623e7f71aa51c9fc968b9523fe5dcdaebee769cecdb0c4c76215116cbf5959b268c8792fa96754531",
215
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/BaseClient.php": "029f2be5a3c7734b5030b4fa96e0d7c0c1252bb7b30b9f001a78abaa646d6d3821a127859e5d170ea5e3c7f5c86d06112f28152c5cb2315f94dbccd318f9e5e0",
216
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoAuthenticationException.php": "7ee7458999adea1ab1722358f669467cb35265eb616ef2eb16e6bc3d42a7f3c2fcb0b42655df8f4f21127bfecded765bcb479a6923dbf1a184e00f6e26321ab4",
217
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoNotFoundException.php": "bf54dd70534e988c27d5e7d17bf8edf9dc65191b77677d9ffbf95ae3bd019f1ba368065e82440e04f9a0d7045cd62b5915943273b5d8d72ba01676ebf2975edb",
218
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRequestException.php": "6655a36e42e700283235b84889088e378bab6861ae98ea99c20bde017ed39b83dc743e5c166e8129b9910a434b119578b23523fdfd5e9e1dcf3d57c5cf9375ef",
219
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoResponseException.php": "4f18628f90b1c5142446f0e394d5071a91995baec240344a1afa47687ae463cdc3dd18a79008813077a3511c1b00dff7a8715d26990afcb6f9726598c96822f3",
220
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRestException.php": "758babb40ea45fb50dafe5231605196214736f014860618af9ca7161157255cdf20c5b0bf534f6f6b30a4f9bf612b5ff5edd2f7adc45553ef12555354f82c15a",
221
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoServerException.php": "b2b8f6d1d03a720885ce5718b1c80bc75c7f483f72a1d2d2313b98a37e152ca78bb688f7923f025563517a52de7e915325cf86e463a2083c30ca2473446b91c6",
222
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoValidationException.php": "5faec3f351037d6affa710c10f733c57a7919cb04820f93ef0c19f75b2f2b2b8ae1a0d004c216673977539b713ca31475f233fdd21698a390319364d2b9a4ba3",
223
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoXMLException.php": "a66429863ac7caad7e0d77f7a1fc105fea0a45e7eecb753e64bfd5a76c89b5eb06e4228bd63a78134090774458a646e10a11417855d3e72b2a6fd75aa754c625",
224
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoRequest.php": "3fa26ce55e1b201dbe78e4bf3615f8c38d9e6c4e96e5b3673f6cf7985bc4055b88f227677273189381bd29076ae5e8baba6c0cef4bd612f2ff8fbd2847b6c129",
225
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoResponse.php": "3f9f1ce15ef75db2e028f198d1bb337c37f31fa6dc7e5b985ad589f6a4dd7d873e3dae968b80f5e1eb6056b4bd00e1a4df4d54242206861302f9d6263d177bbe",
226
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/HttpClientsFactory.php": "a9fbd6c007260fc2169648c9c764ff7b5988af0874b21211f8e85e8a995897d597cbc0c9fce4ec5c8d60a901ea05c5a8cd70684c2302ea17bff528ac674ea578",
227
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoGuzzleHttpClient.php": "dc661dc489b30bfa98e0d75f04147d164ad953e7dc51326a20fa94846fe30afff07ce92958c27a9bce9fd15371543852c0be4c24031cf382b54403a0901189ce",
228
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoHttpClientInterface.php": "61a18efcb4383bea7598ad9167ffe49a73e295d2ed3229c015f9a5ea08b00362005df1388cf6846f1c331b123b187290a1651341c76ce2cd4233926c927b6e9c",
229
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/MessageClient.php": "f96e09d05b71a2e0b6675300132634f5664026bbb84472a1e7ca5f72b679390170ed5aa0d4e21a4dd1bc646cf0267f0f9240c931657f7cca9b2bdea501586d26",
230
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Account.php": "22bf526a376e6045fe9045ef4eaef52c769ceb8a7c3ef11902e66acdbb673fa521f70f446e6724155c8499cc700a6cf4f4d435ed06d81baab69f638cb15651ef",
231
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/AccountInterface.php": "5093f51c3803de918f3a500f1754f47a3dbf990008804c07e543da253a22641b96ca2ae5faa7e6800cfa10a41f7d407e5d29e9907c0970a9183a8795be9f7543",
232
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/Address.php": "7ba3e1e7e136d43989fa0449b29882d78fcea39cb764e54228c7a4a899d5ce4db2deae9d9ff9ed5cc53a8af72f98c55914c10be3dbb7b9a354b8a06e17cce829",
233
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/AddressInterface.php": "36182073184f67cb024e0c020307d4d74c8b5c65e3ac7affcb76e189c91af9750c318404d8ba3a5a6e104d64459c59c80d7a944395796f0f5aaad18d43d93720",
234
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/Application.php": "9431715557954e8ac1cc340f3f568a6eddd6e00a0ff0356154b2778b118f620d0afad3979e79eef0a583b313256fdd018516cc8128a441dc667b39668b6f506b",
235
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationCreateResponse.php": "cb1167e6057eb71e102d55ad2ac3cc2c7aa2a757b317cc97d8d08dc400548d4ac56379653583d53185ee8ab37c4dd189b66af011bc9a32baae55991922c41466",
236
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationInterface.php": "77af1063e341dacee15504837264b8140ffa3e8f537b9eb0b102e8f6d184deefab6a08ff7f771965c31d6c84333de9963b2e998bd0389bd0517479d5ee150d3f",
237
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationList.php": "0840ebcf3a0d9688cc68a82f11484339d8dadc9d1a50787ee11b3849a361a421f30417ad4322633c53633b4cf58ff7980de6ef87471fc88b16d090f127763450",
238
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/Call.php": "8e0a3bd97abbb7b9d03e22a4eca6eac4989653c43facff064a374f6787698bcc91320352d105f66aa3f31cc0d70902c8cef0f9264062ec4bf4e5cba6d07549ec",
239
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallCreateResponse.php": "a3a07958282fc5a6e7b99978427e2361e8828a63c06a940159a7fbb356ab9621a899e6e2a25c27d445fb92ac34b63d8e5a8b6f0782b7f20c7d9f4308306903ee",
240
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallInterface.php": "9aa42eadb3b1c06c802d46f1a11b17acf59e0c78ae65b6c9039b4afd9fe53f171cd8023be738a359128afef545a6fddd43bc039d94b014d122e9714f9591ab71",
241
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallList.php": "9883c38a74497c496cbf7c4a837051cb6bfa0ed0b9ca9298f8908e7195a000196f7c79b4846417c64af0aeddb6327e45ad4b36352a28e8300c977e21db0fbd0e",
242
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallLive.php": "14fc226091078fd069998fe41625d086407e0c22455dde078284f9a3e8fb34fbcac0b75484c5350b437387dc203db7690d9fe1f02aeb09da2d5c57f7b2ffa651",
243
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallQueued.php": "64552d83e5911b11202ae4a965bcd7c408643c446566c3d09aebb0bd02fac0dca41477988aae62e91bfb42913900f1eeae9d20693c6bc29651e2734b06cf18da",
244
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallRecording.php": "d23438ea994b0ab936c3917d77ae9bb38bc9ca14dff4c5c120a0f583db46891af3bde1a8c3f55d15bacae99723e510184c14c60eb6d3d411d46aa90c5c8acfa8",
245
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackCreateResponse.php": "cff0c47988bfee02787a2d73df6b3165749844c1a93b1fb91e87e80582bd28c8c7efe101fcd532bdab62886eadc6354924eea81278da5037ad9d3ee5d8dc8f29",
246
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackInterface.php": "7860708568f488bd0832e626123f4bb5ab986fa5d54f305d4744503ceb4e919857b78a02b766e7241d324a77d86592f60f26d1ed78955f5550bd0fcc7bbabcab",
247
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/Conference.php": "8b97d6c9abee836cce410fa1216fdb5aa8a4df0c8543a75c2415bb31a5ee2d87531d5d162b218660a33cdc30539861cb09d85a780feab2d5321d0e8ce06194cc",
248
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceInterface.php": "34f563cac4a75ca234e4517cb4678998461011440f30f9d81895adfdbb2e1960009114773ac30901dfbd2596d327554fd335057de66516b656f7a96446f4b06b",
249
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceMember.php": "1a880200a2988394ed0436702f805ce60762be1774e1d156f38e45be39cc72203fd4f04411a521ceba8fa9647cb00f6d1bc6d94798b66f12175fc68d88c51dcb",
250
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceRecording.php": "1c3239209726556971c2cccc812ce5bb5a3fc8c7a0e4f3ef520e037acde32d9659dea1dc5d3803e1f7cfd39e945a1680983bdeba8cf62459fc168f0df731adab",
251
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/Endpoint.php": "4c9a87fd6042a3eb486af5dc899d1e4c0948de5ebb1467cc85704030947e2588e79d23407ff662a21b097fb46a05925c3df29dd6e2a038555cf44844342cb206",
252
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointCreateReponse.php": "f77356f3ca29ef7163e47530004a5d79c1da73e922b17333a89512e39c7d3cc842b161d9dcbc745075f6a6c7ae27b7f7cf85f56a6d5bb796b87db4efbb8425ae",
253
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointInterface.php": "09914bc8e8eeca2812a4dc07469137011eec1dd77b99e3aefc8d5b8f4675b8f221bc54e37417f6c45b07896b84bed953f8c85831f9e7cc7b85b7293142b60fff",
254
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Lookup\/LookupInterface.php": "040b0a2c01ca3c0c02c2c8450b47e8d1847ab7158014ae161ce971e330712d14d389cd746a353707d2bd2667dc604e55c662af8eb15796cfc613f285e170ed15",
255
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/Media.php": "72b83f02669ec7b942dd898a74c22e909cd9b058ea2e903e92ef4dd9e985305311d53c30a0c54a3f0c210433aeb7b8bd04a4b3a768c853aa73ee4dad9c621a56",
256
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/MediaInterface.php": "1cda06754bd1ba503a8405561594f9d3cd5befee2cc6d9cee98542886c71601bd8744899e7ede346df6b90552f05a9eadeec4cb4d11fdab3269de88170cae961",
257
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/Message.php": "54ae356246cc911258552001390f10f701929afa24801b2bc6cde72484c915e2e738a03d04aee90908003efb3b4b3cc8106f92d7ff87d2119e8a350f7aeab54e",
258
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageCreateResponse.php": "75495f459ecf577e2e0c2f8c075d569f36df80c5c828fd1d6b84a001de2c3d032add50b5ef08177d5c68014fccbc939c8ff89ce6c884ac0c1b64f4301d81cc5e",
259
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageInterface.php": "e96af121fd4a851e4c1f27297c602a5e6862e0ac54974aedb19248f017f2d98386ea9b495ef6cb775aacafa7b51b6117665c803356442786142c15e86066ef41",
260
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageList.php": "baacdb72ec116be9a14b8e7e55d6c40cfd8b04c5bd1b0d93d5c9919ccba2591105e03dee96effee29e95ab7b7e58e45569760ae825351c1891877dd96853254e",
261
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/Number.php": "1bf8e1b1844ccced8d8068a80ae45b6904f59b0fa0e7d6a7c5b43adda906859ec11d709a501f560aac3f8315176e9260ba4796aa9cbbd637431ec94f0ec0c668",
262
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/NumberInterface.php": "e633bf2e705735759f6e27f9e747e3e05e839484b57672e2da405b7e2d8615653fa828f8295a442d13f5b64645fd009ba6cd923f0c163f2070710c7df57a1a70",
263
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridge.php": "3da97309ccefdb15596bab5180d386e2a78cf938823225820f5b206d8d8f366209dcf96bd139cd0364729c8b733612ae067d03e1e29aef472c4dc82527d3002f",
264
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridgeMember.php": "9ee728dc1f37fc183fd4890ca5d213bb1f47899d2379a16009de7ae32b75b459444a1a329357faff349909ee89843ac5798c75699fb2b8d939501f61dc09b564",
265
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCall.php": "d13d863ee416714a697600882f33b88a8bc9de8d5603149fa199f787d7d904d55aaa6646cfdb3d71caa99e4e95d7e352199e8b54230d3c64cfb81924f1b603f9",
266
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCallMember.php": "6e8f1c6a1177d0c933352bc2d8bd54c989db7679f2feb893f430e9e634c446d033d01a82ea740185b1926734f285facdb3d99b18ffcefe83be723fc08b50fc12",
267
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeClass.php": "b8a08dfe16a42c08ea66d141b3b4471caffd2bbf89fa4b360a1b16a7072ea29d538792c16b93f1e3f1a1a01d564acf1a40906c32482c4cef0ef42f1647e483d8",
268
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeMember.php": "e13f76753f278f07e8778f1d0ad64c9ff401633423ab2476700ad0711ea5534f7caa871b5e10fbb26096feca64471205082f9ba45de607e7ce71eccda0e7db91",
269
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlo.php": "da8e7b69e9290d876b6ebe6778c09ab68f47f13cb22438ac92d6eb880b7fe72ffcc68c681cbb9be074e36f3ce4afefc69680e7a3493d3046a04ca9ec432d7a99",
270
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/PhloRestClient.php": "5f3b9bb5e3f7dd96572f1dc71531caeb0b14b21ba7c291561c1ebb040c3ded22bfc0dbd9030843cfeda8b4f83e69d86ed9db2b3b7d0cc8b311ec64000f3b935c",
271
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlorunner.php": "c1f3764aa4a4c14a33614bc7cdaa05043d268b24f88cb2312bec3596e5e7e5286e9d0429edb8583b640723784b28ebf69df691d5e4ec53b7d7912252832c3ed9",
272
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumber.php": "57bb602a9f511dd39c7143c50a9ca6537bd83f398eeb6f198feec689877a9a423d9cfb0645c4d20eaf30490ae6b6ebb91fbf1d00ce633a2007333ddd6273b032",
273
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberBuyResponse.php": "6929f9a7447425d76afae60b91de8d6a5a42a1e7864871dc73a40199181d5af8be9f645185ce1e796e75440d138cd0f69ef86ef404879d74b58107ce32824b6b",
274
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberInterface.php": "3720a8056618a019c64de2e4e05e99e0b30cf48de07117e75172b8ba02f2b2c60a1e0b12c3cc07b3f5ba8aeee2e747c3eed43b5bf589c29c7236b47b5ce75747",
275
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numberpool.php": "a774de315b1d34a61c9b9af9b21b8fd1f624b48bcdbc7ed1302ed25cc21093e05ce1533c0ce4788ad36ab28792878321a99b941cf9e1a8ec7fa2f2ab1d16f872",
276
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numbers.php": "f62f6534b223fa353f2363e38fb1069c3d10544a4cae2efeaff30019c0cfec7de2b4b9f551cfc16bf26fa1dfb916f6d916f9cd1d1357f8cf6f7cc84815812237",
277
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Powerpack.php": "895da995fc1445bb6f7458c3904c918d8ba8e8db75e94e558f04ab8355058bf82d881d7c282fd8e03acf723c232f3081733a9ace2bef1da42c3e9f4de452d2cb",
278
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/PowerpackInterface.php": "e09a8e4e67ece27935a81730b7587bf29afe72ff9aac57b6c0efa6fdbc4b7cf4c91d60bdcc506a2c0b86f7a4cf7df70c38135e295504417d39024a4671b3cd33",
279
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Shortcode.php": "afd1a0a277918a55fabfc2b46460ab6a8740ac68e1d7b9a0180d88229d7a93269305765fdc362c02cc2996ff7c3d8c95417bc90bb74e44f9c2cf12f023f45b08",
280
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Tollfree.php": "0c63aaf33046375a8d7c0f9c7c092ca1041f553b1987ad5e2944630dd23f865785e06205b0711c215468630455d8c2264c0b141fee5cbdb4bf9430e6ef90527d",
281
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Inbound.php": "285fd073a2fbf84c533af3c0e60b369689592882364413a1879691a025655bf4bdc40831d13d96c59ec7a8827233e92d478c14d1d648df885c75fbe3d054351b",
282
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Local.php": "5140df58e671179a4edbfa82fcb7b7277e440706406200255ade35177e9a715c3340f5920c4a57c351b6e222f7bb1ef20b207d0830c487bd14b9fa713d3d8c4f",
283
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Message.php": "ae4e8bbe3a668748ba57bfa571cabcd97932d6cb7a8a63ea04689863ccf75a63e0aa867fad60c39e263cc685521a8465b46f730014933dcdc941ebf152fc437b",
284
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Outbound.php": "7656989e6b1da4e4887f8443304e422ad2aa01c9c05aea5b5245b4f3edc333935be4f573fc5105e13cf03ba6ed0ee0ea323cc76c833846bc5cfa01f3a0f33763",
285
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/OutboundNetwork.php": "900ae54c0c0aa0f85af4f02da252a34907999bcd311e9e39ef8d8e27a16fc6c8bbde5d5f6460af6b8e68cf584419ccd7fbc4de177cb827cabb5ae9b2c896494e",
286
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PhoneNumbers.php": "cb51001dfd504ac52dfd39e2a0fcd01686de42e78464c76767f99fbc7884cc2d6e304cedd72e66dde42852f72cd833dc49dc1e92fe1487b2682648432e7979fa",
287
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Pricing.php": "5d197bd5eef109ba3d877f6de48f8567f135466adf1d811d32908d8d4fa7c8961592733d6bdbaa4f646c3d25a31c8098768dff183d192617b2c1726e8f41c447",
288
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PricingInterface.php": "dc940fc2f0338348b06fefb22caa65b98fbfd37063621fb4e4f1e23c5dfe21149e2e648c1a32b09012b34c5bd622fe28126bd33ba1255c6ae3c370dabce6ee97",
289
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Tollfree.php": "ad733c0d904ecfd646e79a3b6bb3ade270f99df5e6353bd6c8695322a71238fae107a55d33167063dc2e4b1b905273bb0631f051d06cbfcf5d01c94e9252fbdb",
290
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Voice.php": "ab645548152bfd840951e981c0d18aad23d613afefd4453af077a6055f902d6bea6a0bcc805288f130da6686d8419913e86422cae35b57c1087eea3371b7e799",
291
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/Recording.php": "def8da050e24afea59514b4fda360ecd1d80a49df2013b258e3d78304d6eb2ccbe21ff1ac50a851079234a1460d0f2750da8fb59c9ff184e8ba1f1becdfffe6c",
292
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/RecordingInterface.php": "1953832ff8be0a6801f306632f3ca3bc46f067d08662b8ca6d53e29d53507a48750bdd891d2d0164c029f675b8c4c1dfa6765c9abf328578838b428dcea22615",
293
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Resource.php": "b8a8f583217c43c3eceedcb8f047efa1569bfe5f440fcf4f252f1a8402f484e18abff63229521f89697c1f7df21a2ff919488fcd9df42b5aaf7a160a50f0c62a",
294
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceInterface.php": "85bde5b0479b85aefa79139d36192ac334e3deb3a07353b7b1b0cea1180a050a92dcb563ef4a968b6436f60ac990fc5c1322ba3ee6f4ffd41d2997d604653b6b",
295
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceList.php": "71fc010407c57d77f5b31105f6e645d04347d961c3c81eef6cacc7b8dd475d86bd228c5ea5dd5976ce34d025b0753083b5361a47cde5d5daf0507678762106fe",
296
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseDelete.php": "3acf13bc2797c0ed58c78abac46ae2822a67b9c9194b3c9864738516847618c0033fe12c5a62d9dcb7d110ffd4264c534fded370d04a2960a2da32059fecaa8e",
297
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseUpdate.php": "4db3ee43405d0a456dbc23801c2c0d71676c3f88ac7c4161395ad275e7fd0dc6b53aee99a882706da4f14fc6c35844d54143a7fa3b6597a5a25d59ed67e0e6bc",
298
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccount.php": "b39e628ab06827320f3dcb47d3ea55d459af1a133430e8e51e8e6aed5216c31b54498c836cfd2a5c5f2d9cda4bcac03ac476bd8ae81c3ee2c7865ddfcd359dfb",
299
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountCreateResponse.php": "3b92a7ef8da848a7a5d7b79436ae557657e97141ecb2bad076e69d495d78f94f6e9c68464dd7e790d64dc563428e4567a1baf96df1f8bc97cfdcb946e60e94ce",
300
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountInterface.php": "a4cec509ce127faf30261cf75555a2905c6e551223b4b90949251f0822dc20d7b97efadbcb6bb189cc9302acffed8106ceab79628a7531c161f4f713d6a26c4e",
301
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountList.php": "228e0fc0fc27fb523c9d2d9e62de77a5deb3bb2a29c10d91d7c59b6cf36b3e12b8b1935a69fb0ceda72c4008b2a04436e6aa3f84740edf265d0f647eed7c52d4",
302
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/RestClient.php": "91f01799f98c6d65e1a0a8025668fb0c9f5fa4b77d44e86790b34599c2b9045cbce2cb3a5dcd93a1fa8523cb688d9f2b895d7d5f2377f64f2e33ce68e621dd82",
303
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/ArrayOperations.php": "04a84eb09d1ba33c3414dfc74d1c4b31c3149dc8e3a038912be632673a92e693da8e531a987c5ce747aa11fe01bf65bc05ac91924ccbb8f157c15c62f8ce9694",
304
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/jwt.php": "61ef00cfe10afee4047149729431595a9e21d44b25de3e8808014312a869110bc22898552fd9216cda6906c91de2b3ef9d723ff0d4e18020d1b7f5d1050fe810",
305
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/signatureValidation.php": "2bf40afd282bd8711459cff1b366510ea253508349adca2f64ad101b6c4e3e20bf405194b9e421ea7cad5b738716624127969de5497e16e3647872e0b3bfc6a6",
306
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/v3SignatureValidation.php": "d70083f5ecd20fc41035462a2a27e04a9367d9b7b13e6bad5579dde4556ff187b8ecdfa17b2c07a0fcf88cce0141baf7dccfaad85a17aa2fd1a7afe7998d1037",
307
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Version.php": "365ed59af02f30183af840aafe55b67b682919cbb3d662f860baf1defaede8a67fccc5a7f087209494239466f356fc83f612faa02f9f03a301f5ffc66b52bd09",
308
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Break.php": "89a669d486a72465efc2c6128deb6760dd86c9fb69cd8c0f57c209d10eb74067efb50bc6f0e68e2d1c9c2f39862ef3fa03a35c65b7395aea6ca963a013869658",
309
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Conference.php": "bf673327e263996b05a0b45e323168e3d44b27a65efb8a8acb0eccb0276360c1a0391f08edc34ac617aa079c6c2b1f45eba6142446a7ae2286e23f337819caef",
310
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Cont.php": "45ed9435166f1b72dc5ee98afaf3547ae646d16d41677ce5409a6005ccb9ff23743e4c528385a1e0a8f5570eb7ec9374433f609bb8cdcbdfe756842f1005c52f",
311
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/DTMF.php": "14c619e3f01d6dee2dbbe9b718c6c64458a97bf70ae333455aa45c9cce91e4bab693f5265de0099c9cef2334a5310bb85e3374c5f0cde9b93c3051cdf5b57a4f",
312
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Dial.php": "5370d1f1a1ca8420560fa204d295558ba9aeb626fb7149ee06e12acf7f4b7d079307f329f91594e138847a2b3dd9e3f3e9a9e6e774a3c1095c3201ab249e9c03",
313
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Element.php": "4913c3c78365a85eb5c90aa721b0e1cf535c00d5815f509e336ce635cf47a9d9aed1346ff0cbc875eabae65190be2875d0820312a6a5c90c6df3acfa23bc80c0",
314
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Emphasis.php": "d6fda7993f909d3a1a50441ef74003811252d68a33ec2da63d3551236a005952d3b6c7e2bcdf5d9c85d33bee2a9255dbc2b95988cbe0e115b42eeb667d58ca38",
315
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetDigits.php": "e41a4e05fd55fec82a24cb2a545db122000251abc0986715a4d5866dc64604ac340c59cf0a30a35ffeeaf17713eed730a7705f32aa20aa3b14ffea368cdddfe2",
316
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetInput.php": "cb11a5e0311d3b8938f7d94462d24c5d4b8a2ea4d733943253ffcf36aaa648cd3a4337d732799f382526e0e2b2059dd1489e9ac7fc5ae478eb1db07b3830a711",
317
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Hangup.php": "6a7ac35846ffaf61d8de286929bdce05974799b26b17f4d61e68b6f740cff49bc4a0b72899d1150ae03d72e4f8c4dc7cac491872e76be0aec6b1a665446a9226",
318
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Lang.php": "c16c3db519373df61712fb1748f91785d79ba0fcd7e85a32cff1d17ae89768cbc10b3c4cbceab380fa9762cc1b6948d8fa56054d78185f8c9c1d6c60a012f527",
319
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Message.php": "541a76d5dc1e25633d7bf67c83d1fa123820296b4755e7e48aca094040ba0c2acc6215eb29176551516941b8e8225e6084fbf89892893557e12f678cbe2abb86",
320
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Number.php": "82569de717d895eca9c4270a3fc48022e666e59e6d6c74dffe4982a8db1f6031d80c51863226c750cef5db111f0de940878baaafb352153bd0d053f716c43fe2",
321
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/P.php": "d8bc0f70c13af91549bf4c37ce4c95b6683590ac9c9a3006bf2a4dc02d85ea63a33d0d8fce4a6465f25e0f86b35994d98e7bf75c07e30737305a7f2707ceb444",
322
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Phoneme.php": "9bce52123dcc7451f21ecb2e155884479b7530715d78d175cd616da86198151481632af22cfc19f9c70a4cf0f29f3262f335982fc9988e4aa3a435cd74f14c59",
323
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Play.php": "9b25a9f3a6149ad856c4aa008c405192bf2804432d83d3a572cf066dbb151b8298272b0a9185bb26a5faa51c03d069aed172ddb135d4dff3fb99af9fe982ded5",
324
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PlivoXML.php": "03c37815022f4b4e7ea917f69b5516c3bb5499e68b65ed1b50f7427d9827de1e84037745d25b420c1f81ab829f51ae752b126943005c82b06a668c8ff895e923",
325
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PreAnswer.php": "f66f22bedaae6dce341d650d5ded5007d867361c570162a642e0a15f5fd6e90b49a4c8fac2d3a1cb5fea446c75e30834a1106a3acd1ac02a87b5a7df7c1d5af2",
326
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Prosody.php": "12c8b634b226bad4ec0a7dea7b8249959943bc5ab0e71f75fd42afbf6d1413834563c38430e9348bde2cdf1059f266a2ef59fb7a8f6187ecec135ee9d5dede4b",
327
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Record.php": "070470af5650220e0556baa6b109684e1abceb6e80af620ec750f0c691824249121e1c6aef6cc1c91bebb45b76ea9db24f9cadbdbab8857b367ba2521d1cd001",
328
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Redirect.php": "34e09e0b208c4dde1c4b53c451b09f23985c8f74737e73f4675053494cfc81b14920afd6620ff161877c4e1b7b6e7381cf3f824a2b06508d84299aa4e0e45690",
329
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Response.php": "8db3a9e823e3c11b8377829c783d93f0b7cf98afc6d837e514803b478a7887d6602bae6efac9dae6a2e7683d8409c23f78c463185754fd7916845aec23e42c58",
330
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/S.php": "d0dc3f3bcc818d107fd8e4be38718587edf610e3f840d7e6763ce8fef51a1e96de3b49076995802aac9edc7d8a976ef024a1d45ef634599a56d13c56a8ba73de",
331
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/SayAs.php": "46c8fff6a9dbb36df1bb14d0c4247569e00ce77b37730d7f8fe6fc4a404a632ae70e48c774f40c4ac0e19b10ecca7c09686c7d5a6fc7d5311edcba657177b6db",
332
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Speak.php": "d18aafc18ac404a85d18627ddc66d2810ba1061f8e0d3d3634d5f5258b239a139649a8cf479367dc026929010288a291aa1144aec2415a2de6083040b8a4a96f",
333
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Sub.php": "9d34d26e76074e65fc01a3a477ac176027b1ceb5dca2fff450111bd2cfc0027c7f7338777b494728ae2617a27075888ea699d4226b60049c4fec633d42cff8d5",
334
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/User.php": "2dab0ac6bb38d9216c1b39b81ce20f1a2af1d385c90ea13aa566176eeb288f8ce80e11048209abf8c38151207137cc86b754b7784cc478dcfa1f567fcf929520",
335
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/W.php": "798d6f10e6d07a54b29916216dbb2382f25bbf2f96e15906f842cd2ae4aee22b8f3e56535264b1da6d40835d5b9da6a9f4346303f7602c9562587b29fa419f3b",
336
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Wait.php": "99e6e66fb4d2a81f0419ac823be64ea8c81e6ffc8313934b41d6189519d053b54b5e95dbc7b869dc979b72b551b5654dcd6eef0540c3b01eb900716e97d52dd9",
337
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/BaseTestCase.php": "662140921fab3f1e7be65bef2d063673900eb3c41de8ddf68320de194e254ec3fbba3322790812c258698af81da35277cbdfc0d2fc957fd5f68956e7db2ceac2",
338
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountGetResponse.json": "1ee7d7e260e8678fa70fa47206ac7c4645e9d698da7017ab05fb56266710e34bce48b19d3c65541a084be28cfe918e81fd52073064071daba77355af2eddbbf2",
339
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountModifyResponse.json": "ef0e777d38b4605ab58d951f26e975566b61a26ebe5710b9c8c7588aae799c68cf76dc5860f44aaa666864f3fc1f74185b5eba888c1dfa8c2004fb8baf6d859a",
340
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationCreateResponse.json": "19336630707d50a021e3dd3cbcd8a229f9f6123211e27fdba211494bc40e9b9fc5573ef328806bf00b937106e7c894ef96a98080f6003d91cdec67f50196849d",
341
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationGetResponse.json": "26a3aee28fa9219455b0c7a54d47eaf1ee7e9fb526185d1598d5611246c1ad7b0cb1abb05b12d21189463955e25d2da906cf5b04f1bd4c3b826d44de47c0d56d",
342
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationListResponse.json": "b363791ef3276030677b53f555a42deb02a9873cb5b21e17aee9176d425ed38c562da7fc162cf5771f0bd259b46d615ded3799f34f6fef590e2df97180ebd228",
343
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationModifyResponse.json": "742b49b7f428a281b1189fd5f23811931f2d6c71fa271ead086b6acfac63bafed22b86f2e460fcea35d8bdd46786c5db83707f35c7a855efbb92e51ec01a4859",
344
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/break.xml": "6707a46a4316a9f23104a23e4ce9c79f8b4f969639c08f5196a9aa94ba3abd4a1972a29d6131e563a685732e8cb0a4fc90a76f2d0ff5b72637fba2f974abecd3",
345
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callCreateResponse.json": "513446e1e7fb97b30b86dad2119bc9fe73e70f01f4976ac40e57e41e7d96a2faf978fc72fe2ff49e3326fdef8e17cb4da24bf665be81089aad1232716e42e114",
346
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callGetResponse.json": "2958c05e7fe02f5f6f2f8834b34050599df05c6f5751fde2fb038853383683e78b2b33b9534bf8da38770173e08ea9c7015d7b2d4f270efddcaedffd77ce661a",
347
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callListResponse.json": "b2b35a27aaff76dafc6f5a42b6ff515e56ea9d7c196670613b97c2b4c0b7f2dfc3ba7ca705b2618f3851e1db554268018c7c2bb658e94b66493576048c54ab49",
348
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callUpdateResponse.json": "06be7ca7ccaf82f24f23e8c33382d372ba639662283023a9b6ef555fa24d273efd845ab27fd423dd4267d66a8df24604f96113aa3bb8f8dcfa49e713f3d71bbf",
349
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteAllResponse.json": "6722c7663c8877f4bd5d417638d5a0fde3db7cd2ba1880dc66a7ce9ad25a14de60b4942d84647cc21c0b12211227161349109162ef3eafc2a9607c2645d3c93a",
350
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteResponse.json": "9a8baf62bab7971a89490d637633a3d498d4442bb11ca29486d21a3dde432ca6c0cb36d236bbc94859efac83b2e56d33442a13a4395f4b026dfece2103ca790d",
351
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceGetResponse.json": "950fb7d6e6e120ce670da43937ab4ce9e7a7df5296848cb52261f5f854bd89d47f26d76f89929adc59bdadbc8d0e77de79f29edc5d6e6b4b73aff1a0c126bd43",
352
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceListResponse.json": "9f5635d9e0988b03c2bffa8457962cb6870a39d4354ec6c065b58949850b188d2829fcd3db1761ec42a4bed30ee3704b6c353d2b9372742cd6d8b00bff273dc3",
353
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeafCreateResponse.json": "b39ae8d7a1de7d5732afdc00da955a91850b855f6463b143b5837023dd8281b450fa79635a3fc729b5b198c6af5cb57f9c6797c8eb56daf72b7c7131196fb4da",
354
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeleteResponse.json": "ec18404f82674de8b7ca25eaf95074cefef51b13b038de14dc9ed5f2664c6e6c5c87d3f7a08eeab3926869e171ac26d1647ba1cca03253085a194cb0fbe16975",
355
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberKickCreateResponse.json": "9f924beac462c4ad9f42a705f7bfde5aafe5e73563b07e98ac9db42e95d3c657f5c4ba0d6ea64b01e2e061563fec41d53f8ae8fbd7f5e08857a903c948019e1c",
356
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberMuteCreateResponse.json": "c3f1c38b6c8295b28d531c446199454fd7422d00e3cf71fdd318a821edca4afba444f8cea38175c0853b34dcda5dcc2c6317a9f3103e16474fb36c43241a52de",
357
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayCreateResponse.json": "ac345d15512ca5debe0a20092d8a4bba1f725a581799a632bbdccea771f1b6094b6df3362120a29c1d9109cd8ca8857447c3be08436fa94a5a4304725b75ef4d",
358
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayDeleteResponse.json": "10b6ab89ba98b9d6d08dba8637971ca9260757c318a4842521c7d2bb2a1b967498453aee4cef6fd964cf2e614c25364f543412a0a88b877154b3faa9f18ab3ca",
359
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakCreateResponse.json": "b2b01526d4838a72c816ad9c6ca7f9cb473a89818d4444b48aefc269d0173fc9eeed1e2473667517280c18315d67a548f41937ab4b7d26f2edd4d0e13486aff7",
360
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakDeleteResponse.json": "d42658e98680911d21be32033be208b53071e3ee2c514a86809ef4d06cc138ca0a74d9b2e546c54b51c66f3aa891cf0ba3b4db9a6a07e7f06ed37bfb39ef3a6f",
361
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceRecordCreateResponse.json": "c9d8570ab20fea79181b1416cdc44b8e9f8b18b06ad446a0929ecbec53a6bb3d66ddc8609a2baff92d8ddf9bb68b802ac4eb3d62e958d2cdc1485711a6286ed8",
362
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/contSpeak.xml": "1115d194144f96d3b4ba895d45268e346e7e56bd308b4b7c58bf62712380908bb71d5250323bfa6d13b8d25e64a86580437f7ac1f2c63896965e3c13909c240d",
363
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/defaultSpeak.xml": "2449ff96f102465168a4551ddac6ff85bc680370b423d46ee10b345c128755560e0bf48c070081e8045839503450c0f8b443fe0b33b455410ad5dfd639a6adb0",
364
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/emphasisSpeak.xml": "1ae7422578c6921013c5dd65650f0c1efa50512824b429334cc150ee6872dd2a7981a125b07a8023e360d8a881a32333de24f1b595c95a339507dfb29732af83",
365
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointCreateResponse.json": "e0cd43507839270c51117e48fdf3158e67662c1bdf9c8c964b57a13c15517ab7c83483855764b763f63bfee011bb893c20eca7e7a0b3b8872bbb1f26228ed720",
366
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointGetResponse.json": "05359131cc3ed432c1b29f3766d019be556f58e5e7f7b502d866d0057c04917ad7011bea5afd7ca8f2814dc75c45a52930d48464f7fd740ae94b45d0a07d3627",
367
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointListResponse.json": "d6488ec5e6277af9a34629d901a211e37c9a522107f84ea77f861c417345ddfa409d7de389ae69b719997600a0495289bcde64791ef07c257f75bdef4fa8006e",
368
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointUpdateResponse.json": "3f20870d3ef78c57407bd42cd424775a7014473d891020bfc41fd78c9187acc3d7fc2a2d7a137eb5bf9e8741525db9aec853889b11d2d3ff508f7fb16a4bfc88",
369
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/langSpeak.xml": "1eb16f6028ee00a12e677560ec9b3ca4921deb2d6da15b3686c43f506e9a13ab0cf811d71e942e1f225989f3a486ee39b4949d17d8692ac0a50574845491cc8f",
370
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallDtmfCreateResponse.json": "f30ceb762f24445068ff4a688935a84cb64840310bd518806c1259ec26fd60da6a8be9f11c9c0882d08c857058944cf1c69c95035517716dba322a1a865435f2",
371
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallGetResponse.json": "339633aa5d9cd2aea4a86dc48dd8c63ea8c0c56d5cc0f4513bcd2d66df425ce4b74b246a8c39d6cb0dcde75a8c01d4ec8347e69342649ac27599a79a72fafd9e",
372
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallListGetResponse.json": "7e8efa8df76422d6a9bb0133c81d96b9ed932f7f529644a109b35e9f8f301b3a548e8e7f6a9213e301f25e914b98c3855160ca7e0d6f0283e947cd6fc95c5ed8",
373
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallPlayCreateResponse.json": "4cf2ddd4f3087fdcdf772219c5ed84ffe1dc027208540059bc532961b6c4cad382bce98dec481e0245c99e288c9523e8f33ae7c3c35316c8130f49f81db40604",
374
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallRecordCreateResponse.json": "02f2c4c88fc63e5585f6e5988d5f615488507a7d7eba442430753a60f0cc2763c38abf905042c9ae0f7d017dc50caf67f269267972b5a7fdd4fe7675572589a6",
375
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakCreateResponse.json": "ef69736cd0199704894c2fd938e4f84768b09a6b9d2f334ef0a83b1750db0bf0eab538471fead4397b49ffa8e86011da111e867d5d8b3532bf3f4250958d6146",
376
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakDeleteResponse.json": "63a9fda757cfbe1a338c42f19532609e8607f3c2c8a317ec8e5aa2a164b0e9f9a652129bbf7fbf9fe05c38a0f68138ba10b4d256f48dda1fa292c18f2b717d3b",
377
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/lookupGetResponse.json": "6b2dd461ce651012160ed88d092de0859ff1cc132c57091a1064b5745b83cd6e5144e8204b6810da7bb675eca802fff54fa298f03be6ef858c59058acd24e640",
378
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaGetResponse.json": "251c9d7226411a160031776b1c7039d7e7f3d715ad7bb89131353611a2509a570656b8e29577e505102cf588ba50cab34b3b74351dd33e2a99333676d48b7aaf",
379
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaListResponse.json": "1512baf046701056ae6b5ef06a1e6405cd62a27d4b82f5b38ed2b2ef6faddfd147b6d57074d04d77cc14325d50d7908c0446acd4a5a0355e9dd9316f80b0f448",
380
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaResponse.json": "329e01ec90033528ca170704dc7a3de8f5d004a609fda5abaee4ad610b1559464a97b423ca27248f49fa3696f12ce6c1b3ef69ba198ae57877927ff78257231f",
381
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageGetResponse.json": "10494dc350e9a659083f44802a899a893e67fd82acdc506210c827642e27bb4ca1fca7c00a73a7aa20900ead392b9983ae719c6a9aaeeb0ff9f9b9e02539ca4b",
382
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageListResponse.json": "5751782fdb135ac45cec47687b7bcb10d4e2c4c8ae88461baca0eb6f0f81b8144aca9b610cc6ef7f3cffd4b5dc2ddac08247e74608166d147bafb1a9ecd4b834",
383
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageSendResponse.json": "ae5ef8b7e2a5db03fc5c04e96cef35b3f819f1670cce72e0e729b57de018bd6ffc254e00f20fa7c662eea100f78bb1824f0080275ac270f7e1229566683fc62a",
384
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mmsmediaListResponse.json": "fa4d1e3885b6c84d72c9f9a4a414de7d1ae1d574db325cd773600c7a17f83fcbe2a84c0daa8fc690d5f5d95431b1ffe5097c17279593ccb4155d5f99b1a853c6",
385
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberCreateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414",
386
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberGetResponse.json": "261a85df87eb4ebd1d310575e8f33d94f74c30f5ba3aef1ed47654f7569ebe4310019c5dd317a8c6e2b015a1ac3f72455118e0878d688817580b18b747d6dda4",
387
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberListResponse.json": "134543e58c07917a79e0498e85466b9cbb1c97a0e3087473463419bc6c178bc278ca75e148f885eead7f6b1074063256fa61745c57a0dec4ac060c4b03afc499",
388
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberUpdateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414",
389
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolListResponse.json": "961fe25a8fe8c35dee1b0608a24d741b6ab91f2104a9f2af2080279d6cbe4e631416d7b3d8e3772715e376a603cb740d652435a0f2d7971e64e00eb44e7cd518",
390
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolResponse.json": "c725314dd96d000028683c175528d15657c046cb421add91a927472c235ae5c1ee1aab060aa0eec56b6c717138623684f827a2de50bdbec1017e7bff937b437f",
391
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pSpeak.xml": "1e49af0752b825db21fc50126642fde3f39dd8b63cec3db00c3df92ca38935d58b8752ad14928278b98ef23421d0926d624b6aae948f9473398d25e2d087b963",
392
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/paramBreak.xml": "1202da39615a87758a5fd85096a4d98f6c2726d705ef0b1086cfc66cd0f456b15e3f79d9850e1bb8b99e9114e41b3ca19ee4fd269a42c002c205de005c72ceef",
393
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberCreateResponse.json": "a1dd38958ee69b5036aaa1c86cc730802dc2d7612eb1de9266f9a6651f6f067cf9a42d44c736bf85d1f40048f01f99fa05ccb3fb26baf3875e3bea98fbb9bbd8",
394
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberListResponse.json": "f2c263fdf122dfcf98289f6cd9276cd8c22fe4ff5bffca19b3509800d07909664e9ddfa3e145da04c06dfc6c5227a39868d17ca947e55b65a9cb18a6faadfe57",
395
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phonemeSpeak.xml": "30620187252e4a92154e06e611a2cda1ca881a0d85b1c6c36e3c713734c0be9ce79bb9ad38a11e040cff437c5676c01638eecbacc5b50a20e0adb506565a9475",
396
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackDeleteResponse.json": "f170bba1b0b6bb42c88bc74353ea4db09b82f07f5a2166f693d0579e5b7d6beacb8cf11e39cff546345333b14752456212584e284c2c360cc673d009fd2aa018",
397
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackListResponse.json": "0cf4f36945bf4f73377a6688f99bb3efb0c35924ca9278bd777ecd0081c3f667d45de4a34f7101588b7a7b3b20179d18a393dcc468ed88df8eb53b5e2463d7c1",
398
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackResponse.json": "4318b75a2ac1642f6ee33fc62f18765a5142aa52e0353082a9d38cbc7660e40f24e1665a59c723ba90ba9a86edb4cd4a396bb9a0c00cebf6d5944e0ba84e7919",
399
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pricingGetResponse.json": "25a616f338c147cb22228535abafa9c1439f663230d1fc5109af24f4f11a637c5d0cfdbfbf3b2762b87d0b4693f14223254e431f3b8ab1f518b32ea884e2d1fd",
400
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/prosodySpeak.xml": "0529a04b9ebbfc245e7d50bce1177e3eea9f0f6ede900e9fd3a447f86078ca86fe8c9911fad4645494cc784394194c5e6b63141a2a9125a1ecdde2cbe8bd7c86",
401
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingGetResponse.json": "bdf9cd97b6c687685b9c37a0921bcba910dfc811abe416be7b17fefbf857c3ee1233e987570eb444d168edd660c26acb55377f60b8aa0a898f0c9af1743edc81",
402
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingListResponse.json": "2d831eb418cd0de8a0d63da8a2ed133005a3e15e4e021c3451a737c45f42e5753ca5143204acf2f8bdf6ee91cf1ee8b04ee960f942ae0e62bfc3583ab44a1dbb",
403
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sSpeak.xml": "b81f50357fb60ad968d8e949aed15c7544abed0a45c26c5bdcd4b166fa1d9bf74f57137fcfd378fec345e1fb2281ac38c30b2a3150cc6fcdc13581ea29379796",
404
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sayAsSpeak.xml": "84e2d4a310c8d1fccc5be4be4cab026e1dde129ed2e18ab4fedcd50512cee91a52cf437606cc936c474cbfa508a105f36272edb6bcae29388f2a75bcb354de6b",
405
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeListResponse.json": "449e0c165ad81254715b4521e5f4d39b0a6d1ecd583bf337e8b85ba40550a0942c04a8e33b69e5327a275fca4e42e31dd1719f100c8d6e459939a3696ede1a71",
406
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeResponse.json": "867e2309b5c912c9dac5b06929a835b578b0dd3391c43f6e0d454adccf997060e1e5013051b394a94d44af3e5cfea67a88f4376088a376a031d6fde5fafa09be",
407
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/speak.xml": "a781afeb86ed31833e74d834de6d9834783264ec43678fe3e70a7f963e97a9dfd05dcb5ae75f51fdeec1d5d8d299d8c476454307a23efb830022a477500c02f2",
408
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subSpeak.xml": "06ff8e0c15b36727265d9f80c736a1781438c04445e91bd563b73a1f9ed4b501458f7e3ec22607dcd96e9f95da6e6d874c39381ca061a768c2b664a1b4bfc504",
409
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountCreateResponse.json": "7fb28239b065aab21f14d158e51ab6bfff6b10de97ca558da02adb639fd15e99343ca54277d0e0b0dc6be11c01abe6517fcc2f0e862d5a3538342f86bea87994",
410
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountGetResponse.json": "929de7e767657a691c8bf34be8abe52990835f9787114256bca7a1fd6016b34798d36e2318ad3d4a2a8931986d8034e2310e4b4247fa38a84314658402aa3bc3",
411
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountListResponse.json": "c57bcf1f52d302550eacbe5492bbb1cc17bd399d03b6c83971bebd83fa8be975e97859063a2115edfed47f622adfb413d5c28d6cc180710211bce192d867052c",
412
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountModifyResponse.json": "a06022b797598bdabfd7029128d9ebc9934784edf77175292c17b60152e7464938f78ddb8ab2883e0da22fdf94e584d0fe8d766c40228bc0a564e6ce76c39365",
413
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/uploadmedia.json": "35f19877904dd5eacf97183a286db18153002e37159f6e007c9c70644843d73963e9293a5e64c1854665821e36592f5ca11289d2ece86fafb3ddc4b8b758dc4f",
414
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/wSpeak.xml": "05cdd9418d049dc33432e02bc305b10635daf3bda936c695c4136bc4bb8167ac63e6ae809202a566e5a1488d8543c06fd9c52f869b03a474bfc3db560769c00b",
415
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/AccountTest.php": "8a98fbb165ab60db8a7423252e78d9db1da922dc2e1de9ef5cde32488c04380ab01e8fe53f4f542c602b28e574966adf58385456388fb4aff543dc04467de668",
416
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ApplicationTest.php": "e23381682056702928ea1c587bf8241f71743e4349cb30b621f2c843711c108c0811689c953ecd52515b2c780c50c134f959e4ef77ad2c0dd65dfccfa8c79c2c",
417
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/CallTest.php": "7aa7df68b91782de7a8ff67ce4bdce917de03ce4800da2d6c103f0d1297fc26c09effbbb7ead06d70566398b8679c54246213c4babefca43976c289b8bdb895c",
418
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ConferenceTest.php": "3d1149c50cc760ec57de791d7a1eb46a5210c113fe91e1756dc642d2d94b333067c9c3c5ff9d0c90d9ad8981963394d332287b57b84c634c8e4008ec5cb2356c",
419
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/EndpointTest.php": "aae4c23a72674a9d4da6261986147a3b3a1c5e4da03d2efe7f4ec21336e03d352ddc0f7e47dab3c9b4063a170d37e0eebeba649ecd1159d85a3c5553789c51b1",
420
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/LookupTest.php": "c436483d9ad54681ed44ef7a6b44d4899d06b7b421be27d2a076aa4bbef23a5d160d5098c60d5c380a8e66ebf8245c917074edf6a7b682d056f9f60e082de032",
421
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MediaTest.php": "a6ea3f17046c123698c0b8fc1e7cfca6665159166dd53b51d1b5a7700373527c7346a90e67a382f4df26ed3f92209790c3ca93c0c3d3b653d424e17a1fed9f17",
422
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MessageTest.php": "9749cc39c4acb64b49150958745f19952ffeab648abf06ae839eccf8eb9a6c66bea62e7d8fa398dc48a79bdc97ee063df934ba827632faf88f4aca01e5432181",
423
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/NumberTest.php": "9123fe40158482d314279a729e4c5c0eecf3733884ea39df16de986e775e93e90b8d9c7ad35fbde8f3d4cde3e02b33c70ebe87cbb27039615de8213cc27aad47",
424
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PhoneNumberTest.php": "4b52dd78392c66e1d1803a278ab98bb03e4bfe5275e28b043e4f672357125b4373acece1c2c5668081be021a683acd2796e6ba5ff2646baf3435dda1d6de7667",
425
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PowerpackTest.php": "52a3c6967c93b1b996abb3fe7e40ebaec915e58e715c6943b0f5ebd945c8a59023184dd1339cd044d2f3ef1a0041a61559a41a3832bfc222332fd85bca8371c9",
426
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PricingTest.php": "91a088d32f726c2eb49160363f7a77d351f3f65d43a9282cbea646310e2d01a33d22a2adff9ce5795f949bd205c0b6e77571f0a231265514704f42bdefbc51bf",
427
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/RecordingTest.php": "353008dcfc66ae09e915787634877d598930e60fff3f1e6eec0aa5590881f66d78ebd79aa1ba2b2a20409e4b9372eef9ab28406c9fd29f95ca6c773d8c83fa63",
428
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/SubAccountTest.php": "6dd803629402c6f7b8d923753477f6c03d6cfbd50aa59fcd63556527cdbc3d932557b318cf8c7a9f5a9d3ff8ff143ef15f31256e488fa8c35cd62bf80ae04d5a",
429
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/TestClient.php": "8917a380e2cc030228dbb37a7a3aaedd2cd624d8102eee1fc3469a9838f31f7ee734a40cd45e510d63bf4c1526da4bb3af8d45bd4ebd4382cc9fd5bc2ba178c1",
430
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/UtilTest.php": "6a66cd73b0cd403f64f8a4752381964bbac7507b4449e81c9aaa64d61db244128c604a8995327dd8e8ccc8a30cee7a3a57fc617b845ebe65a65ac38125ca7394",
431
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/BreakTest.php": "740c84bc38e7044f5138e3816b72c6a94bca3accb592733421578a6eee2080bc6721d85cefeb8b6f1db751e2056fbf722e0dae61d260b089dd803e72cd9cc0d7",
432
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ContSpeakTest.php": "f3b641231907bf807c5c09b65a13409ea054b0116b9b36f5bbcc2bfa651592ae1f4707be5780c37c5b9f1516044a9f524f4ca829cd0b5387a6a32526ba11cc94",
433
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/EmphasisTest.php": "b76b6d0eee048b44965f87fa6f59614e64d885864ef3ff0aa2310746d76304fb5ac6cc6d0c714e7560e5472e018fd0183cf9a918d3e4ee5415723314d7d219e6",
434
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/LangTest.php": "1a4ef409ded7d9c7abd8c63994dd3e221b16bd1fcca8133ce43e04b300a28468cea68e430098393acafb78e537e37b0574644735cb84fd08e33dbd828e2fb071",
435
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PTest.php": "9084715ad9065f1a926e8dfdabc5816b16a385dd5cd74f16f6fdfd1aef043b7d344d9cdac4b9dc43df85e8e63f329909553e20b86d995d9eb6d25d716fc5fd1b",
436
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PhonemeTest.php": "f85a3119f95615c3d3e16c0a4c1d2aec7b2191629b60de276cedb769b23e11546fc27fff57e329c1ac6cb52868208d29f88d1412b452932b573d88cee9fbd68c",
437
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ProsodyTest.php": "5aecbb6cb41b0269b0895e580bf87dae24703c3116dd39774c11d52406635f4167bf55ed0b950cb4d8af9138c03361161527c7f0e08867053034d8aea1fb1daa",
438
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/STest.php": "55343bd191ba9b88fdafcc409c1685224cd6673225c1ecdc006d4c3643d9e4f71fde0a07ead3f1bfda80bed486f09a7fdf42e16cf3d4fe66f592bb72397320bf",
439
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SayAsTest.php": "005fb0efa4803847719d9e7d52438ada0026b3860d7143fa4deb96a80826ff0f8608b3dd9302617547dd36cdee5293ec25570dd6513cd81a921ff483379574ab",
440
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SpeakTest.php": "cc92de5d0f5df6de17b121249074752bb191265335a6e50dcc4739fe525cc9d0014c187a7d15cd0c1226c56360277469ba10da72dc56dde01f478acc510a8dad",
441
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SubTest.php": "5c113371cb363691313226362512772facc38c30afdc32e96976aa309d6ac33aa32bab7d4ba674cd566182641048434dc65cf1403f25ea4adfdf6c6793db2fc9",
442
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/WTest.php": "f7cb4983bde61290a90fac15c009ff1780b02fb81c8568d0e8a1f40fab97dc1ec2245cd477b5ec669c6f54e56bcf7351e38c09caac7255756174baf4070c9284",
443
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XmlTest.php": "58317dda536a0383749d695ee8cce6f73d6ab413984673d46b10d9299e5a70c6cc464051e986b75c849286787a8fb23ef15e8bdf6bbc9a27e1c0cadf46a1bcd3",
444
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/bootstrap.php": "fb1c83cc2a11ffef9903eaf721f4cbcda4767f70368be33a0980aec4e5b515fa8258750f6e19fca0eff6843d0294de9c35b8e95af0e62f51a94442be0099720d",
445
+        "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/phpunit.xml": "74191aa62aebbcf797167fc2bfb6bb304cb3d309287a73919caa1c43c188dcef47a1f1905e56143952e4b342ef183a84887dacd6976c18e58025582d5f672035",
446
+        "providers\/Plivo\/vendor\/psr\/http-client\/CHANGELOG.md": "82bb81ca074204aff5d95ac5d3edfa9c85569c8b9114f809e3e2f9525a6046a1276187ca42f638ed428311631791f60e6dace74cd60d77f1af0a41e9f76ab2ac",
447
+        "providers\/Plivo\/vendor\/psr\/http-client\/LICENSE": "3e0ee70fc857b6dda26ef2eafa55ef09384d82bb2f85b4289abcd94a60201c698eb477dcf03a73858b2cbb9efcf00affa199e848344b84dd4a4c135601e886ce",
448
+        "providers\/Plivo\/vendor\/psr\/http-client\/README.md": "a8fc38f5744eb4c1f14f5016b02108319b7cceea7fb3219f57f0604a2e92778fa9be6f1e340003b095f70c962aff0b49ccfb0264b26eecb8fa7782667e62cf3a",
449
+        "providers\/Plivo\/vendor\/psr\/http-client\/composer.json": "b767c510e3dc28fc5c8c0debf4e5627f4897940d41ced88cb0c85284c2e0765f49305997407e84d87154a4d9e14045e6c50fd86163d3d7452294af8b7bc36ccf",
450
+        "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientExceptionInterface.php": "33aededf573747615cbf7b8bc6aa10faea7762c903a0cc98bc43803043f9bad58460f09f7301814c22e95f2a6d0269388d8ca899ab76fcf0f2bd8d82aea5d9c3",
451
+        "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientInterface.php": "11b1cee24748c4ed1a41681b1b6e43e865e08150be14452de885daaca737f4029d65e8381632a23910789d3cf5e9f9d02f4999aad62e4e8c80a2fda9ac96a4ed",
452
+        "providers\/Plivo\/vendor\/psr\/http-client\/src\/NetworkExceptionInterface.php": "6d3d81d18a51f451e8a1b74a16b3ac8ce6c5642013a2d1375ce6718090de5369779f9d6f594675aeeb7bc3f55a11f1b9396036354c4e9ae0c90183ff369fd65e",
453
+        "providers\/Plivo\/vendor\/psr\/http-client\/src\/RequestExceptionInterface.php": "46391124b679cd54538ce5ae6b05d7fcfb6b9ef7680f33c8771f94b38075a366788293b757ccc674060d615783476e1151d0ab8a5f2a10e24578c9b46cc1433f",
454
+        "providers\/Plivo\/vendor\/psr\/http-message\/CHANGELOG.md": "5567e49c016bd259491fd13a96e5b88629fe67ccaa0d75f7aa7c54096edd663fc743930eeade981a041cf7524d9f65104718c129fa36a200397d30c0e5d2c954",
455
+        "providers\/Plivo\/vendor\/psr\/http-message\/LICENSE": "22ef0ac33682fbed60a5274a5b25991308decbb45c6ed45fb3222cc045bb9e552fa7310b1ab6f38329b63f53a02c25e7bc5e955ad23c5bb2366b417563cb71de",
456
+        "providers\/Plivo\/vendor\/psr\/http-message\/README.md": "d58ab57a3e35e51848c3c21313836c88eaca950eb5b716878ba950ad2389bdd84b24a5fd8e6b19ce3ff04b07d879b5206b0f26d5e3a63a5be19beac0e9ccc1de",
457
+        "providers\/Plivo\/vendor\/psr\/http-message\/composer.json": "4f074821b6fb7074c418bed0fb6232677a0cf6ae5ddf24694e14bd5aa7fb3610a645f2221fd024e7c4bfe3e95501421455dcfbbbb38468e9db442b8cde9471a7",
458
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/MessageInterface.php": "b79e96e691ad169d4d70420953ccb5933301ce7cedc17d4eaba859dbd56719008198fd201e3be1606ea5dbc78b559f1d86ba17b73ab7e843f0c2f0b49564147f",
459
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/RequestInterface.php": "f54aefad46987c6b4880d5f09f7e99909e6e2a99f9d305d1f73e4de58b43493179149912352869e50fc46e057f50c78ba7ed5df6280a7c0347f3d7c36afcbfe4",
460
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/ResponseInterface.php": "69d177fb504f47ca0181ab35e2155cacf16e77535d07bf4eb4d790e1ddbc7a133f3de21eff936a3e75acb704c936ee2f2b12b2cf3516464222c3d60ea9760488",
461
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/ServerRequestInterface.php": "ea36ff66e8bd962e468fb2bc832e70f7bbd81f92dc0e607cd69092b737609d565f3e254a2d54fb3588f5302315f62e53c6eefe9299ba4b6f1f53ba8feffa815c",
462
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/StreamInterface.php": "11ab8a9d07beea1f1633f8f6cabb2a463ff288555f2fb8a4cc0b99404d8580493018557a0f2674feef653be51f6fb8d9aa3ad8e6dede0391cadb7bb49f96f781",
463
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/UploadedFileInterface.php": "65da733a08d80c5490fec8e69c7b56a47efc522e720a2ddcc673bd74c0e21f5fad4d522ad47da4942d25d139b5392e0882de32b7fe5a5697b86f40fd96ff0f8e",
464
+        "providers\/Plivo\/vendor\/psr\/http-message\/src\/UriInterface.php": "0d46735005331a3489e3ef4c8229307320de44b0443ff74d238cf8f3962d83e99316da9435259d479b48477d33e8713dd3d1a1859264c22f2a53b43cd6adae2c",
465
+        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/LICENSE": "ba7ad111dab105773d8a75d20024b48c4222cba6f7836b7b608fddf34f367cd218302829a1926a675bfd22660f4562b0e9a679d15b41162412924ebcc1a4e557",
466
+        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/README.md": "48ce2def80836640ced369db92da9f9e943b319849cc89441023bc260edd6919c710d08c91fbdf04864c6e08bf89e60a397f5e814b3e9699b48df574f5799522",
467
+        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/composer.json": "495b111d0e0b4f4496ccaec984dc89c897f189a67d840c09b0cf17034629e1c896c37c4ddb1afdceb7d5a188dd0d90405ce34aad409d3b7722169628411d3ca4",
468
+        "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/src\/getallheaders.php": "a61a5f91f21a68108c7e9c8eef22282e4b1b6f6f14ff997c5f47c83f39acd08ec60f4b9d25d306d67fdc68ec57c7f71a44a1f63ebf7c25b40ad61fa1cb4e58a6",
469
+        "providers\/Telnyx\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e",
470
+        "providers\/Telnyx\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17",
471
+        "providers\/Telnyx\/README.md": "321748e1de717ff62ccd3fb2c10fbed8ce92a66271f2047c83be8929f965c179cd163e429175b44893ae30addef3623f96659b98528a405a585f7afc7394e866",
472
+        "providers\/Telnyx\/VERSION": "7558cccb74c98362a480e1c0ae17e711de8e5d6cd10f508a31395105c0efb22cdea79aa6f9f6f890837d519acafc2cb3c429d3ab17a283e1992e5aca5053e25b",
473
+        "providers\/Telnyx\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad",
474
+        "providers\/Telnyx\/composer.json": "7ab90dcc0b5854786b213e5f2ee8c8030b21f65b2f8d0f74a3aa6d771ca1054ae5e1ba58ad6684dd1234e7eb7244be537cdb0a6888172cffcdaefcc7f5908dd5",
475
+        "providers\/Telnyx\/composer.lock": "1e4b665caeb711f94b1e7f0ce6388e91ada9973159c1230d4e60f0dcfd44ba9af2dd236e6acaa27564e91b4a89dde817d5a73cad8682aa9cb93b203f467c6be0",
476
+        "providers\/Telnyx\/data\/ca-certificates.crt": "66816e077ee99ceb9535a472e6bbf4f0e48ca838099c8a97c7baf3297fcada9a43016ea1ded63a455ee56a8f18501417a0f744fc17b215bb599cafd76b754518",
477
+        "providers\/Telnyx\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384",
478
+        "providers\/Telnyx\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390",
479
+        "providers\/Telnyx\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e",
480
+        "providers\/Telnyx\/init.php": "e590e355286b775423b39dd23b5aa0d3383d8a85ed2d1346802e0c487cb834154b4ba1b0ca41ae112ba81cf5afbcc9133db8747e08565c00fa3b0ea04fa7ccbd",
481
+        "providers\/Telnyx\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e",
482
+        "providers\/Telnyx\/lib\/ApiOperations\/All.php": "5caeaf5bede40fa19422387d224255ed534a866638b22a7a832111cada5496764bc0434cb1aa7365e1d4e0a8ad55545bb05a42a17ae5f2b361ed42c12166a229",
483
+        "providers\/Telnyx\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c",
484
+        "providers\/Telnyx\/lib\/ApiOperations\/Delete.php": "4c03010d81be8014694e366cf93244dd2f73dfb38fe8a1f3066b6ce179b999967de5a9d3e3140b3076d0dbbeccea329ac750ebb93915ced1e44891ab589f0c7f",
485
+        "providers\/Telnyx\/lib\/ApiOperations\/NestedResource.php": "390efb020ed7c101b32379716bc2111e83273e2a7092da61623f85295c67ad1f6ac2fda617ec91eb28d02ed52a86db9992ee044356f3d96aff2e3474b16da601",
486
+        "providers\/Telnyx\/lib\/ApiOperations\/Request.php": "5b947c7171a05a754fce9c5bcb81f93c1614db086fd4ceef9be1a57977f8bfa7311af0a60a2879d8cb9380c64ddbf7c991738e5b5a4e4b2feb5d88e25c822f3d",
487
+        "providers\/Telnyx\/lib\/ApiOperations\/Retrieve.php": "d2a5aed1aaab9421f2f2b41f69047a70bdea46082e118cd94e087f4082865313d7c67aa037fac194063c53b06d9dccbfa5e65582a9adbbcaaa2982396cbda01c",
488
+        "providers\/Telnyx\/lib\/ApiOperations\/Update.php": "a102e823a46dca1eea6c0bd67b4b7c63bdc0d074c97b42a830de18006782309d3c5f77103b32e82c778f670aade73d3c31f49da49682d9ac204560bd868cd526",
489
+        "providers\/Telnyx\/lib\/ApiRequestor.php": "617ebb71c97dbd896ad736a4e1235f784ea7b89dd73a980a2b259820e3dde0ae935fa532d1fc8e0d9e14a63f843e880e074319bab2f9c519c1ec19467f80bbd7",
490
+        "providers\/Telnyx\/lib\/ApiResource.php": "40b33a633cfba6c4efd4035bb668720a802c2b86538a36bae2f56b8cb1025b87f204732b9ed4f731cb9293de3d69e753e2e55a4f17980b75c2d91c572329c6a9",
491
+        "providers\/Telnyx\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789",
492
+        "providers\/Telnyx\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55",
493
+        "providers\/Telnyx\/lib\/Collection.php": "8953b7490974401e598cfdba09be005dcc037ff74d7eed660d11afca7a45d62c47f6b6c4f31b3b3003f3d9401599283122034362618a9c3d487eb131d05cfa13",
494
+        "providers\/Telnyx\/lib\/Error\/Api.php": "5c496f65e000a74652c5e7e3c79303befb693e497d67dab4e13287ebe72722c9651fa04c4de4065ea969e140f7a2f74ccaee2ab728f05790ee26200558d0085c",
495
+        "providers\/Telnyx\/lib\/Error\/ApiConnection.php": "469821ef557d096a088d2997f762b4a39c82c49bcf22ca707bcbf611b20006106522150d6365835e0c7e23e3303bd407d78181fb7b5d86bd35095645e68da158",
496
+        "providers\/Telnyx\/lib\/Error\/Authentication.php": "e1c7a938a695fcd8602e5a972086989efd349a6d8d5e3abddbf6f548ba2e1f9bdabe708b5ea75474f7c3588ba7cca8a1dc60970a8be70a80962f90342e67c13c",
497
+        "providers\/Telnyx\/lib\/Error\/Base.php": "9d311a5445b2f3d9c4e25c42094734c3d6243fdc5025c7e5a609ce49d2b2a47f01ea2f163154917f3330e1a92d30a736319c4daf3ae18bb6ddc41d131afae0ff",
498
+        "providers\/Telnyx\/lib\/Error\/Idempotency.php": "cde2f56479baab53e74c6784878c7914e7393b655bfdbf7a36e0619fa9c521671c105c3d5002983b3759989a22eafa0bba7b4aedd4801d7d6b820842c0285e35",
499
+        "providers\/Telnyx\/lib\/Error\/InvalidRequest.php": "0c5748224174c20020155c9f0c734121d07c752460ef63648b08a2392bb6d8b6ff0a9eba13ed1cfb8988545f6dc8c70930de6e78da03c63da0e59bc5fa109a9f",
500
+        "providers\/Telnyx\/lib\/Error\/Permission.php": "3a03b08e77e6fd0897de16d69fb3769707f6fb46717b2a00f1282d7b3e33527f5ca5ea94b6df03c883ea177520140ab2dce4986e0ee0977cce8c375e8a5011fd",
501
+        "providers\/Telnyx\/lib\/Error\/RateLimit.php": "0ceb884f1078559f5bbfbba6153e6bacd6ebc49dac2d047da9e7c64d45c7cff0abc067711366aaec74a4f2736b7205c02ae9de8c214871a82ed1fc53faf4be73",
502
+        "providers\/Telnyx\/lib\/Error\/SignatureVerification.php": "8aec6ea46f62c2b6ecf845cadb726332f89a6c0dd92f4864ac71ffd25268b2af0468cfa83b32a24e91c735ae947498bdc6181efe09857c6bfa799cec721dadda",
503
+        "providers\/Telnyx\/lib\/HttpClient\/ClientInterface.php": "f47e88048bac320e8cabb1b61869f138f84a04858afc3b7aff4de858db9b3efc507d1607037bf07ec5fb1f1df4069b71bf8ec1d0edf953bd1eb8255e67651ae9",
504
+        "providers\/Telnyx\/lib\/HttpClient\/CurlClient.php": "fed4939d221213da7fa7865b4405e5c0b7dc092375e5acd890bfdf178baa6572ec7ac7ad57cb02caab5af24d2aa52763bae1b21679f3b94e6f7ba659cee7a438",
505
+        "providers\/Telnyx\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a",
506
+        "providers\/Telnyx\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9",
507
+        "providers\/Telnyx\/lib\/MessagingProfile.php": "351d96a913427c045f534b6993c37fa6ce2ecbdd7a398502ae6447d631ff322ce146cd73dcd1161c999f6bc9ab9764221b4bd3567888dd14c110b98bdc4432b3",
508
+        "providers\/Telnyx\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46",
509
+        "providers\/Telnyx\/lib\/NumberReservation.php": "2b44bfa3fdcce2e21668004d458e9e6bcdb5e33cc37e9a0c980bbdcacec945dc4e06e489bf5b9d0194df00229a79e39bc2a62395d44e4072473441e258841baa",
510
+        "providers\/Telnyx\/lib\/Reporting\/ReportRun.php": "2a7b066db83e08b86e3da4c0b2d041c4d53ce0a1fc95ca3dab76ad2bbf549d74f9a97974be6bbbf0d7b592a814a00b514bb26ad13c7621b5c229f9bc40abac7c",
511
+        "providers\/Telnyx\/lib\/Reporting\/ReportType.php": "92ad055c626d39d9f878666310ffec1c425d4625af9e7803547d50f1684c166ea1dc67d79c35580ae08850bb6e570a81994014e82f4d4080377cfbc664c4fbc5",
512
+        "providers\/Telnyx\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709",
513
+        "providers\/Telnyx\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49",
514
+        "providers\/Telnyx\/lib\/SingletonApiResource.php": "f11599b789dfaef76ef6cf10bade1b426d2e16749bd207c6d08ddd007fea470fdbf0492f9a59cf8bc9f8589aa4532cd6c3887629cf27060696c3f086b0a48673",
515
+        "providers\/Telnyx\/lib\/Telnyx.php": "4971ff61049149242b0cfdca4a15dce213c465ee697cb444eb47da8215eddf2737508164c59393bd7661cf40b1a525afa9fc0df0dae8a071a59f3646a5ec44b9",
516
+        "providers\/Telnyx\/lib\/TelnyxObject.php": "a1bb11b6bfecd69ba694dd34d6309707e916ef45edea1e81e160c572dc404aa4e16841f3be7a82b3965037efef24db7c7c9730fbb65d26e8a188d30fa9af01f6",
517
+        "providers\/Telnyx\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b",
518
+        "providers\/Telnyx\/lib\/Util\/CaseInsensitiveArray.php": "bcdf3fba35ae234bc63ba6cdb5429aaa5fd6baed85857991abb9eff854b23eb7a878184ed038636292ac470b67f91c6bf8d79c20a6214d31c872d22fe51833a5",
519
+        "providers\/Telnyx\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb",
520
+        "providers\/Telnyx\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c",
521
+        "providers\/Telnyx\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4",
522
+        "providers\/Telnyx\/lib\/Util\/RequestOptions.php": "61a13e62a72e7fc4a1f4d2a707d03ca785af36dd8566e037efa4b1a07d91debe1bccc637bbae6ab9dd836b20a4133cdb7316d6c2628da0d13d2164d6613f1e3f",
523
+        "providers\/Telnyx\/lib\/Util\/Set.php": "1381d2144748a490fd27329fe231e9d3a9a8b428499d4005f9ff18a946c350d8dda1ea90285314a1a99f5d351b1b235ad37a74823c37d7345da8af528dbbba87",
524
+        "providers\/Telnyx\/lib\/Util\/Util.php": "d7c35dbf5a2832ced6059800a6730fbe75338252641edab902adfb134a179d96e162f05bca2902c6c2d99cf4827d5b89b0daac826162c7d460e17017ee405606",
525
+        "providers\/Telnyx\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4",
526
+        "providers\/Telnyx\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf",
527
+        "providers\/Telnyx\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb",
528
+        "providers\/Telnyx\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8",
529
+        "providers\/Telnyx\/tests\/api_resources\/AlphanumericSenderIDTest.php": "1db47c5c215f1dccbc0456035edb1619cb7575dfe2b152924a6e1abe4a021bf63be3b1d1cf1b86285c5425f5df46c8e396cd66b6ff6a27534e402e145e5fb194",
530
+        "providers\/Telnyx\/tests\/api_resources\/AvailablePhoneNumberTest.php": "823ab5138035a84a790d70c9bc5964e7aa163f195aeaa2fb50d2cfc7068f1a77440f09a134bec36a187cf57cca6c735b428b225239a263aa26cc5cecbecdf6d5",
531
+        "providers\/Telnyx\/tests\/api_resources\/CollectionTest.php": "af248a4d4c4504f5fb7148e8f5ddbce3a05cc859a761f57cffb8335be10b07ef6d4e808002601f92eff2968e86873fbbc3fad838420db0694f81b9cd95091452",
532
+        "providers\/Telnyx\/tests\/api_resources\/MessageTest.php": "a616a69339b599526dfd24a25d8e99eefc99c2341bb7d4f635d1b4984f41dc38a3eb6bca3e4242caccb974b141a490624669b5c2b2f5315b6cb07540d74fcad7",
533
+        "providers\/Telnyx\/tests\/api_resources\/MessagingPhoneNumberTest.php": "40409c270a6f9a683bc690f6e91051fe1ac4c8a6cb1b4e5536416d64fc3f8c81f327f33e562ee94cee1481e0ec2f13148b0dc3f76f3f20a49a9d80adfa5c1afa",
534
+        "providers\/Telnyx\/tests\/api_resources\/MessagingProfileTest.php": "1ca7abc2b47f221b491ebbe7def5569deada6eaf4184bd6e6327f7bf2da15669d1fff581e24c466621e8462e816c0a12d02e0aa1d91aa3746092f8a09a9131ae",
535
+        "providers\/Telnyx\/tests\/api_resources\/NumberOrderTest.php": "dd6e4382dcdb0cd60ded9d9db6262bbc7f523e8f5eb842e15655fe8ba4e24ad5192b8be40bbc762de2c62de3aeec31e1373063420a99e39bf02f5bf74915d5ab",
536
+        "providers\/Telnyx\/tests\/api_resources\/NumberReservationTest.php": "8b8386c0e044e120b6d60f97433c9ecf0ddc272f805034768300bf01bfbc731a3f6f964758e509d650013df03bca66eb1db13fa1a24315df76ea55fd86287fd6",
537
+        "providers\/Telnyx\/tests\/api_resources\/ShortCodeTest.php": "8aef092868b89adda6517905c7f05245b3c39affed4c7723e5a32cf17b8e39528e8925923aad4b2add5a0bbce9049a8f934141b87a790fcb002eaf77aa494258",
538
+        "providers\/Telnyx\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1",
539
+        "providers\/Telnyx\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4",
540
+        "providers\/Telnyx\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df",
541
+        "providers\/Telnyx\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2",
542
+        "providers\/Telnyx\/update_certs.php": "46dfc1129c3dff2211cdd8274fadd8629c450e94a7a1c8527373221b25a0664b6043d6b007351ac9afa4b40ba349a7fdbf4ad2e088cf0a8d864f7cbb81145fb9",
543
+        "providers\/Telnyx\/vendor\/autoload.php": "1d4735a3ebfd65901ce478f8bb98ac576ef9ba2706f17a1c6ab125979a882ec7ff463b577fed1c418f817c1a56e842fc25b6aeb8e7ce6dcdd554a25e03959c3a",
544
+        "providers\/Telnyx\/vendor\/composer\/ClassLoader.php": "866e8cbde808b4e7774c5d9e2bdda44e84ff9bc84268785aff1a75277bd7918dc26ceeb27732718c9ea93756777ec0d16c09c15f9c1179be3cbb410c7914d295",
545
+        "providers\/Telnyx\/vendor\/composer\/InstalledVersions.php": "86ebb1216b59b01b7cd1f3b2e66311cd6295b58fab91a9a82603f903c6d2f716d7697a82d625372538f809e9e45f7dbd257a00e2b95d23c3785e4eeb3a6ebb60",
546
+        "providers\/Telnyx\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a",
547
+        "providers\/Telnyx\/vendor\/composer\/autoload_classmap.php": "a298b75d605ec9a330a5efe11769e79f02cf202f49d8b241afbd175c7fcfa0ac4db8e72a29aa1d839138e3b181fbfeca525181eb57e998a4a2c14ec9e457cf1a",
548
+        "providers\/Telnyx\/vendor\/composer\/autoload_files.php": "107b2d75757e7b39e2d279e373fd4291d57e91a7f442b0f880b51d07e7119beb9d41d1cdf916131bba717e8da953e2117ff83f1bd9ef850fc1d9056d0f02996f",
549
+        "providers\/Telnyx\/vendor\/composer\/autoload_namespaces.php": "30324cf2dc20c214c5b5c8fdc2099b67772149ddea1d1d51969c711be9a83d036e43746c600f958a6b49969b16a10ef93e9b1e3d5af9714721ead916b9aef344",
550
+        "providers\/Telnyx\/vendor\/composer\/autoload_psr4.php": "02804e683dc13b4eb2ad98284be2dff3eeb97f0ae9054c3a45641ce7e6144a3b5f34ae36eb764fd2faae39fe5dd4131b4dffd4649c6ba3220ef24aeab45efcb4",
551
+        "providers\/Telnyx\/vendor\/composer\/autoload_real.php": "469f95fde429006c3262cabe72cd49970b0cd6098b743d8e5a646af25679dfe539c98d3337b51a8faf7f30d9c64e1def8d131a93e8897f801830e7e1c4da5874",
552
+        "providers\/Telnyx\/vendor\/composer\/autoload_static.php": "4845f043e32744886f456f358ea87cdcfd641508151ba6c3b0169c9aa53fe111f05b78b82e204368da01da68d7007709c9140d08dce4e7dca3cc4c9f60397dcb",
553
+        "providers\/Telnyx\/vendor\/composer\/installed.json": "5ca47a408f164e118f7ccba81577933913002efce47331f2eeb13f3e24d78878521db08454026d270deaa6552095260d745f0a424c91eb7efd36f6a9a20adfba",
554
+        "providers\/Telnyx\/vendor\/composer\/installed.php": "38fb24f1f4e4aa0435926d601c7b78797c231eb0e3621e370b17078645f5d238a1d02da3a29cd14a9125f78f53964445f4326311f6e830cf8faa24e944215ce4",
555
+        "providers\/Telnyx\/vendor\/composer\/platform_check.php": "4d385b31994301facce94382fa007a56ee32268d2e1cdbe7c9f9cfa834ed4195d3cf8e8e7c9a800c97aafe2c9b46f3c1a93e632c7415e8a9e4a282c083cc6f9a",
556
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/LICENSE": "0c0bf603f7e196edaf56d02acbb2e14df7f73a2da0617d62b5fc811f088c29865ecdbc7c6925a19bda63132cc651c56f1cdac79dfa02aaeb3fcca49033636ee0",
557
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/build-phar.sh": "a5ecc580bc6e95a9c901ad1a0097fd47ab857dee79d0221ae463e27f27cc8b2227e1975ab2699b9d0782f0b0396ed9b3ac0106f53fe61315cd2954ae54beb333",
558
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/composer.json": "c400438df2f41ace7bff40d284236bb06c6095ac03b58caef5b062e7ef317bac5a6bf551c94459ffc838acdae7df6cdfc615dfc3cbecd16be37ba67bd948415f",
559
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey": "e8909663e5350be2fa9416e28c6b179c41e87feab8da0d6fa6a41c294c9b00e8cc40ae8bcd03997770056f70d946315fd530f72f42974f63195f14b3c675e3c9",
560
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey.asc": "f07fb9c7b00f297e73127dddb1f3986fcebdb0760454765f6ce0977347919c0c74ea197ed310bcd86dca7ed227812bfa6d1595c44e40f10c085cbcbf602e163f",
561
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/lib\/random.php": "fe4539e2b55b47dfff1e2256c91498e5a41a85e28e42d790fdbcc42102c16abb09b0d7a0e2268ee004c555e1001241a9925fab1eeaa16c11ae2188e1f01540b9",
562
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/other\/build_phar.php": "370c622746a37b65aa6e36c2fb94486b4fb01f2db3f3c9539a7fde711d1abe3f9e9c30bc61f4200e6da9b47086c207b03cd7258d77dd2ea6b48126a618e2fa0e",
563
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm-autoload.php": "f05ea11c8e973ddffde4d60688b161701217ac8e5c9237cfb57babf7113482d5e19ea441f5092eb1448a21b95ceed75f994427d6febfe0de100c376ed17e91c3",
564
+        "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm.xml": "88c631fb2f70a79d0e56a4484fb7ae8b6b3502ed2a9599757e7a3302c42b0adfc6f0c45c9916b88d7430f209d8934b6121221dd8b424dd913c49236db7ef01c4",
565
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/LICENSE": "db260eb10b8775cb408f675dcbe11bfb1a738d638f4215467df6c4bd03b8265dec7712fffa30dbcd38b5ef944266c3963343d033f497eaa6dc602f55fdd8729d",
566
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/README.md": "82f123f85b02a7e91c3ebece404b85ef5a0950e0ca79bb0841735a5a03b88d1a3efed4bc8229b3ee1db245471cf58b81923ac9800586ace3b794421f379f7bb3",
567
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/appveyor.yml": "ed6f025871e47d5afb1eda2e0705a2185670c447279cadd8c0fa796779fa2f1d7a5f17efaf6412c403e40bee345ac3224a45f9aa0e5143f06ea5e25ba8cb848a",
568
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-fast.php": "a40c6c77f211a2257d3339ad80ae7197ede8ba0a94c76b48052cfbcc8ce903959dbd8e3434e6660bfce2c5e935cb9f38568f96cf00819d03f4a1c46cd6b7b0b1",
569
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-pedantic.php": "c1a0e8a5b461135bc58ebf0a37d75e865d9e44ce666aba9a95d6416cc7d57a834aae6fb6ef4a9cb4176690a4e41cdd8638106a11b32a155f3a8ca3acebf7a504",
570
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-php7.php": "0ac98043c8df48e7bdd3a20c11688ad3702a06271687e1019c2a7288288532ea593e7e462635b806c0b18dacbb8f2bd6d9c700a61d2b1deb90eba0b49660b008",
571
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-phpunit.php": "d34cda9cd77a67d93817d5b9b1bb51a13521b2539f9a8d0189debb1938934df1d5fd51fd2a82c9d4775f5a8613708a1e78687fab86c3afdc356bc4b02045bc66",
572
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload.php": "91c2a6366a27a76a0390c69dc4cf061c73cb03a22a3303aad673cd08e8cd659c7fa7e6796acdd9d2d271f015eb16b15663c5d21d8a538fe14f459519c9f9e8d1",
573
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/build-phar.sh": "5bc154a32c62797e85b82595da69ed11676d98deb9644b62a12d5ec169d3edfd4d3b24c67170143f12ca63d9bea06cd0803f68d5e63a7849ea9c4dc9483f7b4e",
574
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer-php52.json": "10cd40189c6ef385b9e21311b8b2bc8f7943273552227c8006a38889d743fde82c8c61286484d59bebfb83e645a87cf6d99f29409439a1057fd16a4ca7727417",
575
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer.json": "e9b03b450c47dc1a593e35493c7c80c373f958ac5ddbe89a163f15e7a30a8139ac0f9868466610899e3d5e5d573d517bf09acfc68d2b9420e3301b39e7736aad",
576
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/Makefile": "1cb0cca3e1413538bad70b8c8a22dd68d17bcb6450e0c4ee41fab9fab09c36bffb4816dd0f7ea2f40ca1b4cec6b030c5c0cc17955d2c83ec08759e748b04d965",
577
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/box.json": "47543b120abf7596f26b58f9911963e9bd0cbe2297b65d43f74dc52130e503ce09049a4be53146387b7fb42b7640f6577e3c1f4862540d4f8a0e668b0001e62c",
578
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/constants.php": "4e0597dadc39ae7b81e46ef5f3f045812a11753d9116215bf0d905e0bb3760bc44639988f1ec8f0ae8998f507e0c99eecbd19705f5399edfacb87172d7a577ba",
579
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/namespaced.php": "c550633d5dbd23c1bb2fe9a14b787e239bd5fa898932ddb8a1b1f8909a57393e01f12337fcc53f54b24bc48a97c3ed89de03da089ffbea71ef90d48c5091e200",
580
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat.php": "85b52455b2764ef4b80d60b8d99d5f65264b2a2e7d770b2ab05871a5aad213ad35f2cd755a8b5d19b5ddcea758c024175480f2dbc89ec75dc86ccdb453f5fc25",
581
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat_const.php": "177d6b1b8fb5286842400019be1465fa0438e06dfce2fbf5e93e93d0715c161ad07c0c31c17394cb0c6673a058f34544454cc0845893242dfb5a998655c93701",
582
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/ristretto255.php": "f2c36f65a9a556c43bf9f2fcad02f1c87c29d89bb5b3d81634112defbae7ac0c85e558fb3b5a5e74d95906a4b543e7a2cf16fd444ff28888ef09d73fb9e6b6f9",
583
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/sodium_compat.php": "75e3119fb1d400aba554506a562c64c1b1b82e66277383bf307406fd1f4c68499a32b82108529d5af99878890e3551dfd1fef1ab62ae86982c27dc975dd39155",
584
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/stream-xchacha20.php": "4cf0cb7bf023249c18f2261057f994faf8c4233022651285fdf8978fe9a71d7eae0511ea1f64faf2f3fcb1ae5b010112a5a4ebe8df9fea7ce908916cc2ec90af",
585
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Compat.php": "7a8389a0ca9cb8e544b7f345c60705e1cca41769105531211219142f15c83bd60b442dbe8bd62042a5fddf31040a19ba1f3f00ba6c2a44c3160089a2605099da",
586
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/BLAKE2b.php": "91aa0293c7c821d238f36fbb1f4327e67a718b53c13f0ea0f4d6e1d1675618bdadf183d842d4dea103017be863d40762a20c644a4f3619c7549991f11a19445b",
587
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20.php": "7e09160954fc59c77890f28e75f7ce8b75fdf08b9d5461c5e7dc1f49bc664bcb1b7ac74e3f5437657a20729c2db965d968060b27309a4a06a252d22b7f8dd4f6",
588
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/Ctx.php": "f19f61e54d42bf154182d203594613371f430d7c78f5b8229cb9bb94e19e42bb9a8e434639accff18497cd728ef391a1128d0145b8958f8d4350ee340340df39",
589
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/IetfCtx.php": "41ac6fb53ae553db13ef5c12d8c1c16d017267f130e8a00e9c2a8ad10d723aaee5ee08f2888f016babe4d712a0f1fa50012e4ebe6626b34973c26ad6728e36da",
590
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519.php": "5404d91b94a8e6c442c3eb30b763f1dd0c1234b845b967b7048f71d5a0b6e1ab287b44f43e06ae5bd6fce31f78154b8655353d7df86b6ac699a41200b9df33d7",
591
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Fe.php": "937defa56e99d4f38a81b88c03c649deca5b0f41f5d0b8e340cadccb34ef0677563f18967bb9f63e9547137a2a1827f9e37c62005fe745aff3764e39adf86cee",
592
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Cached.php": "3db1263681f9414d237a8318c08ad07bbe3279b7310e21a40c22033f5d90eb5d7074dbde430eec7910a8d7e4286fa6c0131938c92045520f56fe6acc37af70af",
593
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P1p1.php": "d757efd8638aa0c1609d59c47f3b18608a0fc6e1e5bc3cb94f16fd3fa2d6125872a796f4837cd8b940ca6988db92d3c668bba684c721476ee5fdb6fb6d50670e",
594
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P2.php": "cd70c62efef16eb21967d5bb0489dadef845fb3cd4faf0b1bb7d080a8685164b2b0fde4d8865dec22037795eea6df605dc2151f20871c31d5e9e0084f0066219",
595
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P3.php": "56c14b848691af72c00f5dcc3d31281a300d0ea9b6ec273ff929cf30d2279cf34d51891729a5b095445fffa8a63b8c8147f4d1ea24935c86b0216b3c40aa4241",
596
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Precomp.php": "f6c53daf36931b4289248a231da52759e91e5c38af10b2cb89a1bd7e55d29e316dc77d144fb9e52ca1cbf50db84234aeebf13603c62d58d5b3ee58dc19cc18f0",
597
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/H.php": "c2e48f6273cabcdc40f20fd0f7ea55975fc9da5a419b1c9cb834b694c858533f9a0d3e3ce768b532ea6b69ff5d2df1ae4c246a15b7129916d4034ac497ca2be4",
598
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Ed25519.php": "eda61c7ee144449df655ea9a9142d0b26624644542012652598bdc51493f61938c13651b32b05e942d31d3cfbfb7899b8621f4ebd8a5909a1ed12704b2bcfbca",
599
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HChaCha20.php": "b5005439c15ef7aed83b566e670053819f59c415d9c5f607550c756622d7161ca32fe65dad8f688e6a292f88192637260d859302064b416465c08bbf7f6dbe13",
600
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HSalsa20.php": "c882b541376c8eea8ab3bb63d8b51dddb345cc45ade8d5d264dbaa96427f72f0201aea828e696808155da7a978c4a1fad09723d42ec393117693e48187cf2a4f",
601
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305.php": "c438e61d6b330be26cff863f8b5c42fa3284d6e8abdd1e43a2023c2695dec643d2641b2239a9b0fbea1a34e9e8011d5094b4eb024b111b6fa903a1c026328747",
602
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305\/State.php": "4558eb5b05c7664408a4e793c2b85a4c2593ab8a1118c3b89db712f337a12346e2e882a0c638c32af733f5589a310b4a528c9bc02c136692ae82f3ac7e6cddab",
603
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Salsa20.php": "2836d7eeeec597187c456ec790107a5dc478a1f79c1c1e4ede4314bb830f865f189e048e3dc55742703e2fb7bf31275f515cca57ab5bc47332961bbdcac7c490",
604
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/SipHash.php": "345fc6b9f37659ec9830c9b3bd1459257b81568dc73809c023c551dd825981b0da6b150b6b7cd57b00097ae9cd3b742d730ebfda2d2e459ebd7d5257fc967156",
605
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Util.php": "81aac8187fcd44a14ae856e34d7337c012ff3603c606e1b9ff5a95fd5cdeb962725b70672a57b600d344fb2f34aeea00ddc8f1d4d8f8888961fae9171f8262d1",
606
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/X25519.php": "d11fca34bc3d313e365ca47981a0efb880a3cc8be3e2cb00da7df69de8d52f2f1fc793c1654cce1385ea66aec40eb5339c5cbf120c127cb399b72fe84b7297c4",
607
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/XChaCha20.php": "de5d7f3dd4402fe3c99b66a92fa4f0766beec66928c8996b3754b2f7a8869b65035c6ebafcc8ba2fe9b309adf541e89eba9491554f1ba548af6139770aedabf8",
608
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Xsalsa20.php": "6abb7e9217d5463d373023d5aab49c41cd3e1026835985dd13256e68374ef63b90b7dd033f7fe14ea60229a98e5e64d0d0f23b7a382ecc9d8b41746bbe3fec11",
609
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Crypto.php": "257d3d05f1acc745b21f25652ddf0b09b5a68b2b75abaa9216bee10ea958f8ed1d3c964dda5326216366d9cca4a71e8678c23994fd07eca2582e3d8c8aa75500",
610
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/File.php": "d7cce5179670dc18544eace3bf8b8b9863e62fc9520526da2870e45d5d400004fdeeb3c0f44a90caf0742f89b633e7fe3f996bd5f89af4c7f52ea37f429e453b",
611
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/phpunit.xml.dist": "0f8b25b7effe47068dfafdc568c3298d7c5f2d4eb1abc040c8dcda1b0daea8523a1f82d8e00d6475ffde3cb566c18d17ccfd07db59c72bda11f40d555b692d32",
612
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-above-3.xml": "5bb5402c96cd45a0d88542bfaa12ee03c26c3242f42f1e33a2a32e5a16143e6b66e7dd4bca7cbe30f73ee9eea7e72862e356f1bc4c4daaaaf1ebcb248d63b230",
613
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-below-3.xml": "9ef67d2d8ee81c94d0ed80d592894be0c200045b295178f246865d12a54d963e97b4a8d75ab88595bbb73d74c75ab2275a54b9a33733bea2d15487c5894f515c",
614
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Compat.php": "1c233a4b931c13b00e243f699eed9e81fc683846e089a24ad90dd17f786bfdec9ab32509eb9666074c9fc2a168ea8d411144274e6c4d4413996c78bd3c536515",
615
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/BLAKE2b.php": "27fdd20dc655cc7f58454cfa97fb974e4d99f6da5b97d79e669d41b9c5bfd1be18fa34f0ef7a353731a3bebb11b56fcb68818cabb3d8ff026682e7b39106c6f5",
616
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Common.php": "c8512fc6d570a3198107493c7b8d20f38539caec221adb14161d7efbd6ab7d1d0bef4cb5528fcd84cd9484f1a9e0fbeb45aaa2365012680b0106ea92f8873281",
617
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Original.php": "4564f7cfef60c318abe626832bcd355cffbe04d020e04d18c5554fc1610c4a1b0ae8d1111681e2a458ae0b9d7ef3528bd62aef019fe3c1a3f9d28b5ae58da86f",
618
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/UrlSafe.php": "dcbd158a52f33b9c64c8046c8f091d9af95657a562ac694c9ac0beb3a1876d55a3f23cd42c1777d9cf2a55cdae38d88ec54628b2d5fccd6befc92d4d51eaca2a",
619
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20.php": "f0015a4f95fb6028c015c954992233d76ff0b07c7c60de6347e7b7ff1cf704e80de4ed5b3e236502fddd3c56071aa8012758d905031d6154f965c4898251329c",
620
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/Ctx.php": "aeb8c31a1bb46b8519f280f23d349fa93911bf766715c0964c0a901369d0f0599e87c6e13459734f582a04ce74d9ba9f3ed7553d4b7214855a815424a8a8610d",
621
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/IetfCtx.php": "d22a84b5bbe07297fa80c989e93681b27b3ee502a9b77b63e2b08eccdca03cb98c39834feec5fce3cb0e1915f2944b06e94fe555da123de982fedc61b30c1f91",
622
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519.php": "b25ba0383cbaa00339f5cbaff6b400a25f3bd4d244d2fe70a08b987ead0ebb04a7f51b9476baf01fea5967610911f809114e39d21d4e278a9be72b48ca39b09e",
623
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Fe.php": "0fad7d424e7f3fbc0abd6a4f9113c83523aadc3f9d3423a94da0954f56d31705ca567ffad0972794bfbba00c4909c8638130b99a983cc52022d262d6b7d145bb",
624
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Cached.php": "58ed8181f08dd61076c0ae9ce176455d951de04b9b1b03260c593d009414e9757d9120ea9e94040ddc1e0867f8a6574dc55e3acf82f946100d03d4506c9f778b",
625
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P1p1.php": "63b5f5a6c7061826799c2e3285884ac2108adb19ea246475b98fb68a26aebd694eeba56191fe15fbc1a9ecb9b85c139bf9e8b65b4456b8fb42652fcf29097fad",
626
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P2.php": "4caf0b912ad4bd82f8c447fc25829177323ba7af6d2355a7709b8ef99a855b51158e5252a1739cf6e9ae72b780e415af0cf3d510bded3fbce3542c99cf057535",
627
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P3.php": "5bd84bc8087c48e62e9d29451c0165376ae8486ad9288556c81e4cb897822cdaf95a2df6093f16e2a336839d0a4ea7c1535361bf041d8be0fddeb1eb245eae55",
628
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Precomp.php": "a58cbf2c93a75948b4576395ba1ebcef5a35b6dfb4625690e872010a44edd92939ba146b145cf40bc2cb6e45da0e19f169a45b575d813a70428f171459ee2d8c",
629
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/H.php": "0ce669e4f370acdbf6cf27d5a525b0a3a3bb7c794b8a2ccc7b2f3a3670fbb048a8493e3e6306a5f148204f50a5458d47ffe4a2705520e15631b02d45d39b0676",
630
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7",
631
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ed25519.php": "89eada60bdd8739af528cd74b771a2ac04e36aa3e588549c7e8a82d2267a4df5eb4ef13c806185ac65bcd33fcba0f49a03cdbc03f143ffaa576ba6f4ab5efaa7",
632
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HChaCha20.php": "e221d5f3c4818256a895cc05a8e68ae2b3cced7eaf4e425f3c373d59b2cec31fa7b498e5e42af7e374e70c3a176f966da3cccc4be97b646182a8bef2817986cd",
633
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HSalsa20.php": "05e5376ceaa53ddb24971a43ded855892cf37fe0f03647660f573334ca79e61edafdd511c418cdb3d42e62298462e729c69b4dae3eb802c4749774b43d659536",
634
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305.php": "1bc3f6e6323d44ab76eca14cce61e7043ee98d8f7c50f29a5e29704c35adee345faaac767af588e1c6566f5732c1ec40ea815c51711056737460c9143adef1e8",
635
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305\/State.php": "9a69f92ff7c3e384cd57c0d5fddf9111d57abc9849acebb329ffd1ac4f53e539e1548140f4a430f628cb378d7fc980494307df13e4d1837b0af377bd7811c6d5",
636
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ristretto255.php": "c4fcc5c22d8ece4e704c847ca01ce6edba7682fb2b9b91d74d664a204cd5955128c3bf8089a855312244f28c4ef6953927832ed989a03edf6eaec5c26df1722e",
637
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Salsa20.php": "8c2ad19b46f527ef9c091cbab17f64d36610745ef32f778e3911e1aa2a142e88c0f6e005ced046a678d66982d2e9ca48677f082697af3999cb62fecee4d800bb",
638
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SecretStream\/State.php": "629c6f96a7bba323ddb8eb422e7048839c188560932cb4306b9f11ba8a2b15afdfc037fc14ce8725ed3efc72c26700cf6cd2ca4a85870fa885aad6b6d57a4a0c",
639
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SipHash.php": "6f24cd7d32eb80c943461199a0937b0acdf01560542c54ca916fae6843c3dc5fa65d751380434508aa50501f7dfb6c227e9330996956c4a8c8b32b6ae55bebba",
640
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Util.php": "fe12c7259ad5daa7eecd8e199c77f822e612333169878309cec5b5483a9bcc775261c344a31023c2741d53f37f05a0f6dc6289dc45c7d7b8ac7fedafd5458d57",
641
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/X25519.php": "ea1d665ec23534de7f18c4f48094de4463753baf8b9ba011e38b969873bbaaa32e6b90bbbd0597baed3687c28e37fe394c224a229d734671b7d7e03197d039f1",
642
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XChaCha20.php": "56d827be22c68fe9a2cc01b9f5890846197c5831c3c0f129d9b8c522391b7d7391a217a2dc48a4bd78e81c3d2f3bd8187546d311f991148fdf43a8a67730c81e",
643
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XSalsa20.php": "c0367d97622bfb654340a6a7948e8ca4ed399d106dd8b27169a9f5d9bc6532129548b4dabf9f12ffba654f490b8adfa07b0b76935bda15705560feb7c590a3bb",
644
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/BLAKE2b.php": "97cb339b44cc54299394b4fc27c8ab13d5a8d48aa4c8fce71733a27cea5d3226df4341bf9722fb4f4ba71c38f5491d677774245d75bd91a693269aaba0487036",
645
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20.php": "da693dd0be25c739b477673933d361ed4b2f83110ae98f7c6805af20789fb4379b4b7a4ae34aca588666cfbdf61c2dd5776f8a4b1ee0215dae64ea09c6479a10",
646
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/Ctx.php": "621194fbbe2eb42c04c9d94e45e3a0ebafdb4cd87195b924705f8c2a9e54c9dc52fa6dcb39967ea1dc4ceeb6f2d20659a1b0aced8035529376f6244ffaa96f07",
647
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/IetfCtx.php": "b4a0690f9af7ace9fb3f8c10ca78989573a1cd49d3309f9c0011501daa3c44f7b616868e417096076846b19502ddaaaacb7c85f9b5c8622c57e4882982e09a10",
648
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519.php": "fd10531c29a88f84f8b7de7c09a0e9e66472658827bcbdc55dcb1fba54f620b32dfe9359788e67abe4f6ffed3e4841e6b74939d7504188cfda243512a86c7eb4",
649
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Fe.php": "e6e5ce11b327d42167d51d2fa462ca6a54bf180229261af9ac1189fab30941148136ddabfff606dcf656985cb9da9bee93902f1863a84a3e5d42bfccbb0111d3",
650
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Cached.php": "350f529a5a178921a2f40818a1668c3effdeac12b9b8aded2f57f1654343d0f7f535c780c5a271d9b7772969fff9381befcb85aaf676650c67b6e583d616c064",
651
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P1p1.php": "fc8344d196cfa17fb61ab576b0a73f0ecbdfdf03de53d669cbf56bf10cf13eabd8c8a83d3eab7d9f9436b4dbb8d0785f9929c190059e0695579811405f3c840a",
652
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P2.php": "6c4051bff3e25a7863fcfef3b9c1f028fa8b94d301e4de5dcb6654c629bc95f44978fdb697698375e3cfd1dfb9ae6a3c8dfcad0bd5138e51cd5d5315b5e5b788",
653
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P3.php": "d6ee2e6bd34cba83a2025bd79e2d8a829d39f148c65ceee5a382662ef25b1c684552e0486ca29215f52d5d1e140176bdf6e2c40febd55970db55675b76d448e2",
654
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Precomp.php": "397b94e8292ad4f09cc37f1b08a7f364e12d6acb74f125ff0148c5562631f632a2ecc44db517cbd5ea61865e70732e6223a0c736b831c751df859a7d2afc4ae6",
655
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/H.php": "7bd14df9e3afbf8bc2ba27d5faf6ba72f17eed218cb7e89f4a458f500f6d9a60c52eaf5f1fd656d7de492246b0b0ac3d5904da319c5d85b754c64ce4b1f1b433",
656
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7",
657
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Ed25519.php": "30b970fe798803452a504ac453c70b5a2b51cf3094639dc58195b3c8e44fc37089c58bec2337d7f79ca60c91c4951af5dfa89e9dfbe3ae327084a806a6b8db7f",
658
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HChaCha20.php": "d4fdd553cde5a1ff277805bbba85128e3ea59e4fc32eaacbc8502414148933c760ef6da06fd967bc594f9d22523c62e45ebd7cc9411ad4b76e2d76c0fc2c00c5",
659
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HSalsa20.php": "8bbde85156bb88b6f0f14cab67840cabf1e1c456f9459edc145e09907161bd6fbea93fd37f121678064de6922102e78789cbfa3c2eddfcb40b93178fa3fbab6e",
660
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int32.php": "325772c5cadd6953316e83afe2a04804041292f25cb16e6027ea230e20aebcdd819c937977918161eeb9c43187fc105be2824949c9d6059e9c0a39e0cbc42219",
661
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int64.php": "8fde2b57266d78e8b03d8c3f89a1fbca3329bb6d0ed4526b3c6dbf5a0e92ef9d8e9e3697cd23b7eb5f7524fba7474cc5a2e06f1ba6faa04f7cb8729c985a5794",
662
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305.php": "f0cc2f5cf32a37ad6c3dbaff1a8a155ff334995eab78ab42f2e5bd950390babaee0c1588e3f17d4e73cf970b8e3c34f536096d7da23182f526b0eed704e3ecc8",
663
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305\/State.php": "8656ebf7aa0c2c7e8cf01546a261bf5e9f6c374eb5f40f8133bcb33e35bda2f19f47471b2ae6af6224df7ab9bf3886cc43b88049e8ddbe54b8dd129b28491129",
664
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Salsa20.php": "bbb3dc0a30030d9c5f5ef1ef63e36f9a067d67891185b9620ebee17a67bee31a7abc420abb7b82f38e913b5de54d235859f0e8f5f718d8f02316f4fb03e24b2a",
665
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SecretStream\/State.php": "69d505517dbbdd2e77cf5aed72673edffa2aa008e70325db88877ba5673ac3ac070bc4c19cf13707932b0b4d71ee0a9b007e06a0f822292ec278a60def7cf511",
666
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SipHash.php": "8c3c2d2e4c656ee6f7af729856cc4c79918ae2e09a167d6d0cb92f7dc9240c0bdaa36e65a167f5b63961d9f9ac4df2c19e50c848e5a6da5855566deb5b9ab8b4",
667
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Util.php": "d6ff44eb1015687847600f8b7f6a80974f4de1cb80224ea7f733e908fd53ba2aa669b97d891fe89bf0bb8d358c15a2bbf0661a779e68a715cde0405455127eb4",
668
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/X25519.php": "9e2d803c100fc9a3749100dda30fabe25c6ec59382be64f9995b6505e1652d5b2762111f2243b69316abd942c88106fa5239adcae842971f22fedd8e3aedd954",
669
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XChaCha20.php": "1d4ef660701da25af79c9d4af2f158e3f62afbc1e5c2aa062f64b970dd33378d5f67c9f0172991985ddd65a976759e09f4604ffdf6ae158bd8a98f4e97af851d",
670
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XSalsa20.php": "ffcbccb7d8a1d0262c5e74cbc679022bbcf1acf9160599ce2b92f66e261996f0e93b419231fd41ca95852e09b7a892dd8e98101c3426d30cb294f869908ee21b",
671
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto.php": "1af076765319483b5e0c2a3ed9d5a12133fd41b7172cd15073da3723200c41cdf077dbee04f1e4badc2b86ee5e23965dfd0e8f3af3f52b3b584ab2f775f64cf7",
672
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto32.php": "9fd3ecc6e6faec645f2c5166ca551cbb4ff8430664bdb46c383da399048de42ab505a05c709b6ed0de245402a1abd701f21398252f059003a59fd55bffd6399b",
673
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/File.php": "4f2a6c996bd3fe4a07e4e1d49d2790e68798add08c4887efb3d7bdc7beb5ec2c1601b8e77a0b40e570211f7d3b4e5a5f97471f60df8b31434487495677052640",
674
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/PHP52\/SplFixedArray.php": "2adc50710dd4bc2cc1138b741cde09f225f727f2177d006ce8ca82691de0336dc51b6c30384938eef1693ae92628460f8984aaacf336815dea092de4ed1521b5",
675
+        "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/SodiumException.php": "705f6e9777db6be71970f7e218339e36d50023abf723446195cef782976d7431f815a90d1ed83e32ec527303057287f890215b4b0a9a8c992a13d111e8bfb947",
676
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e",
677
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17",
678
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/README.md": "b552bcb37ad765a0aba888fe43d2e2f41b5bee6c90e734c365797e74dd0b8c4df017ae74dab2458edb410630299efd7b649438db57acd53fefb1723e233416f3",
679
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/VERSION": "294108697ec66acf16af2f9518c5999605a8585058ad25dc9303029fd890e6835b2fcda23fff2ad60058f8f6a8a19c945d998e4e228453d4946e395b9aa2055d",
680
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad",
681
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.json": "e05f4af7ceef33d82ed5704be36e1b9839236d13073d0e23ef77d33ce7ec303cc2cfc2ddcd25318f1a5295bbe3b61a13bc2fe72f55c226e2f072e2a0b1959481",
682
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.lock": "2b8c24986c6cbd290c0ce53ac4f773836751aebfd65a2350fd07b4cf45292ce2667a54494fa098da13a385ce7a9e10a2ed55d20f7c8dd6817f93f33a6cc710fd",
683
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/data\/ca-certificates.crt": "659e8d36bcb65a7fdd299ee008fc4ecd42be87d8ae7d7d15828567b9be44b4ed8a316978f2f7d3d5d7e96a4da0b30bb8bdcfae5202ef099691daa796318a869e",
684
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384",
685
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390",
686
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e",
687
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/example_webhook.php": "336b92a647e49d8c994c8e6dc6b26670f0a58cb57d4679d0ba7177fa1f56a84a628e5385dd4c1c25a1395b1d8499e54d34eb2c20f9742a2a2a3d0cb20c36be08",
688
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/simple_webhook.php": "ed299912ca9a55170796df76b25c5c92462660b065ef7eabf24bf7f552e75fe44512fc3fa977fae2a9dd5e9be1ea28100a456de926fd7f24c32152f577f8e46b",
689
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/verify_sms_demo.php": "042dee741d4fe90d78edcd0614df6a371cee77d1a95d34623b4e558ead69378c693a33d044f450ea204efd7253e7eeee1e5a4119708dfddbafeea358bc5408b0",
690
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/init.php": "82a207681a76c9b00d1a35fcfe64753cf286d9d0122366f8c1f3009ecd6c548369d2b65d5b4e03f20faa9502b967a3bdae30865e5bf8598eba630b5f9555542f",
691
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Address.php": "a01e1efcaab0209fa7cf32ed85722ff793b9c0f750daf7d3bcd0499037dea764f2a61defa54b4bbaf602f8d0f5f477fd4198e35d6d8b47b82fd13c7a7e70ad59",
692
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e",
693
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/All.php": "5a6381d1492e2ebd1498fb4371b55c7e112ebf2c898e1861d7dfd2345db8c56df221795208a29b2a0e42295846fcf98f6a60fa8839df7e28fb66b9bde9226ce5",
694
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c",
695
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Delete.php": "e3cde9f67ab7281870c7399c4e76ff5807791b94b595567f56ee4ee494574e0f6f282a8d0c024c78c1709940198460f386ab8de6118a85de7d8a52feea0b0dd9",
696
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/NestedResource.php": "209aecf9e6abb679b4f1ec2b59b1ce363a73970f6d389829b77802cb88b7bb368506e4d0aad42f090b715b4d4a580fdbe5c8479c02227102b4d147d615fbdb8e",
697
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Request.php": "afcba7de3fa312bc9e532e43bdcab8fcc5ca8b532c6f7bec08f94a8d7b2849467266f98af029bd688a136ac24ab2b7f438ca2fc666395c589d578e9d0156053b",
698
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Retrieve.php": "6f29bd2711e3c6b586c2bf6d9805b986a5f76fb0cd8c98c63259cd9873eeacd679f9718dd333110966ec3bb772e2ad06da7b1586bb590180770bf300aef63c8f",
699
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Update.php": "1d353ac81bc74cd57c75f01da21d6c59e053813930a0eb0fa054417bc87b6a140f64393bc04ac312b8c16803bb4c3eabae278839973f772e3202df32828480c0",
700
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiRequestor.php": "deeca798d9ba058eced71d846bd22cac360cbb25bd1271db25cd0ebdb29b1af9ee863b362849035e8a9f6ee62bd49b8415cec97e1fc01e674ad6942ac987b6e0",
701
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResource.php": "f093051a36277165763e1ee66594056cc266fdb89caec9ab9223ae6af9add8ea4a20e6e3ea6fff4e9625fcbb95f430686f1f89db36f981d7d54034d79bf397a4",
702
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789",
703
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55",
704
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Balance.php": "333bbe5f278ca247d8287c8da5cf3b3f6a96c896a82e3c3b54d01277e3cdc82dd5bbda2a1253fb473a29c49d3030b73b24eb8231cc34f85b0a43bd853682e000",
705
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/BillingGroup.php": "60d9fed23d1520237a50a707986709f3b700d42d049e4070a48fbb50f257a98eab779f45a15939af3d5bce811014c01abbcb86fa1b9ccc5b89d55f44c4b1a308",
706
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Call.php": "eec97591c5e7af2b057dac6e6498cbb2c1fee0439b1b7f31c2d879a5a0fdb5a3eb5ba3bb7e3c5a9195d9019e9df82c99a491ec52f15bec59b496435c0787d43e",
707
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CallControlApplication.php": "fee499465ecfdd2d5aee0479d3770a80219a5837bed934e0930413e6dde740be21bcd965216c782e0765ba18fd71714ac69a5ee887497845ccc1bd7797d6cac4",
708
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Collection.php": "ba4afd20a921ae7c838a74bd9efcc4e468fc12ecae86b2222f97c9405d376a77533f55924bd1d577429825e746ac59142f6d4576f4d446cb3757cb36b65894fd",
709
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Conference.php": "ef9da126fc06537687947c8eea71fc34a53a7d44607d60bcaea7d8c7f55e76a94a9d7e0057f9abf7efb1f4f270680cba042112a127c2c487fe3c617c5102be29",
710
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Connection.php": "c5f43a62ff80b2e91556dc63ad2f78cd83b4fcae4a7a28ede36388177591fbfc6c20b244f6fd4e540cd9401e34b04946bf422eedfce25316e61c89f15de97665",
711
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CredentialConnection.php": "fe9d8b7b34a24f5b3b83d6a2597359fedce871db3a526124832d4bf4129e7515366ae16517b8dae259305ae69f95655aaa8b4710a9addc23fffee0e70b70b74c",
712
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ErrorObject.php": "cf83764f49da72bbc816c8741644e15b9a74481145c6c0c11c390221ee4c7ae485cfc09d77db24a48b0756b69c85570242bb2b903c39ca699e636a299ec4dd31",
713
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Event.php": "4e4ccaef81755432630c46881a958928c8b633ef1dea76d05f05711da17f68bf6e5b7b77395abf297b3ab128c065da7b4ed38d1be3a45306eb6d7a1080e72994",
714
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiConnectionException.php": "b2a920958f3e1664a6ea5c5f32c73f9914b3f59d8a927c4e920d385ce87a6676475823729f203b09f5530da667f52e3dc3d4471fa498277270ee9360d0797b5f",
715
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiErrorException.php": "b775efde92c04d1a53dd3f948f2efd92baf1f1dcb5092ed0863f37bb71fe03052562fa89349b1030f3d27a0dffa974ee47c9a3655b40a3941b05e721e7fe97c9",
716
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/AuthenticationException.php": "f8154528a04642cdd24f3de876b1a38d6f97e357d36badafd39e596ca739df7fb77f4259de1efde8bc300f126b20f6e242db4c1e3a25503565df579b62676ec7",
717
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/BadMethodCallException.php": "5e6df108c1df11bc1275948d96829f0ca6ff039126934ec57dbeee74913af00a64e6a9f2b58f42bf74aebeb94596c45cbcf66e5a4afa8924b238ca63d424f452",
718
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ExceptionInterface.php": "77d5904b79a9a5b265ef121cd19d91b952f631ac7436e7896bb0786d9afc0b7ffe54c7ea901091baefa0154b91abfbb3f9f3a7fcfea4053f27cb44be2d7cb23f",
719
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidArgumentException.php": "f2872cf684dba5abd50bf876971e32364a23c9259c1e85a01575348614274453d00cc655b01c2dbf2c78c88f4a6143cb486c786dd1664204dc7676a64a9cac4c",
720
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidRequestException.php": "fa310ff5d5ea8f02f731089c27e6903d9b0e692a3faf272efd19ae4f1075a2a1219d167730b21cac6a30e705816c4230e2511fdda981fb47714f4d81606ffcdd",
721
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/PermissionException.php": "4cc209df863027760738530c5c01962702970a73ac7f11be232234413376dfd34db049f4e49305c8a15ee1f016b26f1c128312930e10cab174e80d6ba20cb12f",
722
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/RateLimitException.php": "c37157b02475d2a3940dc7d007b84cc3c86cab88b42e841a392e3ce4919e637c9b59bc7b33ad3ed8b4b32e74dddafd8e61a6f30d60029b8b1ecc82b8faad4833",
723
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/SignatureVerificationException.php": "3aaa44cc52efcc4caeaee624c070e8ec87b665decbdf00d8aef04ac857358028e4bc0495c4a86c504f3ccc6d753413c5ed685816e3b80851026bf2034514cb59",
724
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnexpectedValueException.php": "33504e45241779bae5e9c1d6ace82a75d545e6f7ae76f7d7f071fa4bbab13b2c23d11e59230da3c242b548ee7b5386bf4795e0d06d1719812348d1f9efb0c1cb",
725
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnknownApiErrorException.php": "cf5cc44f46c03d9d0de656e2ae61d7b077d123a4b6666a4b0f57fafa2033e072ceb5b14d6a47987bb14e0acd48ae00b39d4d6ac1849fadc879bcc43ed1acb44a",
726
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDN.php": "b7d44de17cfcd207ac1fe6aada6c24871a98dadafc4cddebe28b135c6e507634608e1b6c7052a40cc750f6515fe19c2de29864d4b9551e7002fd800cc6cc05fa",
727
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDNConnection.php": "527d18ad480447e4d79e567e7a91796ca31bb778f10011aa9fafafba6e769d387fdfbc306a6f1ba58e583bc7c37a9a66f1961494d3639dcdcd8912efcd0e6a55",
728
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Fax.php": "fd8af5f711fb5341e2b86a7fc66a49707bd31efabd2cd63a1d5153c24462f07341d6af618b7e82ff1faeb9bdc203f62b6dd5570d74754e052300d0d7edd0424b",
729
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FaxApplication.php": "f489a9e161565a6e7f55a4d90fc05bdc8147a8947788a757a2b5464059ff2c49e61fa26b6d1f0b43fbf9ce8d0c08328e276442ab4d2d100e7ef34e9b2e0860c0",
730
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/ClientInterface.php": "da6ee5de3e8aec8ac144511858cb3bec53bfd2aa0b5ff27eb43c7f72dcdbfb1646da223cbd861db7595db904007ff4c8d6a010122547a98bc1d2c07139328a80",
731
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/CurlClient.php": "dfcbf2f40053699b94de74defc4a57461c2e07280976a377cf4ec3600e6279fa9cc434060b0291c7e10a634647e1a86e67cbaaadc49783eb532681ca25256a42",
732
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IP.php": "624821d6dcc5d30a1a08368bacba88cc7ce8b768bb3315b3f8013606e303fa8940c13da8ece0c67a43329a0cfd86d8bd09682963eb54138f4253eb2f159c7560",
733
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IPConnection.php": "01239dc2096fbe207ce1a5a58dad8d25795b9a8a81dbdd4290730009f2fafee76d74335aa951fb7b54e930e4e9530a0566daa9ef7e99ea60a50b8daf956f11dd",
734
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/InboundChannel.php": "c37478b08abc62ca491806db6e2814c4a28a11357fef873f6aff8867e179dc8d89817ee3db3fdaa84150111cbeb426ad0282dfd7550eb815dca100843f542178",
735
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a",
736
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingHostedNumberOrder.php": "ecee6ab7a46ebf03b93870017aba4ce00c10ee36342a6d3ead209078aacf4ebcb798ae129535fb15af860355b52ea72ae6bcbf0e5261a9d66224e43560858227",
737
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9",
738
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingProfile.php": "7a561dcea7b45a4ad4c3dbfc6baa766f011de2b2dee9a23e512689b374017b05f4fcc5c3510f19111a9d8484ed93a5e05d3dc01f35d75e356f475a894596dc49",
739
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MobileOperatorNetwork.php": "d4436bfd9a628713889a37846829763909033339a086b6983eac792e9af42c0df2a8bcbd688c5c54a196d1fcb3d22aae7b45e9e18c015592d979e9a924c42ffd",
740
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberLookup.php": "cac3b5f1ea0ca30f9121849a8aa52ed2e18b7776c4f1d552dca4c3536e0d4eb96af45267bb687319a9ec715972bc95a19c7dda54c33a2701e20cff9564dfcee5",
741
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46",
742
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrderDocument.php": "007830f9c03979a7811a4e0dd0c74c4b2b6d05e05b56b9d6ceb5a6e55167eb95b2546087ae17328715e01d486c0e58e396bc41816b44866391b98d48ca246d03",
743
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberReservation.php": "988c853084f13e0d86445d6638517f84ef3d90c3f618c2c85c0bd8ab790012c3986a1a3eb3e00fef7759d04a6a1957bd9521bb8da6ade8c05fd2e02a8040f6a3",
744
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OtaUpdate.php": "3c9579c6ac1ef6f31ff572fa3fb7562b3618182cb36eab3f406d8fbe6fc7b1d35a996e47923074428583ee3653aaff3792f9fdc47eabe1627f1a85722fd9dbf0",
745
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OutboundVoiceProfile.php": "d0c5985f6f629904f4c95b892e329f280f7e0e13b8794d1950e216ef4c28ede7b94baa99f18803ff6f60b09d6178ad39fe5d3c182e984c2b4b57e9732991597e",
746
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber.php": "8106765a769bf3f6190783917aa923f3f7690af5b7bf971e3dbe73ee5f227b27531a553cff9cc425ccfc7cf2ac52bcfc685f3d3b178875f8fa837a5de99a077c",
747
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Messaging.php": "d0aded1cbbd4c6108b0fc6e6773dbd03040af54c967f0a8aa9b2523db769317182889c882e6efe6fb0e187ac3f2919563aa6a937c77f4c1ff94e5bbc31f4d9d6",
748
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Voice.php": "e7e8184351cb186fee77019e88600dcb15da0435161d1878799433686e012167ab3347d7f02efb5cd511b5d02cd7b6547453f6ecaab623ed23fac7c91b0a7333",
749
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingOrder.php": "ad9a683aab02c8817796e62131fa9cad6f3490d3afe231b5718b3b4f0689a535543362a88333ab808c36e9c41bfc8b7b6178be7fbd5b12f38b6d806053726997",
750
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingPhoneNumber.php": "ff2e1e98371b6a7b0cc5265d1ab82f053d97711a72633a7d3911a4211dacf75c08083d6629aa4fc028643c0dc929d3ab56132f6f21808b875a9ce679e56fe055",
751
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Portout.php": "71de0eb22350f649e5023b2c4a374b3d10a4beb0f8066d67482c62f68a39219d9cda4bd95d91e1df2fc215479f45b1ab79bfc0ccc2d39267d2f268356ae83ec8",
752
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RegulatoryRequirement.php": "0658d49bc2c20a9a16ac72ea01b5306eda422d81747529c3373333facb5ce1940252387aa498d2957dec62f0eeaa8aac3979ffd84ca72308e660a1a0708796d4",
753
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709",
754
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49",
755
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/SimCard.php": "46289711eda27b37931b0d9f7e9624c114ef9c1e997ea88055dfdf6fe6dfaf7f9169b9a67cbfe48100dc4df2b73ba4d27328b0ca3ff0af3655789535ec3c0b26",
756
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelephonyCredential.php": "497a3dde2d7fcf8bf57b502c71daa5e166010daae45e30e1db7ebacb3a37028fc70c7cdcf39a356dd32f845664e8e9723a366fa69610c8f9bd31fa59b3300624",
757
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Telnyx.php": "f5ecf9589eaf7db991051de8482d582b36edc387b8a7ca48c80a419c1a99e1393d7f099aa4ad3e87adb4706ab62c8714dc843c9a8ce77d6fe6ea5ab929d9a882",
758
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelnyxObject.php": "0f45c91559ef686a3eb4ce3777ab7d43ba288b380ffd1031cc3c562138410d3582c251e2d986e8a84a2c189257ed4307500e3fa0d662a48a30b28a9622ae8ad2",
759
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b",
760
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/CaseInsensitiveArray.php": "d5bcc37aeab4fcbbe0b9f4a9057a5654f6080ed899ae54f8ef18bfc907f244071a6693386dd306caceb6bf338883a13c7972574ac5d700aa00e22ec363932cd6",
761
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb",
762
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c",
763
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/ObjectTypes.php": "99ce4f7d4d4d9d43e24f3124a7c21b9540267aa160c780efe69d6559843a12948f3790b179db66282b0adda384309a793636d71aeb97d9aab0a62dccfbe2b51b",
764
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4",
765
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RequestOptions.php": "00b6d4890b5a38f42f13ffdca556bbf1377c05c8a79ad2d6d0b69b7e27deb70252c15088458da4bbd56e7832cc6b2828e261241661dc344727e2bfb170465de2",
766
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Set.php": "9cfa1c1bc6c012e8a7a797ba8a7893382eeeb234da73f93594a159f78b9858c984dec1e42da5a6cdb240f00d27d250e3fd6a7842d40c23513661201a148a6c5e",
767
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Util.php": "4556fc8b785486adfb60ea8001296ad0ae7b13d785f92d545324b557fc4aad85a69ec19dbca27dd868050d64670e4e2be2e3a4f50e4aaac609b0089c0e9e2749",
768
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Verification.php": "b63d4f9d717ba204dcedd1c3315db3300567fe09563faed0e4b8f1415171e43e0068fb06ebb2f42c808602248f623f5773414a1612539a873070f461398be650",
769
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyProfile.php": "fbdf0818dbe1fdcd6bf13720f21ab6552a3ee7930c80a9adc44c3863ebb3df990b18adc8beee6770f4fca9bcda0d514a689d051c129d871eca48f2c0eccd7649",
770
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyVerification.php": "f2883946ac990666dfa62e07dad649ae0c9de75d5682857cd22419fda8926d45d504ce4fbf38896a1cbf25323a604a818d3b89f05baf58d91cef497c54d981e7",
771
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Webhook.php": "b451d90496fcad105eb4f61d5716b93878405315742c09d7c4be96c6b9c0427e35c03c1a664ab2f30f1288566b45117f87b069a3ce96d64111ef6a1ef289ac9e",
772
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/WebhookSignature.php": "ad990cd80d771718468e39aab1b06809a0efb9bb47f5ea4d42a649dbe481f5929fcbd502da6140f1438920e96ce2e4af82d9cfd810b0ddd0eaea391599685c0d",
773
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4",
774
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf",
775
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb",
776
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8",
777
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AddressTest.php": "dd980e7890ad3dc1d12858f2d241a461689a34892bd780a8db034e620c23d01587996042c2c12d82333b2072bfcca6585afb06213694b7415b0b13d3084b83f5",
778
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/AllTest.php": "6031bc6fa9e899f06af9465468fb9e15bf5a9a7c1051fb52fbd383ea879842e72ba4b5347d07566182c632b5f66d5f2d4bdf73c1368a3581c6010330bff91ec9",
779
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/CreateTest.php": "c94c7e854a40716aec0e257c4d7fa279c3e941d64a37e167d4885dae5a0e22a513c8f3b018c436eff90ee045432c5e34b96aeb7d879380e9386c2bc177b94f39",
780
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/DeleteTest.php": "02ea2d3adfd1d83770f10dc42cc2c12c28079ca80933fbe02219ea79fe7eb6958d2b1d76cb7a0bfee9e308c01efb1eff61901e22d192e15e89ae67f7edcabe5e",
781
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RequestTest.php": "f6e158958616f0637f827b94cce168e873e0d3be09e4ec27165f984af3d89c0be4d5d5cd3ed66df5b6237bf183003a0de1c652f599827fd01a2ee7ad47d5fd61",
782
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RetrieveTest.php": "b26b8f61eb3cb893ce4ff9517817295fe9b727dd570b1cf79ace36e16902e0ab9f460d6b65342afa28c59236b59ec0ba0809e1cee673f69ea26489fdbf5f4f42",
783
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/UpdateTest.php": "6aafed3640a1173822ac9a26c002168eeef552f9b681fab9ec4f191df4f988a920d8c290b2f875c02596ef613273ed003e4b5a6bb6e0bc2760f54ffff445cdd1",
784
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiRequestorTest.php": "5a1234c4a1e4107aaf970bf87f0fdb1420979dd575a548e589b046cd7feea4dc914f25bf15474fe5bcd9773c94184b610d06b309d48639964a78e6137078cb5a",
785
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResourceTest.php": "05562966c7ecea541b0ae95f67a11d9e2b86e45439b436b319e252d5998e0eb7a6c9b677e233572fc616caee856d9764b56feed80fd07cc1bec0d861490753b4",
786
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResponseTest.php": "6f8d458b49e34df5c0634276659fd441e4140fb4dade92b384230e4e2b897e0da6d0e82c373b1eca98770dc3396ffc8b924672ce2141426706c624d00ffc7af9",
787
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AvailablePhoneNumberTest.php": "354326429958fdd199df78d11bbc582a0988018b8f907d93808cbd53243f50332482c0603bf4ff12db2a8977ffe7e663ea9d6e8cb5f485aece0d46ae8942833d",
788
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BalanceTest.php": "8f866f88a8a59754e2fce7d5fe2a0bf50399fd21711cef171873a45308ff96f929b23163495c273e96c9894b7ea39ee5149c45e764fa0de3b51807a329c674c6",
789
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BillingGroupTest.php": "4333c81ee3ac767fa600095d95f324286d289c7e105ab251f635d9a942e75c418bde60f96c5954ae29dc152ee5fe7679bc5a8b67452f5fa1f59a411dc4854c69",
790
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallControlApplicationTest.php": "2bb4f83cdf82457840352c5beaaed8963aba1dcb59711e310d5aaed0d35429730796b412f1aa4e85d5be5a2288ebdd12fc2be9ad75549506d1a613d604d20749",
791
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallTest.php": "50f830a3a3c28953ec53c244d22381910307513ba18b7199d5e7bffc5747863e4da975fa972114b2f8a81d0c24afb2f72df8315010febd8d606d086d79d82165",
792
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CollectionTest.php": "9e742f72d8a223e64bf1a25362f9a28356c0b55037811510692880a359ee5e39266d9e76aa0832de39530e26798806929fb9ab9795a04651ff316f609e2211f8",
793
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConferenceTest.php": "4e8ab0baaf21da65e3942b0d98caff11b7a30c24bae10ba546b82f7031d7a85b9d88087f9ac8172e69546eb7635bc1cf8f39b509017b82116e0e13b557bc1f7e",
794
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConnectionTest.php": "429f80316a563f45783c87db6b6d3dd1564190b5c6a259f254e91ad8b71b2aa5e6ed40b9cf1a98632b7c89b66441e07f0285d434c78dd9729c032c7a4891d4ee",
795
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CredentialConnectionTest.php": "a1c37f36e418debb034faa2b7df5095eee175ac8801baed517089622123dcc4af642448aecde7aa8b19cf67629de087e4995ec816d791b5007923ee614590c1c",
796
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ErrorObjectTest.php": "97344e9d24c204ae429b856d0b32299de4380ec52e9cfbdef6090add25355d268e3dd3ec35ae7c5e0893f5bb204624930d1a856932243180bb71b40e5a1dc08f",
797
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/EventTest.php": "5152c008cb3de14a47586eeaf3ef778629b2beef87fe154a2c40c337c3f918d664c0ea44d8339e22846fedc696fe6b98f0bb0b557d3f88a3ac62990445a55ec5",
798
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/ApiErrorExceptionTest.php": "7d54379e1ab9f7d6bddb721ea1c284a8d023674e24e99d115f388ae367250089e10b5962e2bd091e3ebbedd0cc83bb4f821eb0a986ae11487e341569ef7f5c6e",
799
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/InvalidRequestExceptionTest.php": "a7da1818af1dfb3eaade1e1a122a8a3224e03a557396e11528af75b13cfae07764f82a282a3161d514358b4c55312193c73b5a8900fd70463fe0a66b448cc9f8",
800
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/SignatureVerificationExceptionTest.php": "1bb0fd1563a5c91b78b02e4f66f3cf0288986f546a0805830e0d4ad1ac449549930558caf86c06cdc578279323c43e4739747961065d5ddfa198dbbcd9540599",
801
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNConnectionTest.php": "0af10bfb2398682865c4ee72cfb34425fe73b0fd20c86b51c61c4cf72f8c4d39a4ecfa21e4ae2e07a67fdf956057549f0c8c4f77e27e65dc1b75dae8b9b849c9",
802
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNTest.php": "625370468fb338819fb823fbd38656799a8750f5093eebf75c02cfb592969a8635a442ec2febfe07705a5d6feea362b7644c25c67ae653a245bdf55fc178a2ed",
803
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxApplicationTest.php": "64a60460c62983cb0afc2c76880628e16270f14b0b761a8d62766cbe4c0fb33dfc7bd93ae0cb62de25a8f2b3e1994826fcbfe300ea37353f398c4cc8ed7dd62b",
804
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxTest.php": "a920c8ac18021bedbbc4972109afb0cd0afc16e5d86df2fffa2f8e0bdf837e5684124f926f01daf0bae439473022899498441a770ad8cc52479da3d012f1ea1f",
805
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/HttpClient\/CurlClientTest.php": "cff15215b95a804e4ee233df60671c5c1e9270f621025f6ea7cd5a0bdbb55175caa6c43c62e176300bde05c9ee90d84efda0dcdf0d0b5dda4dab2a47d1a669b7",
806
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPConnectionTest.php": "6e034e287616ac89e5059d337c682e3fde010130f4403dc76fe4efa12742c40dac114ddc1aaf7ce9e553c597d9ac27170419c5e33fb1439c31c6b585953ff1a4",
807
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPTest.php": "7ff33e91d1c7b8bdbef1ca1f5e373150a05f709e524d5a62b000b5c8b8d697ce42306ea8df917305d9ef2a4ea19f797ca28e2f8d0d5f9e3e31c4ebe5eab55ee9",
808
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/InboundChannelTest.php": "c430f6df3eb5add5bda2342e4b4a3acd77b33d74758516782ee0a045d75e7387aaccf36017fdaef18d71cf8865a28faaa0cf07a4f31c9876858719d84d479657",
809
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessageTest.php": "08ae5ad7b98362fa7c1478254f851078ef7e9a223c74f3fc57619d2b9c255259edefefc400e261cceafce7072fa7457b8c1cb4dc8dda29b51e432f6d274a8c3a",
810
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingHostedNumberOrderTest.php": "f8f8ac7271fb01b07815e2a92d7a0974e4320de63942eadc12df307c9458a7cbda7ddae505a731c491e4aa6bcdda7bec04786890df80dd9acd422593f2a02c0e",
811
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingPhoneNumberTest.php": "7827d12be3191d1329168c6b277899b81df17aa18b775be538b9b29ec9a90868969c05cf61d53715c42105b92cc37977270c1a7b78bee3d13214d8ece51172f2",
812
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingProfileTest.php": "0949c56ac67ee6f87854959635dbd003391e497325305692784905987d114b399e4c648252f314bc1147e385daf4e60198cbfd6aa940a6cb24992b8cb5abc24e",
813
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MobileOperatorNetworkTest.php": "6cdaa23aa8cd0a0e9cc43b6f17c86d9c1f7793f7eb30b774f4a8ae9754488e59e0c180823c31d062abaa356578a8718c65f367588c61015e5e36f9f98e7a5cbe",
814
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberLookupTest.php": "e03a73e589abd73cf52a637dd7d273dd2477533b66bcb75685552b77b47f7b58116c4637477da7f9ccb36a408909d91d3f0d3079396aca9bee996b862f358499",
815
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderDocumentTest.php": "06f3e8f8e8dcf5d8c96f25a6f1888d59e9433654ff060701bcc5cb9f54b07357bb3606ac17af3e3913033fb639358df85c6d5c55bff114407168333d7d49cbec",
816
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderTest.php": "176ca2e94df05262e8a43f14e112fb62108ce886bd90a690e8b907881c696e35bd223f08a4960fb58ebebd20cd42bd4217ffa14132e53ddac260926c6d7e8842",
817
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberReservationTest.php": "11742f7449c279908848fd493817731f3f1343895e16d3426a7a7f9fc3d4cc27e275a858e16d7efb8e9c18d32de1ffffc92929e8e3ba277157ab7304c3023c86",
818
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OtaUpdateTest.php": "14830affab4936804afdd723714f2dc76c520fc2fd6e4d36d7bb255ef566836eafb6b29c18c5adb8785eed39f4bab030e3cd1aab1ef0293d9660b38a10fd6a45",
819
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OutboundVoiceProfileTest.php": "e49828087e2114fb11569db7387a0acb7cce8bdb0cd655b280b567445ba2dbf16f8b66a88369876e7a2530fb282bf5a04be702719adf4ace871c2b6df8fa5edf",
820
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/MessagingTest.php": "b3c5665f4661624f58f02b814ab1edbee5ceb8c26643bd356b486f049dbb498a44da0af43daf200890c79acad16d51c169d7aa1a2ad4befe074b0ac539ebe3c0",
821
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/VoiceTest.php": "af08b444289d0194437c414916a8ec9285b98413d78e74d1c832b9b45583f9037832a538751628b5dc86b5a13c40c63e9dd360b719501762e8e868fcaa6fb215",
822
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumberTest.php": "7a07f41165e45e5fab268b0e01523c2f67f0ad146965c401856582c4b4a3f63e53324585b1785b41cbeb637d8e61e26e2bfdb57feaf6c6c04cc33be8e4864df8",
823
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingOrderTest.php": "48d2ed4bb9354c772eef6484a0c9a195487c39f26bee3d143ddf64ae7da15e42e5f280a3e26eaa280940230fdee52ea09b7e5320823d4baefa73eec4490537ad",
824
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingPhoneNumberTest.php": "476748b7e467c4f5a648c394eb19dbf297aebc2c16357c946dbc4f363241639dd1001985a7bb21166d5bc77bff1e31edce6e379dbda10f04406377dafcae1bd5",
825
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortoutTest.php": "cd262d5eae7c9ef9ba8c76856ef2d4f604484e6bf8646e9ad5231e89f5d45c8176a8ac33a757c53e4be8e2c98e6bb750c6041aefe8b2a589ac1e70a2db4493b2",
826
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RegulatoryRequirementTest.php": "daa2836606e7c3f34fa122045e982e42f5da86b46f367ddcd7fe9b12e2a3fe5d472d4f38403d4b63aa0c58473d3b5901b8dd49b93a56fa3e76a0bdcf88ebade0",
827
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RequestTelemetryTest.php": "61190b3601f7c2c72f55e9b1634cfaf11ca53231cf4b5f854ab14859b97f5dc0f07f6c95b8f7c3516ed253e13768b7d4ed9c1d15d0772fd1850eb894f5821152",
828
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ShortCodeTest.php": "f2e867e0b75d8334ccce51f7bdce842b350e7028319e8d388e0512b5e119585952a54ea79762010f12de8ffcd1c440638ba5300ddbe59adfdcefc712d8e079ac",
829
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/SimCardTest.php": "7000edb2f9b739bdbd44fceeee2e4a16c708efb22c7e38483569d5416f3c107bcecdc759e2e6108553193ba99acc542f5bf3bc353ee1428593a81b80d89ad7c8",
830
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelephonyCredentialTest.php": "1f65bad536cd49b2df684db54533b9799856b32464b80700bed5008c9379c414f756d075ab8e231d83f5bd9c1729dba064a5ab5c7e515ca5c32e85698e2036ad",
831
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxObjectTest.php": "6214f2c38865c7a183f6a3fd64bc79e7f04963bd726fc124a87b65412075fd236e00cb5f5ed514a3ca2847faec77f4e7a14c59e8906478543daea9c4ddecb7b7",
832
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTelemetryTest.php": "ced938d8d20bdcd0d465155e1bd3ffbaec8ba96a6392c42dbec27a1d10a04da17b90fd3b91322c94b54fcd5a974528e6f10d081ca9b1915a8c8166e0727ceb31",
833
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTest.php": "d88d70053ebb64905acccf7e3cf651ea40c9155130e351d56135c96ada96263311faeabc83d4cef1e72387302ea4a11edf338c3744093d9828e056351eefe11a",
834
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/CaseInsensitiveArrayTest.php": "671262198a48a16dc2ddb7ecf1c7fd309241db9c74c11072d86cbd2f56403973e4bb17ca5bc6c489bddf46cc391098dd6b666b134fded9430c211c2a3193fc58",
835
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/DefaultLoggerTest.php": "39942a071430588bf6c089f5d0c97596b3b46b5b7a2b45d900cc41670dcf4bcf0d34e37895e494f0c89242e52d11d8a62f419650407c26ed91b43ea18c816e9e",
836
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/ObjectTypesTest.php": "2d697994485e6c8f9084f9155a5a5b753261bcd2afcc9dfc5760daa5d4196b7c5baee49b264142a705ca7dd6c5d2cde227db3c1f860173aee6769299db95cd83",
837
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/RequestOptionsTest.php": "86d628c4b19e4b7d057cac471219603643b6405e83745535b6c5f743fe84d5cf918a273f9e8e22c5eded36cc20ce49453e90c0ae05a9ed437059ddc287ccb5f7",
838
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/SetTest.php": "c91cbf6d983f16e033eec154e56705b1d942243371df25d5cec7cb375a359faf29fec0c87fa5f3e4d7aad512d7e757361cf409e60d643fff7fa8fef72d9ff172",
839
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/UtilTest.php": "10f13d306d3ac2211b67e759a6e1fbbbdcbc1cb791db4531ac799a8f84be67b3ab43cc85498b786b0630510324bf5039ac7ed39e2252f607f7937e802f9b578d",
840
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerificationTest.php": "8ea7985bfc5075c0e5d3a8b0b703af578479e481d769a0e8659d4b0996314aae15de36cc7022e087c0625c5976255aae323f9ac141e9e4fef3939a23fda6d260",
841
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerifyProfileTest.php": "c0986530c0ddd14e2227cbf9ceb0614aeec3c3b2dc37b5bce0de0d174ebd047f61fa28ba0787b4de1fd3efb5d77d5924e36ebf6fbba09711d0237f520365e8fc",
842
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/WebhookTest.php": "7e06c31d714348c6c9a6cf14c4a21a1f593287fe61e41630a6d766f15cf2595dccb1cd92981578cc205f6c89839a07c7c845efca2b44521d0aa36c0be9e444f7",
843
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1",
844
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4",
845
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df",
846
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2",
847
+        "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/update_certs.php": "6a7fd896832dbc4c039fc907c74f25fad01f26882809d1ed0bef2870ba7db5d5930311208e2864190209862a077e4397dabcc1760ef2ec7e29127868016fc0d8",
848
+        "providers\/Twilio\/readme.txt": "879f75eaefe03b56788a884a5cb031533b33a94acd816b9e3e51a9cf0db826de700062955fc45d9561bd4c69f71178e2976f702e801fc06c3c076494c55c8bcb",
849
+        "templates\/content\/index.php": "63d6e27dee39188b80cef2b095db84791e02af0526b80d41bd37845386714f9f82cc9dafaf97fa355b927ab9b74527199ec70604480e09feb10a2b076e313b5a",
850
+        "templates\/index.php": "15ea019ef66fa303773941fa9ca673e472e9521b3f9fdb9052870e6f0596ca3939b247c8924ec0d67e0f3fee6e612e2c447a1297cf23cb5b6144e58a6197d65e",
851
+        "templates\/navigation\/index.php": "2b7b13c516cd0199d5a01a5c85ce3d93f347495d50201238648ed8a516f0f6ac4680f73b7776e11968f231379db4bb5960d79cf2d053df354ae072fb7a08e54e",
852
+        "templates\/settings\/admin.php": "8cacf367ddf1010227a355af99aad3589418b1cfc861c395b3ebdb71a9b1adafd061e10ea3cd5383e044437c5bddead6728fbb02b27248492c930e901edde1af",
853
+        "templates\/settings\/personal.php": "28012052db35429ce5ca5ad2e6192e5bbebadb6069dfab2b7df7e4fde3f34411d40c8f3406d030c384b2629a76ea3a6e96d7571474b7040fda9f655d7f10b95d"
854
+    },
855
+    "signature": "Cweog4Tqz\/7y9y5fYH7h1y+QxOm+SjAw+FnD8buHw3iM1AavZU7EusgX11E5yMHxA5AdxyHV21upQQ39cfzZTcZCztbsvtzgVU0SYsJ3Thf5cRW5nXfzQsj27xXTDl8eNQAgTEh3LKhmEscZnxDXNqFfOo0e9icinB2qgKcHx1cUH1gEui3pZCzXJiW5GP9Du8HFAXvqUx0WhVI4hcd\/3vwwkWSC56oo07FS+8Y0GmvLbam0tTZ2A2kChoJ8vua7ya4FxfuECOz3c6mVNFZaT5\/DUC9QWtyuIEM8aJHx4DHMDyp7SM+cDTU9zl5l6cP26Xz+0bVyvxwTjFg4kZmHb+\/I0D7awIsBjurw0o75b8BKlsO2SGIBp+pXlBNk5xj\/gOWFnebmcuT6fxRBHwaBVcUH2N3tdW4dyUoAYuJlNuukU4LcNSU3xc3hHi+kuL8qyZEzRceYZrt4D\/X51XToTnOfD\/iKcDInd8iiXlIB\/plov4mgwpKiLptjmtVcjmhtY2nrKMNQ7+pOMQA5v5v7F4PDU\/fxAaffzOSNL\/phHAhBPiJs9Hv8zR3UGf3FiBS2gs2Ab16gB+g+yP8XEjK4dRz2pm46rxqAerSxc1rL2Cbpk7\/w3ojns1MDeU+7XXIWED6TqjxCVglr2isIoKj5w7NTEHjD094nTjgETtwE8Fo=",
856
+    "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIECTCCAvECAhG8MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\r\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\r\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\r\ndXRob3JpdHkwHhcNMjIwMjI1MTYwMjIyWhcNMzIwNjAyMTYwMjIyWjAZMRcwFQYD\r\nVQQDDA5zbXNfcmVsZW50bGVzczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\r\nggIBALbJJdLJIooOqb46AyOdNlWR9LXm3hWzjNBkH0o8wtMFEnotUOLcbaXbmTun\r\niG0Q0eunZGLSF6in+kY5M420Jh9bbDP6bYI8iDG6CSDkmKgnfcdJRlB6i7g0qBG8\r\noMzOB1x7ZVTef8Ho2ylTMWCxCfTlcQ15okAUpLU1G37I5rg0DZH2fPdGs9PMg11a\r\n64Tofl2GJSf9aHsgLi0AXXVzSN\/96wmK2fJYBqTVsPo5qIqKtMVWduhDXsb9yT4q\r\nDMYzyHrr8ydrMSGPwfs940R00hG2qHJcuKKGjYCCtu7djMfpKA9fqsGZBE6IWlVH\r\nCZxYIHPaEfHOybPR5d2GIKzncUQjtO2\/9rsju31GwzrVswG7w0tQUIIaj5AFLIL3\r\njnagjo2LH11ta9mB+DikaZDfd4VYEEfkTJA4BjnNCDa9pYOaFBGGwJMBSH3eWJCZ\r\nURBtk2NBnIheFRaGWRAzUpKAc+ZYdnmuAqe3Eh1en9GNlKTMCO+mAHkFJp3z8Nai\r\n1ijEVK+PIgtrzqc48ft0r6L43Zd184JnSIscBm\/9GUb0sCf+Uv4WFBKm4c7nrWtM\r\nC1LMKqmj2OYD1fZJ65M1VrkAqh8VXNtqQI1caBGMkcs4\/\/1eo\/XomL6sEkvfa9Y2\r\n1OywnVt52ZeLHyUS2P1mvPyWZgL8AxIie82Mtp7ZWX9Q8ubbAgMBAAEwDQYJKoZI\r\nhvcNAQELBQADggEBAI6OdKpKpevWVprPZ1TzUpq5ATj2JyCZySYC71Ud8l3lAEmn\r\nuh9ok5P7ccY\/c\/9\/ePWuvGxNSHmk1+nEEWC8XNXY5OoU9+i+g7vXd6EKOsowallw\r\nvWZB2rjl6+eNC\/AVa0NE2d9C6AWZtLxiV6rVsmkNUbBS6orHq8JJ2PSJKPT0\/nfM\r\nWL+ZORuFguWazEsy9oZBlplaWNxyAgq\/L66SKXynQPe74kZeVdZ5aQluHnBKZAoh\r\n6v0c2YiaoG5Mg6tDWcx4zM8HXv39Nbg2hcAtP2j3F9EkHZaytW9nM7nTIOxZJtR\/\r\nuGJtkj5+e1NQaMYn2NDiYSZALGUQ3YkHv4OIzDY=\r\n-----END CERTIFICATE-----"
857
+}
0 858
\ No newline at end of file
1 859
new file mode 100644
... ...
@@ -0,0 +1,2834 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+div > label {
24
+   position: relative;
25
+}
26
+
27
+label span {
28
+   display: inline-block;
29
+   min-width: 110px;
30
+   padding: 0px 0px 8px 0px;
31
+}
32
+
33
+select {
34
+  min-height: 25px;
35
+  box-sizing: border-box;
36
+  text-overflow: inherit;
37
+}
38
+
39
+.providerSettings {
40
+   background-color: #F7F7F7;
41
+   padding: 14px;
42
+}
43
+
44
+.providerName {
45
+   font-size: 18px;
46
+   font-weight: bold;
47
+   margin-bottom: 20px;
48
+}
49
+
50
+#smsrelentless_vbar {
51
+   padding: 18px;
52
+   font-family: Calibri, Frutiger, "Myriad Pro", Myriad, sans-serif;
53
+   color: #6d6c6c;
54
+}
55
+
56
+.smsr_textbox {
57
+   display: block;
58
+   box-sizing: content-box;
59
+   width: 70%;
60
+   font-size: 14px !important;
61
+}
62
+
63
+.smsr_textboxspec {
64
+   box-sizing: content-box;
65
+   width: 70%;
66
+   font-size: 14px !important;
67
+}
68
+
69
+#copyToClipboardtel, #copyToClipboardnex, #copyToClipboardtwil, #copyToClipboardflow {
70
+   display: inline-block;
71
+   width: 18px;
72
+   height: 18px;
73
+   margin: 0px 0px -4px 5px;
74
+   cursor: pointer;
75
+}
76
+
77
+#copyToClipboardtel:hover, #copyToClipboardnex:hover, #copyToClipboardtwil:hover, #copyToClipboardflow:hover {
78
+   background-color: #E0E0E0;
79
+}
80
+
81
+#telapi_url, #nexapi_url, #twilapi_url, #twilapi_url_rec, #flowapi_url, #flowapi_url_rec {
82
+   display: inline-block;
83
+   box-sizing: content-box;
84
+   width: 70%;
85
+   font-size: 14px !important;
86
+}
87
+
88
+#generate_tel_rcpt, #generate_tel_delrcpt, #generate_nex_rcpt, #generate_nex_delrcpt, #generate_twil_rcpt, #generate_twil_delrcpt, #generate_flow_rcpt, #generate_flow_delrcpt {
89
+   display: block;
90
+   white-space: normal;
91
+   word-wrap: break-word;
92
+}
93
+
94
+.generateUrl {
95
+   color: #161616;
96
+   background-color: #e3ecf0 !important;
97
+}
98
+
99
+.generateUrl:hover {
100
+   background-color: #c2dcea !important;
101
+}
102
+
103
+.generateUrl:active {
104
+   background-color: #b5cfdd !important;
105
+}
106
+
107
+#settings-dscr {
108
+   padding-top: 3px;
109
+}
110
+
111
+.setlabeltext {
112
+  font-size: 15px;
113
+}
114
+
115
+#smsr_save_msg {
116
+   display: inline;
117
+   color: #181918;
118
+   background-color: #a5e5b3;
119
+   font-weight: bold;
120
+}
121
+
122
+#get_notify {
123
+   display: block;
124
+   margin-bottom: 18px;
125
+}
126
+
127
+#get_notify:hover {
128
+   cursor: pointer;
129
+}
130
+
131
+#includesmsinemail, #showallmessages, #showdisplaynames {
132
+   display: block;
133
+   margin-bottom: 14px;
134
+}
135
+
136
+#includesmsinemail:hover {
137
+   cursor: pointer;
138
+}
139
+
140
+#currentbaldiv, #smsnumbersdiv {
141
+   display: block;
142
+   position: relative;
143
+   font-size: 17px;
144
+   font-weight: bold;
145
+   height: 30px;
146
+   margin: 0px 0px 14px 0px;
147
+   background-color: #4CA3D9;
148
+   border-radius: 20px;
149
+}
150
+
151
+.providername {
152
+  color: #FFFFFF;
153
+}
154
+
155
+.providername:hover {
156
+  color: #2c0cfc;
157
+}
158
+
159
+#currentbalance {
160
+  display: inline-block;
161
+  position: relative;
162
+  margin: 5px 0px 0px 114px;
163
+  color: #262626;
164
+  font-weight: 600;
165
+}
166
+
167
+#smsprovider {
168
+  display: inline;
169
+  position: absolute;
170
+  width: 102px;
171
+  height: 22px;
172
+  padding: 0px 0px 1px 0px !important;
173
+  -moz-box-sizing: border-box;
174
+  -webkit-box-sizing: border-box;
175
+  box-sizing: border-box;
176
+  background: #fcfcfc;
177
+  font-size: 15px;
178
+  font-weight: 500;
179
+  color: #565656;
180
+  text-align: center;
181
+  border-radius: 20px;
182
+}
183
+
184
+#currentsmsnmbrs {
185
+  display: inline-block;
186
+  position: absolute;
187
+  height: 22px;
188
+  width: 54%;
189
+  padding: 0.4px 0px 0px 0px !important;
190
+  margin: 2px 0px 0px 4px;
191
+  text-align: center;
192
+  text-overflow: inherit;
193
+  font-size: 14px;
194
+  font-weight: 500;
195
+  color: #565656;
196
+  -moz-box-sizing: border-box;
197
+  -webkit-box-sizing: border-box;
198
+  box-sizing: border-box;
199
+  background: #fcfcfc;
200
+  border-radius: 20px;
201
+}
202
+
203
+.cllridcls {
204
+  position: relative;
205
+  display: inline;
206
+  font-size: 17px;
207
+  color: #000000;
208
+}
209
+
210
+.tooltipbalanceid  {
211
+  position: relative;
212
+  display: inline-block;
213
+  float: right;
214
+  font-size: 15px;
215
+  color: #000000;
216
+  z-index: 9;
217
+}
218
+
219
+.tooltipsetid  {
220
+  position: relative;
221
+  display: inline-block;
222
+  float: right;
223
+  font-size: 15px;
224
+  color: #000000;
225
+  z-index: 8;
226
+}
227
+
228
+.tooltipbalanceid #infobalance {
229
+  display: block;
230
+  position: relative;
231
+  margin: 4px 14px 0px 0px;
232
+  color: #000000;
233
+  font-size: 21px;
234
+  font-weight: bold;
235
+  font-family: 'Liberation Serif', sans-serif;
236
+  font-style: italic;
237
+  z-index: 6;
238
+}
239
+
240
+.tooltipbalanceid .balancetooltip {
241
+  display: block;
242
+  position: absolute;
243
+  visibility: hidden;
244
+  width: 264px;
245
+  background-color: #fafafa;
246
+  font-size: 15px;
247
+  font-weight: bold;
248
+  color: #595959;
249
+  text-align: left;
250
+  border-radius: 5px;
251
+  padding: 5px 5px 5px 8px;
252
+  margin: -4px 0px 0px -244px;
253
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
254
+  -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
255
+  -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
256
+  z-index: 6;
257
+}
258
+
259
+.tooltipbalanceid:hover .balancetooltip {
260
+   visibility: visible;
261
+}
262
+
263
+#infotipid {
264
+   display: block;
265
+   position: relative;
266
+   margin: 4px 14px 0px 0px;
267
+   color: #000000;
268
+   font-size: 21px;
269
+   font-weight: bold;
270
+   font-family: 'Liberation Serif', sans-serif;
271
+   font-style: italic;
272
+   z-index: 5;
273
+}
274
+
275
+#setcalleridtp {
276
+   display: block;
277
+   position: absolute;
278
+   width: 274px;
279
+   overflow-y: scroll;
280
+   visibility: hidden;
281
+   background-color: #fafafa;
282
+   border-radius: 5px;
283
+   margin: -6px 0px 0px -250px;
284
+   scrollbar-width: auto;
285
+   scrollbar-color: #a2a2a2 #ececec;
286
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
287
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
288
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
289
+   z-index: 10;
290
+}
291
+
292
+.calleridtooltip {
293
+   display: block;
294
+   position: relative;
295
+   width: auto;
296
+   height: auto;
297
+   background-color: #f4f4f4;
298
+   font-size: 15px;
299
+   font-weight: bold;
300
+   color: #595959;
301
+   text-align: left;
302
+   padding: 5px 12px 5px 10px;
303
+   z-index: 10;
304
+}
305
+
306
+.tooltipsetid:hover #setcalleridtp {
307
+   visibility: visible;
308
+}
309
+
310
+.pflabels {
311
+   font-size: 15px;
312
+   font-weight: bold;
313
+}
314
+
315
+.srheader {
316
+   display: block;
317
+   position: relative;
318
+   margin: 0px 0px 7px 0px;
319
+   font-size: 17px;
320
+   font-weight: bold;
321
+}
322
+
323
+.sendtomultrcvrs {
324
+   display: block;
325
+   position: relative;
326
+   margin: 0px 0px 7px 0px;
327
+   font-size: 17px;
328
+}
329
+
330
+.smsnbformat {
331
+   display: block;
332
+   position: relative;
333
+   margin: 0px;
334
+   font-size: 17px;
335
+   font-weight: bold;
336
+}
337
+
338
+.smsrelentless_box {
339
+   width: 400px;
340
+   display: block;
341
+}
342
+.indtext {
343
+   display: inline-block;
344
+   padding-left: 10px;
345
+}
346
+
347
+#settings-dscr {
348
+   padding-top: 3px;
349
+}
350
+
351
+#sms_upload_msg {
352
+   display: block;
353
+   color: #181918;
354
+   background-color: #a5e5b3;
355
+   font-weight: bold;
356
+}
357
+
358
+#sms_submit_msg {
359
+   display: none;
360
+   margin: 14px 0px 8px 0px;
361
+   padding: 3px 20px 0px 20px;
362
+   width: 100%;
363
+   color: #181918;
364
+   background-color: #a5e5b3;
365
+   font-size: 15px;
366
+   font-weight: bold;
367
+   text-align: center;
368
+   border-radius: 14px;
369
+}
370
+
371
+#pickedfilename {
372
+   font-size: 13px;
373
+}
374
+
375
+#smstodiv {
376
+   display: block;
377
+   position: relative;
378
+   height: 32px;
379
+}
380
+
381
+#smsto {
382
+   display: block;
383
+   width: 99%;
384
+   max-height: 32px;
385
+   padding: 0px 15px 0px 15px;
386
+   color: #565656;
387
+   font-size: 16px;
388
+   font-weight: bold;
389
+   border-radius: 20px;
390
+}
391
+
392
+#sendtomultiple {
393
+   display: inline-block;
394
+   position: relative;
395
+   margin: 10px 0px 12px 0px;
396
+   font-size: 16px;
397
+   font-weight: bold;
398
+}
399
+
400
+#entermessage {
401
+   display: block;
402
+   position: relative;
403
+   margin: 4px 0px 0px 0px;
404
+   font-size: 16px;
405
+   font-weight: bold;
406
+}
407
+
408
+#uploadfileforsms {
409
+   margin-left: 7px;
410
+   background-color: #ffffff;
411
+   border-radius: 3px !important;
412
+}
413
+
414
+.entertime {
415
+   display: inline;
416
+   font-size: 16px;
417
+   font-weight: bold;
418
+   margin-right: 7px;
419
+}
420
+
421
+#sendmediafl {
422
+   display: block;
423
+   position: relative;
424
+   margin: 0px 0px 20px 0px;
425
+   font-size: 16px;
426
+   font-weight: bold;
427
+}
428
+
429
+#tomultchckbx {
430
+   display: inline-block;
431
+   position: absolute;
432
+   margin: 3px 0px 0px 10px;
433
+}
434
+
435
+#mediafilechckbx {
436
+   display: inline-block;
437
+   position: absolute;
438
+   margin: -7px 0px 0px 10px;
439
+}
440
+
441
+#deleteoldchckbox {
442
+   display: inline-block;
443
+   position: absolute;
444
+   margin: 3.5px 0px 0px 10px;
445
+}
446
+
447
+#tomultchckbx:hover, #mediafilechckbx:hover, #deleteoldchckbox:hover {
448
+   cursor: pointer;
449
+}
450
+
451
+.maxmessagelength {
452
+   display: none;
453
+   position: relative;
454
+   margin: 2px 7px 4px 0px;
455
+   font-size: 15px;
456
+   color: #000000;
457
+   z-index: 6;
458
+}
459
+
460
+#maxlengthinfo {
461
+   display: block;
462
+   position: absolute;
463
+   width: 274px;
464
+   height: 200px;
465
+   overflow-y: scroll;
466
+   visibility: hidden;
467
+   background-color: #fafafa;
468
+   border-radius: 5px;
469
+   margin: -11px 0px 0px -6px;
470
+   scrollbar-width: auto;
471
+   scrollbar-color: #a2a2a2 #ececec;
472
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
473
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
474
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
475
+   z-index: 10;
476
+}
477
+
478
+.maxlengthtooltip {
479
+   display: block;
480
+   position: relative;
481
+   width: auto;
482
+   height: auto;
483
+   background-color: #f4f4f4;
484
+   font-size: 15px;
485
+   font-weight: bold;
486
+   color: #595959;
487
+   text-align: left;
488
+   padding: 5px 12px 5px 10px;
489
+   z-index: 10;
490
+}
491
+
492
+.maxmessagelength:hover #maxlengthinfo {
493
+   visibility: visible;
494
+}
495
+
496
+.up-bttn-wrapper {
497
+  display: block;
498
+  position: relative;
499
+  overflow: hidden;
500
+  padding-top: 20px;
501
+  padding-bottom: 30px;
502
+}
503
+
504
+#smstext {
505
+  display: inline-block;
506
+  color: #000000;
507
+  width: 100%;
508
+  height: 130px;
509
+  text-align: left;
510
+  font-size: 16px;
511
+  border-radius: 6px;
512
+  resize: vertical;
513
+  white-space: pre-wrap;
514
+}
515
+
516
+#char_count {
517
+  display: none;
518
+  font-size: 15px;
519
+  font-weight: bold;
520
+}
521
+
522
+#mtextSize {
523
+  display: none;
524
+  margin-left: 10px;
525
+  font-size: 15px;
526
+  font-weight: bold;
527
+  color: #4CA3D9;
528
+}
529
+
530
+#submitsms {
531
+   display: block;
532
+   position: relative;
533
+   margin-top: 14px;
534
+   color: white;
535
+   font-weight: bold;
536
+   font-size: 15px;
537
+   background-color: #4CA3D9;
538
+   border-radius: 20px;
539
+}
540
+
541
+#submitsms:hover {
542
+   border-color: #5CAECC;
543
+}
544
+
545
+#submitsms:active {
546
+   background: #4B96B1;
547
+   border-color: #4B96B1;
548
+}
549
+
550
+#multiplerecivers {
551
+   display: none;
552
+   background: #e8f6ff;
553
+   border-radius: 6px;
554
+   padding: 5px;
555
+   margin: 0px 0px 20px 0px;
556
+}
557
+
558
+#multsetrows {
559
+  display: block;
560
+  padding: 5px;
561
+}
562
+
563
+#multsmsinterval {
564
+  display: block;
565
+  width: 100px;
566
+  height: 25px;
567
+  font-size: 14px;
568
+  font-weight: bold;
569
+  padding: 0px 0px 0px 10px;
570
+  border-radius: 20px;
571
+}
572
+
573
+#app {
574
+  position: relative;
575
+  display: flex;
576
+  min-height: 100%;
577
+  min-width: 100%;
578
+}
579
+
580
+#app-content {
581
+   position: relative;
582
+   z-index: 1000;
583
+   flex-basis: 100vw;
584
+   min-width: 0;
585
+   min-height: 100%;
586
+   margin: 0 !important;
587
+   overflow-y: scroll;
588
+}
589
+
590
+#viewerContainer {
591
+   display: block;
592
+   position: relative;
593
+   width: 100%;
594
+   height: 100%;
595
+}
596
+
597
+.pdfViewer #viewer {
598
+   display: block;
599
+   position: relative;
600
+   min-width: 100%;
601
+   min-height: 100%;
602
+}
603
+
604
+#smsdocpreview {
605
+   display: inline-block;
606
+   position: relative;
607
+   width: 100%;
608
+   height: 100%;
609
+   margin-top: -50px;
610
+}
611
+
612
+#outerContainer {
613
+   display: block;
614
+   position: relative;
615
+   width: 100%;
616
+   height: 100%;
617
+}
618
+
619
+#mainContainer {
620
+   display: block;
621
+   position: relative;
622
+   width: 100%;
623
+   height: 100%;
624
+}
625
+
626
+.texttooltip {
627
+  font-family: 'Liberation Serif', Calibri, sans-serif;
628
+  font-style: italic;
629
+  color: #000000;
630
+  font-size: 21px;
631
+  font-weight: bold;
632
+  margin: 0px 0px 4px 4px;
633
+}
634
+
635
+.fortooltip {
636
+   position: relative;
637
+   display: inline-block;
638
+   margin: 0px;
639
+   font-size: 15px;
640
+   color: #000000;
641
+   z-index: 7;
642
+}
643
+
644
+.fortooltipsec {
645
+   position: relative;
646
+   display: inline-block;
647
+   font-size: 15px;
648
+   color: #000000;
649
+   padding: 2px 0px 4px 2px;
650
+   z-index: 3;
651
+}
652
+
653
+.fortooltiptert {
654
+   position: relative;
655
+   display: inline-block;
656
+   font-size: 15px;
657
+   color: #000000;
658
+   padding: 2px 0px 4px 2px;
659
+   z-index: 0;
660
+}
661
+
662
+.fortooltipfourth {
663
+   position: relative;
664
+   display: inline-block;
665
+   font-size: 15px;
666
+   color: #000000;
667
+   padding: 2px 0px 4px 2px;
668
+   z-index: 4;
669
+}
670
+
671
+#tonmbrformat {
672
+   display: block;
673
+   position: absolute;
674
+   width: 274px;
675
+   overflow-y: scroll;
676
+   visibility: hidden;
677
+   background-color: #fafafa;
678
+   border-radius: 5px;
679
+   margin: -11px 0px 0px -6px;
680
+   scrollbar-width: auto;
681
+   scrollbar-color: #a2a2a2 #ececec;
682
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
683
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
684
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
685
+   z-index: 10;
686
+}
687
+
688
+.fortooltiptext {
689
+   display: block;
690
+   position: relative;
691
+   width: auto;
692
+   height: auto;
693
+   background-color: #f4f4f4;
694
+   font-size: 15px;
695
+   font-weight: bold;
696
+   color: #595959;
697
+   text-align: left;
698
+   padding: 5px 12px 5px 10px;
699
+   z-index: 10;
700
+}
701
+
702
+.fortooltip:hover #tonmbrformat {
703
+   visibility: visible;
704
+}
705
+
706
+#uploadfileinfo {
707
+   display: block;
708
+   position: absolute;
709
+   width: 274px;
710
+   overflow-y: scroll;
711
+   visibility: hidden;
712
+   background-color: #fafafa;
713
+   border-radius: 5px;
714
+   margin: -11px 0px 0px -6px;
715
+   scrollbar-width: auto;
716
+   scrollbar-color: #a2a2a2 #ececec;
717
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
718
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
719
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
720
+   z-index: 10;
721
+}
722
+
723
+.fortooltiptextsec {
724
+   display: block;
725
+   position: relative;
726
+   width: auto;
727
+   height: auto;
728
+   background-color: #f4f4f4;
729
+   font-size: 15px;
730
+   font-weight: bold;
731
+   color: #595959;
732
+   text-align: left;
733
+   padding: 5px 12px 5px 10px;
734
+   z-index: 10;
735
+}
736
+
737
+.fortooltipsec:hover #uploadfileinfo {
738
+   visibility: visible;
739
+}
740
+
741
+#deleteoldinfo {
742
+   display: block;
743
+   position: absolute;
744
+   width: 274px;
745
+   height: 200px;
746
+   overflow-y: scroll;
747
+   visibility: hidden;
748
+   background-color: #fafafa;
749
+   border-radius: 5px;
750
+   margin: -11px 0px 0px -6px;
751
+   scrollbar-width: auto;
752
+   scrollbar-color: #a2a2a2 #ececec;
753
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
754
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
755
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
756
+   z-index: 10;
757
+}
758
+
759
+.fortooltiptexttert {
760
+   display: block;
761
+   position: relative;
762
+   width: auto;
763
+   height: auto;
764
+   background-color: #f4f4f4;
765
+   font-size: 15px;
766
+   font-weight: bold;
767
+   color: #595959;
768
+   text-align: left;
769
+   padding: 5px 12px 5px 10px;
770
+   z-index: 10;
771
+}
772
+
773
+.fortooltiptert:hover #deleteoldinfo {
774
+   visibility: visible;
775
+}
776
+
777
+#uploadmmfileinfo {
778
+   display: block;
779
+   position: absolute;
780
+   width: 274px;
781
+   height: 350px;
782
+   overflow-y: scroll;
783
+   visibility: hidden;
784
+   background-color: #fafafa;
785
+   border-radius: 5px;
786
+   margin: -11px 0px 0px -16px;
787
+   scrollbar-width: auto;
788
+   scrollbar-color: #a2a2a2 #ececec;
789
+   box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
790
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
791
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
792
+   z-index: 10;
793
+}
794
+
795
+#tooltiptextfourth {
796
+   display: block;
797
+   position: relative;
798
+   width: auto;
799
+   height: auto;
800
+   background-color: #f4f4f4;
801
+   font-size: 15px;
802
+   font-weight: bold;
803
+   color: #595959;
804
+   text-align: left;
805
+   padding: 5px 12px 5px 10px;
806
+   z-index: 10;
807
+}
808
+
809
+.fortooltipfourth:hover #uploadmmfileinfo {
810
+   visibility: visible;
811
+}
812
+
813
+.fileupload {
814
+   display: none;
815
+}
816
+
817
+.uploadflbt {
818
+   width: 411px;
819
+}
820
+
821
+#infotipmms {
822
+   display: block;
823
+   position: relative;
824
+   margin: 0px;
825
+   color: #000000;
826
+   font-size: 21px;
827
+   font-weight: bold;
828
+   font-family: 'Liberation Serif', sans-serif;
829
+   font-style: italic;
830
+   z-index: 5;
831
+}
832
+
833
+#mmsfoldersview {
834
+   display: none;
835
+   position: relative;
836
+   width: 100%;
837
+   height: 100%;
838
+   margin-top: -50px;
839
+   background-color: #f4f9ff;
840
+}
841
+
842
+#upmediafiles {
843
+   display: none;
844
+   background: #e8f6ff;
845
+   border-radius: 6px;
846
+   padding: 10px;
847
+   margin: 0px 0px 20px 0px;
848
+}
849
+
850
+.uploadflbt .icon-upload {
851
+   display: inline;
852
+}
853
+
854
+.pfprompt {
855
+   font-size: 16px;
856
+   font-weight: bold;
857
+}
858
+
859
+.fileuploadstl, .filesfromnc {
860
+  display: block;
861
+  font-size: 17px;
862
+  font-weight: bold;
863
+  color: #000000;
864
+}
865
+
866
+#uploadfileformms {
867
+   margin-left: 21px;
868
+   background-color: #ffffff;
869
+   border-radius: 3px !important;
870
+}
871
+
872
+#filestotsize {
873
+  display: none;
874
+  position: relative;
875
+  height: auto;
876
+  padding: 0px 0px 8px 0px;
877
+  font-size: 14.5px;
878
+  font-weight: bold;
879
+  color: #189558;
880
+}
881
+
882
+#filessizetext {
883
+  display: inline;
884
+  position: relative;
885
+  padding-left: 10px;
886
+}
887
+
888
+#fileuploadednm .indivflcls {
889
+  display: inline-block;
890
+  position: relative;
891
+  height:auto;
892
+  max-width: 90%;
893
+  overflow: visible;
894
+  white-space: normal;
895
+  word-break: break-all;
896
+  text-overflow: ellipsis;
897
+  font-size: 17px;
898
+  color: #0e6ba0;
899
+}
900
+
901
+#fileuploadednm .indivflcls:hover {
902
+  cursor: pointer;
903
+  text-decoration: underline;
904
+}
905
+
906
+#fileuploadednm .indupfldl {
907
+  position: relative;
908
+  display: inline-block;
909
+  float: right;
910
+  cursor: pointer;
911
+  width: 20px;
912
+  color: #0e6ba0;
913
+  text-align: center;
914
+  font-size: 17px;
915
+}
916
+
917
+#fileuploadednm .indupfldl:hover {
918
+  background-color: #e8f6ff;
919
+  cursor: pointer;
920
+}
921
+
922
+#filespickednc .indivflpckd {
923
+  display: inline-block;
924
+  position: relative;
925
+  height:auto;
926
+  max-width: 90%;
927
+  overflow: visible;
928
+  white-space: normal;
929
+  word-break: break-all;
930
+  text-overflow: ellipsis;
931
+  color: #0e6ba0;
932
+}
933
+
934
+.indivflpckd:hover {
935
+  cursor: pointer;
936
+  text-decoration: underline;
937
+}
938
+
939
+.indpckfldl {
940
+  position: relative;
941
+  display: inline-block;
942
+  float: right;
943
+  cursor: pointer;
944
+  width: 20px;
945
+  color: #0e6ba0;
946
+  text-align: center;
947
+}
948
+
949
+#filespickednc .indpckfldl:hover {
950
+  background-color: #e8f6ff;
951
+  cursor: pointer;
952
+}
953
+
954
+#pf_upload_msg, #pf_choose_msg {
955
+  display: block;
956
+  color: #181918;
957
+  background-color: #a5e5b3;
958
+  font-weight: bold;
959
+  text-align: center;
960
+  border-radius: 3px;
961
+}
962
+
963
+#choosefilen {
964
+  display: inline;
965
+  position: relative;
966
+  margin: 0px 0px 20px 16px;
967
+  padding-top: 15px;
968
+  background-image: url('../img/nextcloud_logo.svg');
969
+  background-repeat: no-repeat;
970
+  background-size: 110% 125%;
971
+  background-position: center center;
972
+  min-width: 66px;
973
+  min-height: 30px;
974
+  cursor:pointer;
975
+}
976
+
977
+#choosefilen:active {
978
+  background-image: url('../img/nextcloud_logo_bright.svg');
979
+  background-repeat: no-repeat;
980
+  background-size: 110% 125%;
981
+  background-position: center center;
982
+  min-width: 66px;
983
+  min-height: 30px;
984
+}
985
+
986
+#pickFromNext, #uploadFile {
987
+  display: inline-block;
988
+  position: relative;
989
+  font-size: 16px;
990
+  font-weight: bold;
991
+  color: #6d6c6c;
992
+}
993
+
994
+#filespickednc .indivflpckd {
995
+  display: inline-block;
996
+  position: relative;
997
+  height:auto;
998
+  max-width: 90%;
999
+  overflow: visible;
1000
+  white-space: normal;
1001
+  word-break: break-all;
1002
+  text-overflow: ellipsis;
1003
+  color: #0e6ba0;
1004
+}
1005
+
1006
+#filespickednc .indpckfldl:hover {
1007
+  background-color: #e8f6ff;
1008
+  cursor: pointer;
1009
+}
1010
+
1011
+.uploadflbt {
1012
+  width: 411px;
1013
+}
1014
+
1015
+.uploadflbt .icon-upload {
1016
+  display: inline;
1017
+}
1018
+
1019
+.uploadfiledv {
1020
+  display: inline-block;
1021
+  position: relative;
1022
+  margin: 16px 0px 22px 0px;
1023
+}
1024
+
1025
+#mmsfileuploadednm .indivflcls {
1026
+  display: inline-block;
1027
+  position: relative;
1028
+  height:auto;
1029
+  max-width: 90%;
1030
+  overflow: visible;
1031
+  white-space: normal;
1032
+  word-break: break-all;
1033
+  text-overflow: ellipsis;
1034
+  font-size: 17px;
1035
+  color: #0e6ba0;
1036
+}
1037
+
1038
+#mmsfileuploadednm .indivflcls:hover {
1039
+  cursor: pointer;
1040
+  text-decoration: underline;
1041
+}
1042
+
1043
+#mmsfileuploadednm .indupfldl {
1044
+  position: relative;
1045
+  display: inline-block;
1046
+  float: right;
1047
+  cursor: pointer;
1048
+  width: 20px;
1049
+  color: #0e6ba0;
1050
+  text-align: center;
1051
+  font-size: 17px;
1052
+}
1053
+
1054
+#mmsfileuploadednm .indupfldl:hover {
1055
+  background-color: #e8f6ff;
1056
+  cursor: pointer;
1057
+}
1058
+
1059
+#filessizetext {
1060
+  display: inline;
1061
+  position: relative;
1062
+  padding-left: 10px;
1063
+}
1064
+
1065
+.srheaderch {
1066
+  display: block;
1067
+  position: relative;
1068
+  margin: 0px 0px 15px 0px;
1069
+  font-size: 16px;
1070
+  font-weight: bold;
1071
+}
1072
+
1073
+.indgenflclsmms, .indgenpckfls {
1074
+  display: block;
1075
+  margin: 10px 6px 0px 6px;
1076
+}
1077
+
1078
+#pickfilesNext {
1079
+  display: block;
1080
+  margin: 20px 0px 0px 0px;
1081
+}
1082
+
1083
+#dirbuttons {
1084
+  margin-top: 20px;
1085
+}
1086
+
1087
+button, input, textarea, div[contenteditable="true"], div[contenteditable="false"] {
1088
+  min-height: 9px;
1089
+}
1090
+
1091
+#choosefilen {
1092
+  display: inline;
1093
+  position: relative;
1094
+  margin: 4px 0px 20px 16px;
1095
+  background-image: url('../img/nextcloud_logo.svg');
1096
+  background-repeat: no-repeat;
1097
+  background-size: 110% 125%;
1098
+  background-position: center center;
1099
+  min-width: 66px;
1100
+  min-height: 30px;
1101
+  cursor:pointer;
1102
+}
1103
+
1104
+#choosefilen:active {
1105
+  background-image: url('../img/nextcloud_logo_bright.svg');
1106
+  background-repeat: no-repeat;
1107
+  background-size: 110% 125%;
1108
+  background-position: center center;
1109
+  min-width: 66px;
1110
+  min-height: 30px;
1111
+}
1112
+
1113
+#selectcalleridbttn {
1114
+  position: relative;
1115
+  padding-left: 0px;
1116
+  margin-top: 2.6px;
1117
+  margin-right: 4px;
1118
+  float: right;
1119
+  background-image: url('../img/refresh_logo.svg');
1120
+  background-repeat: no-repeat;
1121
+  background-size: 110% 110%;
1122
+  background-position: center center;
1123
+  min-width: 24px;
1124
+  min-height: 24px;
1125
+  cursor: pointer;
1126
+  background-color: #ffffff;
1127
+  border-radius: 20px;
1128
+}
1129
+
1130
+#pickid, #showsum {
1131
+  display: inline-block;
1132
+  position: relative;
1133
+  font-size: 17px;
1134
+  font-weight: bold;
1135
+  margin: 4px 0px 8px 14px;
1136
+  color: #FFFFFF;
1137
+}
1138
+
1139
+.smsrelentless_checkbox:hover {
1140
+  cursor: pointer;
1141
+}
1142
+
1143
+#smstables {
1144
+  display: block; 
1145
+  position: relative;
1146
+  min-width: 100%;
1147
+  min-height: 100%;
1148
+}
1149
+
1150
+#smsRGreyLogo {
1151
+  display: block;
1152
+  position: relative;
1153
+  background-image: url('../img/sms_relentless_grey.svg');
1154
+  background-repeat: no-repeat;
1155
+  background-position: center center;
1156
+  width: 100%;
1157
+  height: 675px;
1158
+}
1159
+
1160
+#recSmsTable, #sentSmsTable {
1161
+  display: block;
1162
+  position: relative;
1163
+  top: 0px;
1164
+  width: 100%;
1165
+  height: auto;
1166
+  font-size: 14px;
1167
+  z-index: 50;
1168
+  background: #FFFFFF;
1169
+}
1170
+
1171
+.receivedrows, .receivedrowsbody, .sentrows, .sentrowsbody, .groupedmsgrows {
1172
+  border: 1px solid #f3f3f3;
1173
+  padding: 8px;
1174
+}
1175
+
1176
+#groupedSmsTable {
1177
+  display: block;
1178
+  position: relative;
1179
+  top: 0px;
1180
+  width: 100%;
1181
+  height: auto;
1182
+  font-size: 14px;
1183
+  z-index: 50;
1184
+  background: #FFFFFF;
1185
+}
1186
+
1187
+#groupedSmsTable td {
1188
+  text-align: left;
1189
+  vertical-align: top;
1190
+  border: 1px solid #f3f3f3;
1191
+  padding: 5px;
1192
+}
1193
+
1194
+.groupedrowsbody {
1195
+  border: 1px solid #f3f3f3;
1196
+  padding: 8px;
1197
+}
1198
+
1199
+.groupedLstNmbr {
1200
+  overflow: scroll;
1201
+  white-space: nowrap;
1202
+}
1203
+
1204
+.groupedLstNames {
1205
+  overflow: scroll;
1206
+  white-space: nowrap;
1207
+}
1208
+
1209
+.groupedLstMsgs {
1210
+  overflow: scroll;
1211
+  white-space: nowrap;
1212
+}
1213
+
1214
+.groupedSentMsg {
1215
+  display: block;
1216
+  width: 95%;
1217
+  float: right;
1218
+  margin: 6px 6px 6px 0px;
1219
+  padding: 8px 10px;
1220
+  border: 0;
1221
+  border-radius: 10px;
1222
+  background-color: #f2fbff;
1223
+}
1224
+
1225
+.groupedRecMsg {
1226
+  display: block; 
1227
+  width: 95%;
1228
+  float: left;
1229
+  margin: 6px 0px;
1230
+  padding: 8px 10px;
1231
+  border: 0;
1232
+  border-radius: 10px;
1233
+  background-color: #f2fff8;
1234
+}
1235
+
1236
+.fixedRowHeight {
1237
+  max-height: 300px;
1238
+}
1239
+
1240
+.expandGrpRow {
1241
+  display: block;
1242
+  margin:-3px auto 7px auto;
1243
+  cursor: pointer;
1244
+}
1245
+
1246
+.dispNameList {
1247
+  display: block;
1248
+  margin: 2px 0px;
1249
+  font-size: 14.5px;
1250
+  font-weight: 500;
1251
+  color: #0a559e;
1252
+  cursor: pointer;
1253
+}
1254
+
1255
+.dispNameList:hover {
1256
+  color: #1483f0;
1257
+}
1258
+
1259
+.phoneNmbrRow {
1260
+  font-size: 14.5px;
1261
+  font-weight: 500;
1262
+  color: #06866f;
1263
+  cursor: pointer;
1264
+}
1265
+
1266
+.phoneNmbrRow:hover {
1267
+  color: #08b899;
1268
+}
1269
+
1270
+#selectListedNmbrs {
1271
+  display: block;
1272
+  width: 100%;
1273
+}
1274
+
1275
+.sentMssgStatus {
1276
+  display: inline-block;
1277
+  margin: 0px 6px 0px 6.5px;
1278
+}
1279
+
1280
+.saveRestrictions, .saveAutoReply {
1281
+  display: inline-block;
1282
+  border-radius: 8px !important;
1283
+  padding: 0px 14px !important;
1284
+  margin: 0px 0px 0px 10px !important;
1285
+  color: #ffffff !important;
1286
+  background-color: #59d0b4 !important;
1287
+}
1288
+
1289
+.savealwdKeys {
1290
+  display: inline-block;
1291
+  border-radius: 8px !important;
1292
+  padding: 0px 14px !important;
1293
+  margin: 0 !important;
1294
+  color: #ffffff !important;
1295
+  background-color: #59d0b4 !important;
1296
+}
1297
+
1298
+.saveRestrictions:hover, .saveAutoReply:hover, .savealwdKeys:hover {
1299
+  background-color: #40c1a3 !important;
1300
+}
1301
+
1302
+.saveRestrictions:active, .saveAutoReply:active, .savealwdKeys:active {
1303
+  background-color: #3aad92 !important;
1304
+}
1305
+
1306
+#save_admin_settings {
1307
+  display: inline-block;
1308
+  border-radius: 8px !important;
1309
+  padding: 0px 14px !important;
1310
+  color: #ffffff !important;
1311
+  background-color: #1e89c2 !important;
1312
+}
1313
+
1314
+#save_admin_settings:hover {
1315
+  background-color: #0369a0  !important;
1316
+}
1317
+
1318
+#save_admin_settings:active {
1319
+  background-color: #025480  !important;
1320
+}
1321
+
1322
+#phoneNmbrRestr th {
1323
+  font-weight: 500;
1324
+}
1325
+
1326
+#tnxKeysAccessTbl th, #plvKeysAccessTbl th, #twlKeysAccessTbl th, #flrKeysAccessTbl th {
1327
+  font-weight: 500;
1328
+  color: #222222;
1329
+}
1330
+
1331
+.restrAuthor {
1332
+  width: 200px;
1333
+  height: 40px !important;
1334
+}
1335
+
1336
+.restrPhoneNmbr, .arplPhoneNmbr {
1337
+  width: 194px;
1338
+  height: 40px !important;
1339
+}
1340
+
1341
+.restrGroups, .restrUsers {
1342
+  width: 330px;
1343
+  height: 40px !important;
1344
+  border: 1px solid #000;
1345
+  border-radius: 6px;
1346
+  margin: 0px 1px 0px 0px;
1347
+  padding: 0px 4px;
1348
+  overflow: hidden;
1349
+}
1350
+
1351
+.restrGroups:hover, .restrUsers:hover {
1352
+  overflow: auto !important;
1353
+}
1354
+
1355
+.alwdKeysGroups, .alwdKeysUsers {
1356
+  width: 398px;
1357
+  min-height: 80px !important;
1358
+  background-color: #ffffff !important;
1359
+  border: 1px solid #000;
1360
+  border-radius: 6px;
1361
+  margin: 0px 1px 0px 0px;
1362
+  padding: 0px 4px;
1363
+  overflow-y: scroll;
1364
+  white-space: pre-wrap;
1365
+}
1366
+
1367
+.alwdKeysGroups:hover, .alwdKeysUsers:hover {
1368
+  overflow: auto !important;
1369
+}
1370
+
1371
+#addRestrRow, #addArplRow {
1372
+  display: block;
1373
+  margin: 10px 0px 0px 6px;
1374
+  width: 16px;
1375
+  height: 16px;
1376
+  cursor: pointer;
1377
+  border-radius: 2px;
1378
+}
1379
+
1380
+#autoReplyTbl td {
1381
+  text-align: left;
1382
+  vertical-align: top;
1383
+  padding: 0px 0px 10px 0px;
1384
+}
1385
+
1386
+#autoReplyTbl th {
1387
+  font-weight: 500;
1388
+}
1389
+
1390
+.arplAuthor {
1391
+  width: 200px;
1392
+  height: 38px !important;
1393
+}
1394
+
1395
+.arplMode {
1396
+  display: inline-block;
1397
+  width: 330px;
1398
+  height: 184px;
1399
+  border: 1px solid #000;
1400
+  border-radius: 6px;
1401
+  margin: 0px 4px 0px 0px;
1402
+  overflow: visible;
1403
+}
1404
+
1405
+.modeContent .date-picker-x {
1406
+   top: -170px !important;
1407
+   left: -170px !important;
1408
+}
1409
+
1410
+.arplText {
1411
+  display: inline-block;
1412
+  color: #000000;
1413
+  width: 330px;
1414
+  height: 184px;
1415
+  font-size: 15px;
1416
+  text-align: left;
1417
+  border: 1px solid #000;
1418
+  border-radius: 6px;
1419
+  margin: 0px 1px 0px 0px;
1420
+  resize: vertical;
1421
+  white-space: pre-wrap;
1422
+  overflow: auto;
1423
+}
1424
+
1425
+.selectArplMode {
1426
+  display: block;
1427
+  width: 322px;
1428
+  margin: 4px 0px 0px 4px;
1429
+  cursor: pointer;
1430
+  font-weight: 500;
1431
+}
1432
+
1433
+.daysOfWeek {
1434
+  display: block;
1435
+  width: 100%;
1436
+  height: 26px;
1437
+  margin: 3px auto;
1438
+  font-weight: 500;
1439
+  text-align: center;
1440
+}
1441
+
1442
+.daysInWeek {
1443
+  display: block;
1444
+  position: relative;
1445
+  width: 322px;
1446
+  height: auto;
1447
+  margin: 0px 0px 0px 4px !important;
1448
+  text-align: center;
1449
+  border: 1px solid #000;
1450
+  border-radius: 6px;
1451
+}
1452
+
1453
+.chooseTInterval {
1454
+  display: block;
1455
+  width: 100%;
1456
+  height: 26px;
1457
+  margin: 5px auto 0px auto;
1458
+  font-weight: 500;
1459
+  text-align: center;
1460
+}
1461
+
1462
+.selectArplHours {
1463
+  display: block;
1464
+  width: 100%;
1465
+  text-align: center;
1466
+}
1467
+
1468
+.tooltipautoreply {
1469
+  display: inline-block;
1470
+  position: absolute;
1471
+  font-size: 15px;
1472
+  z-index: 9;
1473
+}
1474
+
1475
+.tooltipautoreplyst, .tooltipautoreplypn {
1476
+  display: inline-block;
1477
+  position: absolute;
1478
+  font-size: 15px;
1479
+  z-index: 7;
1480
+}
1481
+
1482
+#infoautoreply, #infoautoreplyst, #infoautoreplypn {
1483
+  display: inline-block;
1484
+  position: relative;
1485
+  margin: -2px 0px 0px 10px;
1486
+  color: #000000;
1487
+  font-size: 21px;
1488
+  font-weight: bold;
1489
+  font-family: 'Liberation Serif', sans-serif;
1490
+  font-style: italic;
1491
+  cursor: pointer;
1492
+}
1493
+
1494
+.autorpltooltip, .autorpltooltipst, .autorpltooltippn {
1495
+  display: block;
1496
+  position: absolute;
1497
+  visibility: hidden;
1498
+  width: 330px;
1499
+  height: auto;
1500
+  background-color: #fafafa;
1501
+  font-size: 15px;
1502
+  font-weight: bold;
1503
+  white-space: normal;
1504
+  color: #595959;
1505
+  text-align: left;
1506
+  border-radius: 5px;
1507
+  padding: 5px 5px 5px 8px;
1508
+  margin: -4px 0px 0px -150px;
1509
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1510
+  -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1511
+  -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1512
+}
1513
+
1514
+.tooltipautoreply:hover .autorpltooltip, .tooltipautoreplyst:hover .autorpltooltipst, .tooltipautoreplypn:hover .autorpltooltippn  {
1515
+   visibility: visible;
1516
+}
1517
+
1518
+.selectHrMin {
1519
+  font-weight: 500 !important;
1520
+  color: #01446d !important;
1521
+}
1522
+
1523
+.chooseDateIntvl {
1524
+  display: block;
1525
+  width: 100%;
1526
+  height: 32px;
1527
+  margin: 19px auto 4px auto;
1528
+  font-weight: 500;
1529
+  text-align: center;
1530
+}
1531
+
1532
+.arplstrtendDates {
1533
+  display: block;
1534
+  position: absolute;
1535
+  width: 330px;
1536
+  height: auto;
1537
+}
1538
+
1539
+.stdtTitle {
1540
+  display: inline-block;
1541
+  position: absolute;
1542
+  width: 140px;
1543
+  height: 38px;
1544
+  left: 10px;
1545
+  top: 2px;
1546
+  font-weight: 500;
1547
+  text-align: center;
1548
+}
1549
+
1550
+.enddtTitle {
1551
+  display: inline-block;
1552
+  position: absolute;
1553
+  width: 140px;
1554
+  height: 38px;
1555
+  right: 10px;
1556
+  top: 2px;
1557
+  font-weight: 500;
1558
+  text-align: center;
1559
+}
1560
+
1561
+.startDate {
1562
+  display: inline-block;
1563
+  position: absolute;
1564
+  width: 140px;
1565
+  height: 38px;
1566
+  left: 10px;
1567
+  top: 26px;
1568
+  border: 1px solid #3b3b3b;
1569
+  border-radius: 6px;
1570
+  text-align: center;
1571
+  font-weight: 500;
1572
+  color: #01446d !important;
1573
+}
1574
+
1575
+.endDate {
1576
+  display: inline-block;
1577
+  position: absolute;
1578
+  width: 140px;
1579
+  height: 38px;
1580
+  right: 10px;
1581
+  top: 26px;
1582
+  border: 1px solid #3b3b3b;
1583
+  border-radius: 6px;
1584
+  text-align: center;
1585
+  font-weight: 500;
1586
+  color: #01446d !important;
1587
+}
1588
+
1589
+#adminOverlay {
1590
+  display: block;
1591
+  position: absolute;
1592
+  top: 0;
1593
+  left: 0;
1594
+  opacity: 0;
1595
+  z-index: 4990;
1596
+}
1597
+
1598
+.grpsList, .usrsList {
1599
+  display: block;
1600
+  position: absolute;
1601
+  width: 300px;
1602
+  max-height: 400px;
1603
+  z-index: 5000;
1604
+  overflow: auto;
1605
+  background-color: #ffffff;
1606
+}
1607
+
1608
+.groupsList, .usersList {
1609
+  display: block;
1610
+  position: relative;
1611
+  float: left;
1612
+  padding: 6px 4px;
1613
+  width: 300px;
1614
+  height: auto;
1615
+  color: #353535;
1616
+  border-radius: 6px;
1617
+  border: 1px solid #dadada;
1618
+  cursor: pointer;
1619
+}
1620
+
1621
+.groupsList:hover, .usersList:hover {
1622
+  background-color: #f1f1f1;
1623
+}
1624
+
1625
+.selectedGrps, .selectedUsrs {
1626
+  display: inline-block;
1627
+  position: relative;
1628
+  margin: 6px 1px 0px 1px;
1629
+  padding: 0px 6px;
1630
+  color: #353535;
1631
+  background-color: #ffffff;
1632
+  border: 1px solid #dadada;
1633
+  border-radius: 6px;
1634
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1635
+  -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1636
+  -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1637
+}
1638
+
1639
+.removeGroup, .removeUser {
1640
+  margin: 0px 0px 0px 6px;
1641
+  width: 9px;
1642
+  height: 9px;
1643
+  cursor: pointer;
1644
+}
1645
+
1646
+.showAllGroups, .showAllUsers {
1647
+  max-width: 40px !important;
1648
+  margin: 3px 10px 0px 6px;
1649
+  background-color: #ffffff;
1650
+  border-radius: 6px;
1651
+  padding: 4px 4px 0px 4px;
1652
+  z-index: 5000;
1653
+}
1654
+
1655
+.showAllGroupsak {
1656
+  max-width: 40px !important;
1657
+  margin: 3px 12px 0px 6px;
1658
+  background-color: #F7F7F7;
1659
+  border-radius: 6px;
1660
+  padding: 4px 4px 0px 4px;
1661
+}
1662
+
1663
+.showAllUsersak {
1664
+  max-width: 40px !important;
1665
+  margin: 3px 10px 0px 6px;
1666
+  background-color: #F7F7F7;
1667
+  border-radius: 6px;
1668
+  padding: 4px 4px 0px 4px;
1669
+}
1670
+
1671
+.showByNmbrTitle {
1672
+  display: block;
1673
+  width: 100%;
1674
+  color: #353535;
1675
+  text-align: center;
1676
+  font-size: 16px; 
1677
+  font-weight: 500;
1678
+  margin: 0px auto 5px auto;
1679
+}
1680
+
1681
+.marksent {
1682
+  background-color: #F2FBFF !important;
1683
+}
1684
+
1685
+.markreceived {
1686
+  background-color: #F2FFF5 !important;
1687
+}
1688
+
1689
+#sentfiltersrow, #recfiltersrow, #grpfiltersrow {
1690
+  display: none;
1691
+  position: sticky;
1692
+  top: 27px;
1693
+  background: #FFFFFF;
1694
+  box-shadow: 0 6px 7px rgba(0, 0, 0, 0.1);
1695
+  z-index: 1000;
1696
+}
1697
+
1698
+#sentSmsTable th, #recSmsTable th, #groupedSmsTable th {
1699
+  position: sticky;
1700
+  top: 27px;
1701
+  z-index: 999;
1702
+  border: 1px solid #f3f3f3;
1703
+  padding: 7px;
1704
+  background-color: #bfe5f2;
1705
+  font-size: 15px;
1706
+  font-weight: bold;
1707
+  text-align: center;
1708
+}
1709
+
1710
+#sentSmsTable td, #recSmsTable td {
1711
+  border: 1px solid #f3f3f3;
1712
+  padding: 5px;
1713
+  white-space: normal;
1714
+}
1715
+
1716
+.datecolsent {
1717
+  text-align: center;
1718
+}
1719
+
1720
+.sentdbidcolumn {
1721
+  text-align: center;
1722
+}
1723
+
1724
+.dbidcolumnrec {
1725
+  width: 50px;
1726
+  text-align: center;
1727
+}
1728
+
1729
+.messagecolumnsent {
1730
+  background: #fffff2;
1731
+  text-align: left;
1732
+  font-weight: 500;
1733
+  width: 250px;
1734
+  word-break: break-word;
1735
+}
1736
+
1737
+.messagecolumnrec {
1738
+  background: #fffff2;
1739
+  text-align: left;
1740
+  font-weight: 500;
1741
+  width: 526px;
1742
+  word-break: break-word;
1743
+}
1744
+
1745
+.messageAuthorName {
1746
+  border: 0px;
1747
+  border-radius: 20px;
1748
+  padding: 4px 10px;
1749
+  margin: 0px 4px 0px 0px;
1750
+  color: #414141;
1751
+  background-color: #eff9ff;
1752
+}
1753
+
1754
+.msgAuthorNameGrp {
1755
+  border: 0px;
1756
+  border-radius: 20px;
1757
+  padding: 3px 8px;
1758
+  margin: 0px 4px 0px 0px;
1759
+  color: #616161;
1760
+  background-color: #e8edff !important;
1761
+}
1762
+
1763
+.addNameToPhNb {
1764
+  cursor: pointer;
1765
+  border-radius: 20px;
1766
+}
1767
+
1768
+.listToFromMsgs {
1769
+  display: block;
1770
+  margin: 0 auto;
1771
+  width: 30px;
1772
+  text-align: center;
1773
+  cursor: pointer;
1774
+}
1775
+
1776
+.lstMsgConv {
1777
+  display: block;
1778
+  position: relative;
1779
+  width: 30px;
1780
+  height: auto;
1781
+  text-align: center;
1782
+  margin: 4px auto 0 auto;
1783
+}
1784
+
1785
+.lstMsgConvImg {
1786
+  cursor: pointer;
1787
+  height: auto;
1788
+}
1789
+
1790
+.lstMsgToFromImg {
1791
+  cursor: pointer;
1792
+  height: auto;
1793
+}
1794
+
1795
+.lstMsgToFromImg:hover, .lstMsgConvImg:hover {
1796
+   box-shadow: 0 0 7px rgba(0, 0, 0, 0.25);
1797
+   -webkit-box-shadow: 0 0 7px rgba(0, 0, 0, 0.25);
1798
+   -moz-box-shadow: 0 0 7px rgba(0, 0, 0, 0.25);
1799
+}
1800
+
1801
+.lstMsgToFromImg:active, .lstMsgConvImg:hover {
1802
+   box-shadow: 0 0 9px rgba(0, 0, 0, 0.25);
1803
+   -webkit-box-shadow: 0 0 9px rgba(0, 0, 0, 0.25);
1804
+   -moz-box-shadow: 0 0 9px rgba(0, 0, 0, 0.25);
1805
+}
1806
+
1807
+
1808
+#loadMoreMsgs, #loadMoreMsgsusr {
1809
+  display: none;
1810
+  margin: 1px auto 2px auto;
1811
+  width: 180px;
1812
+  height: 22px;
1813
+  border: 1px solid #b8d4e6;
1814
+  border-radius: 20px;
1815
+  color: #6c91b2;
1816
+  line-height: normal;
1817
+  text-align: center;
1818
+  font-size: 15px;
1819
+  font-weight: 500;
1820
+  cursor: pointer;
1821
+}
1822
+
1823
+#loadMoreMsgs:hover, #loadMoreMsgsusr:hover {
1824
+  color: #3a6c9a;
1825
+  border: 1px solid #95bad3;
1826
+}
1827
+
1828
+#loadMoreMsgs:active, #loadMoreMsgsusr:active {
1829
+  box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1830
+  -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1831
+  -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1832
+  border: 1px solid #79a2be;
1833
+}
1834
+
1835
+.addNameToPhNb:hover {
1836
+  box-shadow: 0 0 8px rgba(0, 0, 0, 0.23);
1837
+  -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.23);
1838
+  -moz-box-shadow: 0 0 8px rgba(0, 0, 0, 0.23);
1839
+}
1840
+
1841
+.addNameToPhNb:active {
1842
+  box-shadow: 0 0 12px rgba(0, 0, 0, 0.33);
1843
+  -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, 0.33);
1844
+  -moz-box-shadow: 0 0 12px rgba(0, 0, 0, 0.33);
1845
+}
1846
+
1847
+#recTblOverlay, #alertMsgOverlay {
1848
+  display: block;
1849
+  position: absolute;
1850
+  top: 0;
1851
+  left: 0;
1852
+  width: 100%;
1853
+  height: 100%;
1854
+  background-color: #000000;
1855
+  opacity: 0.09;
1856
+  z-index: 5050;
1857
+}
1858
+
1859
+#disNameWindow, #alertMessage, #alertConfMessage {
1860
+  display: block;
1861
+  position: absolute;
1862
+  width: 338px;
1863
+  height: auto;
1864
+  white-space: pre-wrap;
1865
+  border-radius: 6px;
1866
+  background-color: #ffffff;
1867
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1868
+   -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1869
+   -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
1870
+  z-index: 5100;
1871
+}
1872
+
1873
+#alertTextWrap {
1874
+  display: block;
1875
+  text-align: left;
1876
+  font-size: 16px;
1877
+  margin: 30px 22px 16px 22px;
1878
+  color: #353535;
1879
+  white-space: pre-wrap;
1880
+  word-break: break-word;
1881
+}
1882
+
1883
+#closeDisNmWindow {
1884
+  display: block;
1885
+  position: absolute;
1886
+  width: 12px;
1887
+  height: 12px;
1888
+  right: 8px;
1889
+  top: 10px;
1890
+  padding: 0;
1891
+  background-image: url('../img/closewnd.svg');
1892
+  background-repeat: no-repeat;
1893
+  background-position: center center;
1894
+  cursor: pointer;
1895
+}
1896
+
1897
+#closeFrmMsgWindow, #closeAlertWnd, #closeAlertWndcf {
1898
+  display: block;
1899
+  position: absolute;
1900
+  width: 12px;
1901
+  height: 12px;
1902
+  right: 8px;
1903
+  top: 10px;
1904
+  padding: 0;
1905
+  background-image: url('../img/closewnd.svg');
1906
+  background-repeat: no-repeat;
1907
+  background-position: center center;
1908
+  cursor: pointer;
1909
+}
1910
+
1911
+#sendMsgConvBtn {
1912
+  display: flex;
1913
+  width: 200px;
1914
+  height: 20px;
1915
+  padding: 0;
1916
+  margin: -2px auto 0 auto;
1917
+  color: #ffffff;
1918
+  background: #40c1a3;
1919
+  border: 1px solid #40c1a3;
1920
+  border-radius: 20px;
1921
+  text-align: center;
1922
+  font-weight: 500;
1923
+  cursor: pointer;
1924
+  line-height: normal;
1925
+  justify-content: center;
1926
+  align-items: end;
1927
+}
1928
+
1929
+#sendMsgConvBtn:hover {
1930
+  background-color:  #3bb397 !important;
1931
+  box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1932
+  -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1933
+  -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1934
+}
1935
+
1936
+#sendMsgConvBtn:active {
1937
+  background-color: #33a087 !important;
1938
+  box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1939
+  -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1940
+  -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.23);
1941
+}
1942
+
1943
+#saveDispName, #alertOk {
1944
+  display: block;
1945
+  border-radius: 20px !important;
1946
+  padding: 0px 14px !important;
1947
+  margin: 10px auto !important;
1948
+  min-height: 30px !important;
1949
+  height: 30px !important;
1950
+  color: #ffffff !important;
1951
+  background-color: #40c1a3 !important;
1952
+}
1953
+
1954
+#cancelOkWrap {
1955
+  display: block;
1956
+  width: 100%; 
1957
+  margin: 10px auto !important;
1958
+  text-align: center;
1959
+}
1960
+
1961
+#confirmOk, #confirmCancel {
1962
+  display: inline-block;
1963
+  min-width: 76px;
1964
+  border-radius: 20px !important;
1965
+  padding: 0px 14px !important;
1966
+  margin: 0 5px;
1967
+  min-height: 30px !important;
1968
+  height: 30px !important;
1969
+  color: #ffffff !important;
1970
+  background-color: #40c1a3 !important;
1971
+}
1972
+
1973
+#saveDispName:hover, #alertOk:hover, #confirmOk:hover, #confirmCancel:hover {
1974
+  background-color:  #3bb397 !important;
1975
+}
1976
+
1977
+#saveDispName:active, #alertOk:active, #confirmOk:active, #confirmCancel:active {
1978
+  background-color: #33a087 !important;
1979
+}
1980
+
1981
+#sendMsgReply {
1982
+  display: none;
1983
+}
1984
+
1985
+#sendMsgConv {
1986
+  display: block;
1987
+  width: 558px;
1988
+  height: auto;
1989
+  margin: 0 auto;
1990
+  border: none;
1991
+}
1992
+
1993
+#sendMsgConv td {
1994
+  background-color: #ffffff;
1995
+  border: none;
1996
+}
1997
+
1998
+#sendMsgConvText {
1999
+  display: inline-block;
2000
+  width: 558px;
2001
+  height: 72px;
2002
+  padding: 3px 5px;
2003
+  color: #000000;
2004
+  text-align: left;
2005
+  font-size: 16px;
2006
+  border-radius: 6px;
2007
+  resize: none;
2008
+  white-space: pre-wrap;
2009
+  border: 1px solid #dedede;
2010
+  background-color: #ffffff;
2011
+  overflow-y: auto;
2012
+}
2013
+
2014
+#fromPhoneNmbrConv {
2015
+  display: inline-block;
2016
+  width: 50%;
2017
+  height: auto;
2018
+  margin: 6px 0px 2px 10px;
2019
+  font-weight: 500;
2020
+  color: #222222;
2021
+}
2022
+
2023
+#toPhoneNmbrConv {
2024
+  display: inline-block;
2025
+  width: 50%;
2026
+  height: auto;
2027
+  margin: 6px 0px 2px -20px;
2028
+  font-weight: 500;
2029
+  color: #222222;
2030
+  text-align: right;
2031
+}
2032
+
2033
+#selectFromNbConv {
2034
+  height: 26px;
2035
+  width: auto;
2036
+  margin: 0;
2037
+  text-align: left;
2038
+  color: #222222;
2039
+  background-color: #ffffff !important;
2040
+  border: 1px solid #d8d8d8;
2041
+}
2042
+
2043
+#listAllMsgsFromTo {
2044
+  display: block;
2045
+  position: absolute;
2046
+  width: 600px;
2047
+  height: 490px;
2048
+  white-space: pre-wrap;
2049
+  border-radius: 6px;
2050
+  background-color: #ffffff;
2051
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2052
+  -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2053
+  -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2054
+  z-index: 5100;
2055
+}
2056
+
2057
+#listAllMsgsConv {
2058
+  display: block;
2059
+  position: absolute;
2060
+  width: 600px;
2061
+  height: 490px;
2062
+  white-space: pre-wrap;
2063
+  border-radius: 6px;
2064
+  background-color: #ffffff;
2065
+  box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2066
+  -webkit-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2067
+  -moz-box-shadow: 0 0 23px rgba(0, 0, 0, 0.23);
2068
+  z-index: 5100;
2069
+}
2070
+
2071
+#expandWindowRpl {
2072
+  display: block;
2073
+  margin: 4px auto 0 auto;
2074
+  cursor: pointer;
2075
+}
2076
+
2077
+#dragDispNmWindow {
2078
+  display: block;
2079
+  position: relative;
2080
+  width: 40px;
2081
+  height: 20px;
2082
+  margin:-3px auto 0px auto;
2083
+  cursor: grab;
2084
+  text-align: center;
2085
+}
2086
+
2087
+#draglstMsgmWindow {
2088
+  display: block;
2089
+  position: relative;
2090
+  width: 500px;
2091
+  height: 20px;
2092
+  margin:-3px auto 0px auto;
2093
+  cursor: grab;
2094
+  text-align: center;
2095
+}
2096
+
2097
+#draglstMsgmWindowsc {
2098
+  display: block;
2099
+  position: absolute;
2100
+  width: 100%;
2101
+  height: 14px;
2102
+  bottom: 3px;
2103
+  cursor: grab;
2104
+  text-align: center;
2105
+}
2106
+
2107
+#frmMsgLstWrap {
2108
+  display: block;
2109
+  position: relative;
2110
+  width: 560px;
2111
+  height: 400px;
2112
+  margin: 0 auto;
2113
+  overflow-y: auto;
2114
+  overflow-x: hidden;
2115
+}
2116
+
2117
+#frmMsgLstTbl {
2118
+  display: block;
2119
+  position: relative;
2120
+  width: 100%;
2121
+  height: 100%;
2122
+}
2123
+
2124
+#frmMsgLstTbl td {
2125
+  text-align: left;
2126
+  vertical-align: top;
2127
+  background-color: #ffffff !important;
2128
+}
2129
+
2130
+.groupedLstNamespn {
2131
+  display: block;
2132
+  position: fixed;
2133
+  width: 130px;
2134
+  height: auto;
2135
+  padding: 0px 0px 0px 4px;
2136
+  overflow-y: auto;
2137
+  white-space: pre-wrap;
2138
+}
2139
+
2140
+#msgListRowCell {
2141
+  display: block;
2142
+  width: 428px;
2143
+  height: auto;
2144
+  margin: 0px 0px 0px 130px;
2145
+  padding: 0px 0px 0px 4px;
2146
+  overflow: scroll;
2147
+  white-space: nowrap;
2148
+}
2149
+
2150
+.dispNameListAll {
2151
+  display: block;
2152
+  width: 100%;
2153
+  height: auto;
2154
+  border: 1px solid #c6cedb;
2155
+  border-radius: 20px;
2156
+  margin: 6px 0px 0px 0px;
2157
+  color: #04957b;
2158
+  font-size: 13px;
2159
+  padding: 0px 9px;
2160
+  text-align: center;
2161
+  font-weight: 500;
2162
+  cursor: pointer;
2163
+}
2164
+
2165
+#selectAllChckbx:hover {
2166
+  cursor: pointer;
2167
+}
2168
+
2169
+.indivchckbx:hover {
2170
+  cursor: pointer;
2171
+}
2172
+
2173
+.selectsmsdv {
2174
+  width: 30px;
2175
+  padding: 5px 5px 5px 7px;
2176
+  text-align: center;
2177
+}
2178
+
2179
+#selectalldv {
2180
+  width: 30px;
2181
+  padding: 5px 5px 5px 7px;
2182
+}
2183
+
2184
+.indivfilter {
2185
+  height: 30px;
2186
+  font-weight: bold;
2187
+  padding: 0px;
2188
+}
2189
+
2190
+.selectalldvfilter {
2191
+  border: 1px solid #f3f3f3;
2192
+  padding: 3px;
2193
+  margin: 0px; 
2194
+}
2195
+
2196
+.filterbuttonsrec, .filterbuttonsent {
2197
+  display: block;
2198
+  position: relative;
2199
+  margin: 5px auto !important;
2200
+  border-radius: 3px !important;
2201
+  background-color: #ffffff !important;
2202
+  background-image: url('../img/filter_icon.svg');
2203
+  background-repeat: no-repeat;
2204
+  background-position: center center;
2205
+  cursor: pointer;
2206
+}
2207
+
2208
+#clearrecfilters, #clearsentfilters, #cleargrpfilter {
2209
+  display: inline-block;
2210
+  width: 22px;
2211
+  height: 22px;
2212
+  background-color: #ffffff;
2213
+  background-image: url('../img/clearfilters.svg');
2214
+  background-repeat: no-repeat;
2215
+  background-position: center center;
2216
+  margin: 0px 0px 8px 0px;
2217
+  border: none;
2218
+  cursor: pointer;
2219
+}
2220
+
2221
+#deleterecrows, #deletesentrows {
2222
+  display: inline-block;
2223
+  width: 16px;
2224
+  height: 20px;
2225
+  background-color: #ffffff;
2226
+  background-image: url('../img/garbage.svg');
2227
+  background-repeat: no-repeat;
2228
+  background-position: center center;
2229
+  margin: 0px 0px 4px 0px;
2230
+  border: none;
2231
+  cursor: pointer;
2232
+}
2233
+
2234
+#deleterecrows:active, #deletesentrows:active {
2235
+  background-image: url('../img/garbage_bright.svg');
2236
+}
2237
+
2238
+#toptablerec, #toptablesent, #toptablegrp {
2239
+  display: block;
2240
+  position: sticky;
2241
+  top: 0px;
2242
+  height: 27px;
2243
+  width: 100%;
2244
+  z-index: 1001;
2245
+}
2246
+
2247
+.topbuttonandpage {
2248
+  display: block;
2249
+  position: relative;
2250
+  width: 100%;
2251
+  height: 27px;
2252
+  border-radius: 0px 24px 0px 0px;
2253
+  background: #FFFFFF;
2254
+  z-index: 1001;
2255
+}
2256
+
2257
+#paginationrec, #paginationsent, #paginationgrp {
2258
+   display: block;
2259
+   position: relative;
2260
+   float: right;
2261
+   width: auto;
2262
+   margin: -25px 14px 0px 0px;
2263
+   font-size: 16px;
2264
+   font-weight: bold;
2265
+   color: #0082C9;
2266
+   z-index: 1002;
2267
+}
2268
+
2269
+.arrowDownCl {
2270
+   background-image: url('../img/arrowDown.svg');
2271
+   background-repeat: no-repeat;
2272
+   background-position: center center;
2273
+   z-index: 1010;
2274
+}
2275
+
2276
+.arrowUpCl {
2277
+   background-image: url('../img/arrowUp.svg');
2278
+   background-repeat: no-repeat;
2279
+   background-position: center center;
2280
+   z-index: 1010;   
2281
+}
2282
+
2283
+@media (max-width: 1020px) {
2284
+  #recarrow, #sentarrow {
2285
+    display: block;
2286
+    position: relative;
2287
+    float: left;
2288
+    margin: 3.8px 0px 0px 50px;
2289
+    width: 17px;
2290
+    height: 17px;
2291
+    border: none;
2292
+    cursor: pointer;
2293
+  }
2294
+}
2295
+
2296
+@media (min-width: 1021px) {
2297
+  #recarrow, #sentarrow {
2298
+    display: block;
2299
+    position: relative;
2300
+    float: left;
2301
+    margin: 3.8px 0px 0px 5px;
2302
+    width: 17px;
2303
+    height: 17px;
2304
+    border: none;
2305
+    cursor: pointer;
2306
+  }
2307
+}
2308
+
2309
+#totalrecmessages, #totalsentmessages, #totalgrpmessages {
2310
+  display: block;
2311
+  position: relative;
2312
+  padding: 10px 0px 0px 7px;
2313
+  font-size: 14px;
2314
+  font-weight: bold;
2315
+  color: #4cbc86;
2316
+}
2317
+
2318
+.pagenumbers, .pagenumbersbottom, .pagenumbersrec, .pagenumbersbottomrec, .pagenumbersgrp {
2319
+  color: #0082C9;
2320
+}
2321
+
2322
+#dbidtextsent {
2323
+  display: block;
2324
+  margin: auto;
2325
+  width: 95%;
2326
+}
2327
+
2328
+#dbidtextrec {
2329
+  display: block;
2330
+  margin: auto;
2331
+  width: 95%;
2332
+}
2333
+
2334
+#useridtext {
2335
+  display: block;
2336
+  margin: auto;
2337
+  width: 95%;
2338
+}
2339
+
2340
+#useridtextrec {
2341
+  display: block;
2342
+  margin: auto;
2343
+  width: 95%;
2344
+}
2345
+
2346
+#messageidtext {
2347
+  display: block;
2348
+  margin: auto;
2349
+  width: 95%;
2350
+}
2351
+
2352
+#messageidtextrec {
2353
+  display: block;
2354
+  margin: auto;
2355
+  width: 95%;
2356
+}
2357
+
2358
+#datetext {
2359
+  display: block;
2360
+  margin: auto;
2361
+  width: 95px;
2362
+}
2363
+
2364
+#datetextrec {
2365
+  display: block;
2366
+  margin: auto;
2367
+  width: 95%;
2368
+}
2369
+
2370
+#fromtext {
2371
+  display: block;
2372
+  margin: auto;
2373
+  width: 95%;
2374
+}
2375
+
2376
+#fromtextrec {
2377
+  display: block;
2378
+  margin: auto;
2379
+  width: 95%;
2380
+}
2381
+
2382
+#totext {
2383
+  display: block;
2384
+  margin: auto;
2385
+  width: 95%;
2386
+}
2387
+
2388
+#totextrec {
2389
+  display: block;
2390
+  margin: auto;
2391
+  width: 95%;
2392
+}
2393
+
2394
+#networktext {
2395
+  display: block;
2396
+  margin: auto;
2397
+  width: 95%;
2398
+}
2399
+
2400
+#pricetext {
2401
+  display: block;
2402
+  margin: auto;
2403
+  width: 95%;
2404
+}
2405
+
2406
+#statustext {
2407
+  display: block;
2408
+  margin: auto;
2409
+  width: 95%;
2410
+}
2411
+
2412
+#deliveryrcpttext {
2413
+  display: block;
2414
+  margin: auto;
2415
+  width: 95%;
2416
+}
2417
+
2418
+#messagetext {
2419
+  display: block;
2420
+  margin: auto;
2421
+  width: 95%;
2422
+}
2423
+
2424
+#messagetextrec {
2425
+  display: block;
2426
+  margin: auto;
2427
+  width: 95%;
2428
+}
2429
+
2430
+#databaseidfilter {
2431
+  display: block;
2432
+  margin-left: auto;
2433
+  margin-right: auto;
2434
+}
2435
+
2436
+#sentstatuscolumn {
2437
+  max-width: 160px;
2438
+}
2439
+
2440
+.useridcolrec {
2441
+  width: 124px;
2442
+  background-color: #ffffff;
2443
+  text-align: center;
2444
+}
2445
+
2446
+.messageidcolsent {
2447
+  overflow: visible;
2448
+  word-break: break-all;
2449
+  text-align: center;
2450
+}
2451
+
2452
+.messageidcolrec {
2453
+  overflow: visible;
2454
+  word-break: break-all;
2455
+  width: 420px;
2456
+  text-align: center;
2457
+}
2458
+
2459
+.datecolrec {
2460
+  width: 160px;
2461
+  text-align: center;
2462
+}
2463
+
2464
+.fromcolumnrec {
2465
+  width: 140px;
2466
+  text-align: center;
2467
+  background-color: #f2fff5;
2468
+}
2469
+
2470
+.tocolrec {
2471
+  width: 140px;
2472
+  background-color: #f2fbff;
2473
+  text-align: center;
2474
+}
2475
+
2476
+.networkcolumnsent {
2477
+  max-width: 90px;
2478
+  background-color: #ffffff;
2479
+  word-break: break-word;
2480
+  text-align: center;
2481
+}
2482
+
2483
+.useridcolsent, .pricecolumnsent, .statuscolumnsent, .deliveryrcptcolsent {
2484
+  background-color: #ffffff;
2485
+  text-align: center;
2486
+}
2487
+
2488
+.tocolumnsent {
2489
+  background-color: #f2fbff;
2490
+  text-align: center;
2491
+}
2492
+
2493
+.fromcolumnsent {
2494
+  background-color: #f2fff5;
2495
+  text-align: center;
2496
+}
2497
+
2498
+.active {
2499
+  color: #c62b71;
2500
+}
2501
+
2502
+#deleteoldmssgs {
2503
+  display: inline-block;
2504
+  position: relative;
2505
+  margin: 10px 0px 10px 1px;
2506
+  font-size: 16px;
2507
+  font-weight: bold;
2508
+}
2509
+
2510
+#deleteoldsms {
2511
+  display: none;
2512
+  background: #e8f6ff;
2513
+  border-radius: 6px;
2514
+  padding: 5px;
2515
+}
2516
+
2517
+#delOldrecSMS, #delOldsentSMS {
2518
+  display: block;
2519
+  background-color: #0082C9;
2520
+  color: #ffffff;
2521
+  margin: 10px 0px 10px 5px;
2522
+  border-radius: 20px;  
2523
+}
2524
+
2525
+#delOldrecSMS:active, #delOldsentSMS:active {
2526
+  background: #00a2f9;
2527
+}
2528
+
2529
+#delsetrows {
2530
+  display: block;
2531
+  padding: 5px;
2532
+}
2533
+
2534
+.deletesmsolder {
2535
+  display: inline;
2536
+  font-size: 16px;
2537
+  font-weight: bold;
2538
+}
2539
+
2540
+#oldrecSmsInterval, #oldsentSmsInterval {
2541
+  display: inline;
2542
+  width: 60px;
2543
+  height: 25px;
2544
+  padding: 0px 0px 0px 10px;
2545
+  font-size: 14px;
2546
+  font-weight: bold;
2547
+  border-radius: 20px;
2548
+}
2549
+
2550
+#upArrow {
2551
+  background-image: url("../img/arrow-top.svg");
2552
+  background-repeat: no-repeat;
2553
+  background-color: transparent !important;
2554
+  opacity: 0.30;
2555
+  position: fixed;
2556
+  bottom: 40px;
2557
+  right: 4px;
2558
+  width: 50px;
2559
+  height: 50px;
2560
+  border: none;
2561
+  cursor: pointer;
2562
+  display: none;
2563
+  z-index: 1010;
2564
+}
2565
+
2566
+#upArrow:hover {
2567
+  opacity: 1;
2568
+}
2569
+
2570
+#arrowupWrap {
2571
+  display: block;
2572
+  position: sticky;
2573
+  width: 20px;
2574
+  height: 20px;
2575
+  bottom: 14px;
2576
+  left: 530px;
2577
+}
2578
+
2579
+#upArrowSmall {
2580
+  background-image: url("../img/arrow-top-small.svg");
2581
+  background-repeat: no-repeat;
2582
+  background-color: transparent !important;
2583
+  width: 21px;
2584
+  height: 21px;
2585
+  opacity: 0.30;
2586
+  border: none;
2587
+  cursor: pointer;
2588
+  display: none;
2589
+  z-index: 5300;
2590
+}
2591
+
2592
+#upArrowSmall:hover {
2593
+  opacity: 1;
2594
+}
2595
+
2596
+.opensmsfolder {
2597
+  display: block;
2598
+  position: relative;
2599
+  margin: 10px 0px 10px 0px !important;
2600
+  padding: 7px 0px 7px 0px;
2601
+  width: 100% !important;
2602
+  color: #FFFFFF !important;
2603
+  font-size: 15px !important;
2604
+  background-color: #CB99C5 !important;
2605
+}
2606
+
2607
+.opensmsfolder:hover {
2608
+  border: 2px;
2609
+  background-color: #c18bba !important;
2610
+}
2611
+
2612
+.opensmsfolder:active {
2613
+  background-color: #b777af !important;
2614
+  border: 2px;
2615
+  color: #FFFFFF !important;
2616
+  border-color: #b777af;
2617
+}
2618
+
2619
+.opensmsfolder:focus {
2620
+  background-color: #a3669b !important;
2621
+  border: 2px;
2622
+  border-color: #a3669b;
2623
+}
2624
+
2625
+#save_sms_settings {
2626
+  display: inline-block;
2627
+  border-radius: 8px !important;
2628
+  padding: 0px 14px !important;
2629
+  color: #ffffff !important;
2630
+  background-color: #1e89c2 !important;
2631
+}
2632
+
2633
+#save_sms_settings:hover {
2634
+  background-color: #0369a0 !important;
2635
+}
2636
+
2637
+#save_sms_settings:active {
2638
+  background-color: #025480 !important;
2639
+}
2640
+
2641
+/* Changes for dark themes */
2642
+[data-theme-dark] .srheader,
2643
+[data-theme-dark-highcontrast] .srheader {
2644
+  display: block;
2645
+  position: relative;
2646
+  margin: 0px 0px 7px 0px;
2647
+  color: #fafafa;
2648
+  font-size: 17px;
2649
+  font-weight: bold;
2650
+}
2651
+
2652
+[data-theme-dark] #sendtomultiple,
2653
+[data-theme-dark-highcontrast] #sendtomultiple {
2654
+  display: inline-block;
2655
+  position: relative;
2656
+  margin: 10px 0px 12px 0px;
2657
+  color: #fafafa;
2658
+  font-size: 16px;
2659
+  font-weight: bold;
2660
+}
2661
+
2662
+[data-theme-dark] #entermessage,
2663
+[data-theme-dark-highcontrast] #entermessage {
2664
+  display: block;
2665
+  position: relative;
2666
+  margin: 10px 0px 0px 0px;
2667
+  color: #fafafa;
2668
+  font-size: 16px;
2669
+  font-weight: bold;
2670
+}
2671
+
2672
+[data-theme-dark] #sendmediafl,
2673
+[data-theme-dark-highcontrast] #sendmediafl {
2674
+  display: block;
2675
+  position: relative;
2676
+  margin: 0px 0px 20px 0px;
2677
+  color: #fafafa;
2678
+  font-size: 16px;
2679
+  font-weight: bold;
2680
+}
2681
+
2682
+[data-theme-dark] #deleteoldmssgs,
2683
+[data-theme-dark-highcontrast] #deleteoldmssgs {
2684
+  display: inline-block;
2685
+  position: relative;
2686
+  margin: 10px 0px 10px 1px;
2687
+  color: #fafafa;
2688
+  font-size: 16px;
2689
+  font-weight: bold;
2690
+}
2691
+
2692
+[data-theme-dark] #smsto,
2693
+[data-theme-dark-highcontrast] #smsto {
2694
+  display: block;
2695
+  width: 99%;
2696
+  max-height: 32px;
2697
+  padding: 0px 15px 0px 15px;
2698
+  color: #fafafa;
2699
+  font-size: 16px;
2700
+  font-weight: bold;
2701
+  border-radius: 20px;
2702
+}
2703
+
2704
+[data-theme-dark] #smstext,
2705
+[data-theme-dark-highcontrast] #smstext {
2706
+  display: inline-block;
2707
+  color: #fafafa;
2708
+  width: 100%;
2709
+  height: 130px;
2710
+  text-align: left;
2711
+  font-size: 16px;
2712
+  border-radius: 6px;
2713
+  resize: vertical;
2714
+  white-space: pre-wrap;
2715
+}
2716
+
2717
+
2718
+[data-theme-dark] .arplText,
2719
+[data-theme-dark-highcontrast] .arplText {
2720
+  display: inline-block;
2721
+  color: #fafafa;
2722
+  width: 330px;
2723
+  height: 184px;
2724
+  font-size: 15px;
2725
+  text-align: left;
2726
+  border: 1px solid #000;
2727
+  border-radius: 6px;
2728
+  margin: 0px 1px 0px 0px;
2729
+  resize: vertical;
2730
+  white-space: pre-wrap;
2731
+  overflow: auto;
2732
+}
2733
+
2734
+[data-theme-dark] .tooltipbalanceid #infobalance,
2735
+[data-theme-dark-highcontrast] .tooltipbalanceid #infobalance {
2736
+  display: block;
2737
+  position: relative;
2738
+  margin: 4px 14px 0px 0px;
2739
+  color: #fafafa;
2740
+  font-size: 21px;
2741
+  font-weight: bold;
2742
+  font-family: 'Liberation Serif', sans-serif;
2743
+  font-style: italic;
2744
+  z-index: 6;
2745
+}
2746
+
2747
+[data-theme-dark] #infotipid,
2748
+[data-theme-dark-highcontrast] #infotipid {
2749
+  display: block;
2750
+  position: relative;
2751
+  margin: 4px 14px 0px 0px;
2752
+  color: #fafafa;
2753
+  font-size: 21px;
2754
+  font-weight: bold;
2755
+  font-family: 'Liberation Serif', sans-serif;
2756
+  font-style: italic;
2757
+  z-index: 5;
2758
+}
2759
+
2760
+[data-theme-dark] .fortooltip .texttooltip, [data-theme-dark] .maxmessagelength .texttooltip,
2761
+[data-theme-dark-highcontrast] .fortooltip .texttooltip, [data-theme-dark-highcontrast] .maxmessagelength .texttooltip {
2762
+  font-family: 'Liberation Serif', Calibri, sans-serif;
2763
+  font-style: italic;
2764
+  color: #fafafa;
2765
+  font-size: 21px;
2766
+  font-weight: bold;
2767
+  margin: 0px 0px 4px 4px;
2768
+}
2769
+
2770
+[data-theme-dark] #uploadfileforsms,
2771
+[data-theme-dark-highcontrast] #uploadfileforsms {
2772
+  margin-left: 7px;
2773
+  background-color: #434343;
2774
+  border-radius: 3px !important;
2775
+}
2776
+
2777
+[data-theme-dark] #uploadfileformms,
2778
+[data-theme-dark-highcontrast] #uploadfileformms {
2779
+  margin-left: 21px;
2780
+  background-color: #434343;
2781
+  border-radius: 3px !important;
2782
+}
2783
+
2784
+[data-theme-dark] .smsnbformat a,
2785
+[data-theme-dark-highcontrast] .smsnbformat a {
2786
+  color: #cedfff !important;
2787
+}
2788
+
2789
+[data-theme-dark] .smsnbformat font,
2790
+[data-theme-dark-highcontrast] .smsnbformat font {
2791
+  color: #f7547a !important;
2792
+}
2793
+
2794
+[data-theme-dark] .indivfiltersent, [data-theme-dark] .indivfilterrec,
2795
+[data-theme-dark-highcontrast] .indivfiltersent, [data-theme-dark-highcontrast] .indivfilterrec {
2796
+  color: #fafafa !important;
2797
+}
2798
+
2799
+[data-theme-dark] #recSmsTable, [data-theme-dark] #groupedSmsTable, [data-theme-dark] #sentSmsTable,
2800
+[data-theme-dark-highcontrast] #recSmsTable, [data-theme-dark-highcontrast] #groupedSmsTable, [data-theme-dark-highcontrast] #sentSmsTable {
2801
+  color: #272727 !important;
2802
+}
2803
+
2804
+[data-theme-dark] .providerSettings .setlabeltext,
2805
+[data-theme-dark-highcontrast] .providerSettings .setlabeltext {
2806
+  color: #272727;
2807
+}
2808
+
2809
+[data-theme-dark] .providerName,
2810
+[data-theme-dark-highcontrast] .providerName  {
2811
+   font-size: 18px;
2812
+   font-weight: bold;
2813
+   margin-bottom: 20px;
2814
+   color: #272727;
2815
+}
2816
+
2817
+[data-theme-dark] .selectHrMin, 
2818
+[data-theme-dark-highcontrast] .selectHrMin,
2819
+[data-theme-dark] .startDate,
2820
+[data-theme-dark-highcontrast] .startDate,
2821
+[data-theme-dark] .endDate,
2822
+[data-theme-dark-highcontrast] .endDate {
2823
+   color: #ffffff !important;
2824
+}
2825
+
2826
+[data-theme-dark] #infoautoreply, [data-theme-dark] #infoautoreplyst, [data-theme-dark] #infoautoreplypn,
2827
+[data-theme-dark-highcontrast] #infoautoreply, [data-theme-dark-highcontrast] #infoautoreplyst, [data-theme-dark-highcontrast] #infoautoreplypn {
2828
+   color: #ffffff;
2829
+}
2830
+
2831
+[data-theme-dark] .generateUrl,
2832
+[data-theme-dark-highcontrast] .generateUrl {
2833
+   color: #013351 !important;
2834
+}
0 2835
new file mode 100644
... ...
@@ -0,0 +1,40 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<svg
3
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+   xmlns:cc="http://creativecommons.org/ns#"
5
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+   xmlns:svg="http://www.w3.org/2000/svg"
7
+   xmlns="http://www.w3.org/2000/svg"
8
+   height="10.832398"
9
+   width="11.032042"
10
+   version="1.1"
11
+   viewbox="0 0 12 12"
12
+   id="svg4">
13
+  <metadata
14
+     id="metadata10">
15
+    <rdf:RDF>
16
+      <cc:Work
17
+         rdf:about="">
18
+        <dc:format>image/svg+xml</dc:format>
19
+        <dc:type
20
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
21
+        <dc:title></dc:title>
22
+      </cc:Work>
23
+    </rdf:RDF>
24
+  </metadata>
25
+  <defs
26
+     id="defs8" />
27
+  <g
28
+     id="g865"
29
+     transform="matrix(0.67742905,0,0,0.6651698,-13.843892,3.6038446)"
30
+     style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:3.41889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
31
+    <path
32
+       style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:3.41889;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
33
+       d="M 35.011646,-3.7084868 22.145374,9.1577854"
34
+       id="path841" />
35
+    <path
36
+       style="fill:#808080;fill-opacity:1;stroke:#808080;stroke-width:3.41889;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
37
+       d="M 22.145374,-3.7084868 35.011646,9.1577854"
38
+       id="path841-8" />
39
+  </g>
40
+</svg>
0 41
new file mode 100644
... ...
@@ -0,0 +1,834 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+$(document).ready(function() {
24
+
25
+  // Get admin settings
26
+  var userid = "<?php p($userId); ?>";
27
+  var baseUrlget = OC.generateUrl('/apps/sms_relentless/user/getadminsettings');
28
+
29
+  $.ajax({
30
+     method: 'GET',
31
+     url: baseUrlget + '/' + userid,
32
+     contentType: 'application/json',
33
+     success: function(settingsadm) {
34
+
35
+          $("#telapi_key").val(settingsadm.telapi_key);
36
+          $("#tel_pub_key").val(settingsadm.tel_pub_key);
37
+          $("#telapi_url_rec").val(settingsadm.telapi_url_rec);
38
+          $("#telapi_url").val(settingsadm.telapi_url);
39
+          $("#messaging_profile_id").val(settingsadm.messaging_profile_id);
40
+          $("#nexapi_key").val(settingsadm.nexapi_key);
41
+          $("#nexapi_secret").val(settingsadm.nexapi_secret);
42
+          $("#nexapi_url_rec").val(settingsadm.nexapi_url_rec);
43
+          $("#nexapi_url").val(settingsadm.nexapi_url);
44
+          $("#twilapi_key").val(settingsadm.twilapi_key);
45
+          $("#twilapi_secret").val(settingsadm.twilapi_secret);
46
+          $("#twilapi_url_rec").val(settingsadm.twilapi_url_rec);
47
+          $("#twilapi_url").val(settingsadm.twilapi_url);
48
+          $("#flowapi_key").val(settingsadm.flowapi_key);
49
+          $("#flowapi_secret").val(settingsadm.flowapi_secret);
50
+          $("#flowapi_url_rec").val(settingsadm.flowapi_url_rec);
51
+          $("#flowapi_url").val(settingsadm.flowapi_url);
52
+          $("#tel_sender_name").val(settingsadm.tel_sender_name);
53
+          $("#nex_sender_name").val(settingsadm.nex_sender_name);
54
+          $("#twil_sender_name").val(settingsadm.twil_sender_name);
55
+
56
+          if (settingsadm.show_all_messages == 1) {
57
+              $("#showallmessages").attr("checked", true);
58
+          } else {
59
+              $("#showallmessages").attr("checked", false);
60
+          }
61
+
62
+          var crntadmDispName = settingsadm.admdisplayname;
63
+          var allRestrictions = settingsadm.restrictions;
64
+          var allGroups = settingsadm.allgroups;
65
+          var allUsers = settingsadm.allusers;
66
+          var allGroupswadm = settingsadm.allgroupswadm;
67
+          var allUserswadm = settingsadm.alluserswadm;
68
+          var tnxallowedgrp = settingsadm.allowedkeysuse.tnx_groups_allowed;
69
+          var tnxallowedusr = settingsadm.allowedkeysuse.tnx_users_allowed;
70
+          var plvallowedgrp = settingsadm.allowedkeysuse.plv_groups_allowed;
71
+          var plvallowedusr = settingsadm.allowedkeysuse.plv_users_allowed;
72
+          var twlallowedgrp = settingsadm.allowedkeysuse.twl_groups_allowed;
73
+          var twlallowedusr = settingsadm.allowedkeysuse.twl_users_allowed;
74
+          var flrallowedgrp = settingsadm.allowedkeysuse.flr_groups_allowed;
75
+          var flrallowedusr = settingsadm.allowedkeysuse.flr_users_allowed;
76
+
77
+          // List all the groups and users allowed to access the API keys, for each provider
78
+          if (tnxallowedgrp) {
79
+              var tnxallowedgrparr = tnxallowedgrp.split("|");
80
+              for (var g = 0; g < tnxallowedgrparr.length; g++) {
81
+                   $("#alwdakeyGrps-tnx").append("<div class='selectedGrps'>"+ tnxallowedgrparr[g] +"<img id='rmvGrp-tnx-"+ tnxallowedgrparr[g] +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
82
+              }
83
+          }
84
+
85
+          if (tnxallowedusr) {
86
+              var tnxallowedusrarr = tnxallowedusr.split("|");
87
+              for (var g = 0; g < tnxallowedusrarr.length; g++) {
88
+                   $("#alwdakeyUsrs-tnx").append("<div class='selectedUsrs'>"+ tnxallowedusrarr[g] +"<img id='rmvUsr-tnx-"+ tnxallowedusrarr[g] +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
89
+              }
90
+          }
91
+
92
+          if (plvallowedgrp) {
93
+              var plvallowedgrparr = plvallowedgrp.split("|");
94
+              for (var g = 0; g < plvallowedgrparr.length; g++) {
95
+                   $("#alwdakeyGrps-plv").append("<div class='selectedGrps'>"+ plvallowedgrparr[g] +"<img id='rmvGrp-plv-"+ plvallowedgrparr[g] +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
96
+              }
97
+          }
98
+
99
+          if (plvallowedusr) {
100
+              var plvallowedusrarr = plvallowedusr.split("|");
101
+              for (var g = 0; g < plvallowedusrarr.length; g++) {
102
+                   $("#alwdakeyUsrs-plv").append("<div class='selectedUsrs'>"+ plvallowedusrarr[g] +"<img id='rmvUsr-plv-"+ plvallowedusrarr[g] +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
103
+              }
104
+          }
105
+
106
+          if (twlallowedgrp) {
107
+              var twlallowedgrparr = twlallowedgrp.split("|");
108
+              for (var g = 0; g < twlallowedgrparr.length; g++) {
109
+                   $("#alwdakeyGrps-twl").append("<div class='selectedGrps'>"+ twlallowedgrparr[g] +"<img id='rmvGrp-twl-"+ twlallowedgrparr[g] +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
110
+              }
111
+          }
112
+
113
+          if (twlallowedusr) {
114
+              var twlallowedusrarr = twlallowedusr.split("|");
115
+              for (var g = 0; g < twlallowedusrarr.length; g++) {
116
+                   $("#alwdakeyUsrs-twl").append("<div class='selectedUsrs'>"+ twlallowedusrarr[g] +"<img id='rmvUsr-twl-"+ twlallowedusrarr[g] +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
117
+              }
118
+          }
119
+
120
+          if (flrallowedgrp) {
121
+              var flrallowedgrparr = flrallowedgrp.split("|");
122
+              for (var g = 0; g < flrallowedgrparr.length; g++) {
123
+                   $("#alwdakeyGrps-flr").append("<div class='selectedGrps'>"+ flrallowedgrparr[g] +"<img id='rmvGrp-flr-"+ flrallowedgrparr[g] +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
124
+              }
125
+          }
126
+
127
+          if (flrallowedusr) {
128
+              var flrallowedusrarr = flrallowedusr.split("|");
129
+              for (var g = 0; g < flrallowedusrarr.length; g++) {
130
+                   $("#alwdakeyUsrs-flr").append("<div class='selectedUsrs'>"+ flrallowedusrarr[g] +"<img id='rmvUsr-flr-"+ flrallowedusrarr[g] +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
131
+              }
132
+          }
133
+
134
+
135
+          // Create a list with all the available groups, excluding the admin group
136
+          var grpsListItemswadm = "";
137
+          $.each(allGroupswadm, function(key, value) {
138
+                 grpsListItemswadm += "<div class='groupsList'>"+ value +"</div>";
139
+          });
140
+
141
+          // Create a list with all the available users, excluding the admins
142
+          var usersListItemswadm = "";
143
+          $.each(allUserswadm, function(key, usrval) {
144
+                 usersListItemswadm += "<div class='usersList'>"+ usrval +"</div>";
145
+          });
146
+          
147
+
148
+          function showListsalwdk() {
149
+
150
+              // Append the list of available groups to the table of groups and users allowed to use the API keys
151
+              $('[id^="showakeyGrps-"]').click(function() {
152
+                 var crtid = $(this).attr("id").split("-")[1];
153
+                 $("#grpsadapik-"+ crtid).remove();
154
+                 $("#showakeyGrps-"+ crtid).append("<div id='grpsadapik-"+ crtid +"' class='grpsList'>"+ grpsListItemswadm +"</div>");
155
+                 $("#adminOverlay").remove();
156
+                 $("#app-content").append("<div id='adminOverlay'></div>");
157
+                 $("#adminOverlay").css({ "width" : parseInt($("#sms_relentless_adm").width() + 400) +"px", "height" : $("#sms_relentless_adm").height() +"px" });
158
+
159
+                 $("#adminOverlay").click(function() { 
160
+                    $("#adminOverlay").remove();
161
+                    $("#grpsadapik-"+ crtid).remove();
162
+                    $("#usrsadapik-"+ crtid).remove();
163
+                 });
164
+
165
+                 // Select a group
166
+                 $(".groupsList").click(function() {
167
+                    var slctdGrp = $(this).text();
168
+                    $("#grpsadapik-"+ crtid).remove();
169
+                    var addedTxtgrp = $("#alwdakeyGrps-"+ crtid).text();
170
+
171
+                    if (addedTxtgrp.indexOf(slctdGrp) == -1) {
172
+                        $("#alwdakeyGrps-"+ crtid).append("<div class='selectedGrps'>"+ slctdGrp +"<img id='rmvGrp-"+ crtid +"-"+ slctdGrp +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
173
+                    } else { showAlert("That group has already been added!"); }
174
+
175
+                    // Remove a group from list
176
+                    $('[id^="rmvGrp-"]').click(function() {
177
+                       $(this).closest(".selectedGrps").remove();
178
+                    });
179
+                 });
180
+
181
+              });
182
+
183
+              // Append the list of available users to the table of groups and users allowed to use the API keys
184
+              $('[id^="showakeyUsrs-"]').click(function() {
185
+
186
+                 var crtidusr = $(this).attr("id").split("-")[1];
187
+                 $("#usrsadapik-"+ crtidusr).remove();
188
+                 $("#showakeyUsrs-"+ crtidusr).append("<div id='usrsadapik-"+ crtidusr +"' class='usrsList'>"+ usersListItemswadm +"</div>");
189
+                 $("#adminOverlay").remove();
190
+                 $("#app-content").append("<div id='adminOverlay'></div>");
191
+                 $("#adminOverlay").css({ "width" : parseInt($("#sms_relentless_adm").width() + 400) +"px", "height" : $("#sms_relentless_adm").height() +"px" });
192
+
193
+                 $("#adminOverlay").click(function() { 
194
+                    $("#adminOverlay").remove(); 
195
+                    $("#grpsadapik-"+ crtidusr).remove();
196
+                    $("#usrsadapik-"+ crtidusr).remove();
197
+                 });
198
+
199
+                 // Select a user
200
+                 $(".usersList").click(function() {
201
+                    var slctdUsr = $(this).text();
202
+                    var addedTxtusr = $("#alwdakeyUsrs-"+ crtidusr).text();
203
+
204
+                    if (addedTxtusr.indexOf(slctdUsr) == -1) {
205
+                        $("#alwdakeyUsrs-"+ crtidusr).append("<div class='selectedUsrs'>"+ slctdUsr +"<img id='rmvUsr-"+ crtidusr +"-"+ slctdUsr +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
206
+                    } else { showAlert("That user has already been added!"); }
207
+
208
+                    // Remove a user from list
209
+                    $('[id^="rmvUsr-"]').click(function() {
210
+                       $(this).closest(".selectedUsrs").remove();
211
+                    });
212
+                 });
213
+
214
+              });
215
+
216
+              // Remove a group from the list 
217
+              $('[id^="rmvGrp-"]').click(function() {
218
+                 $(this).closest(".selectedGrps").remove();
219
+              });
220
+
221
+              // Remove a user from the list
222
+              $('[id^="rmvUsr-"]').click(function() {
223
+                 $(this).closest(".selectedUsrs").remove();
224
+              });
225
+
226
+          }
227
+          showListsalwdk();
228
+
229
+
230
+          // Save the data
231
+          function saveAlwdRow() {
232
+             $('[id^="alwdrstsave-"]').unbind("click");
233
+             $('[id^="alwdrstsave-"]').click(function(event) {
234
+
235
+                 event.preventDefault();
236
+                 var crntprov = $(this).attr("id").replace("alwdrstsave-", "");
237
+                 
238
+                 if ($(this).attr("value") == "Save") {
239
+
240
+                     var selGroups = [];
241
+                     $("#alwdakeyGrps-"+ crntprov +" .selectedGrps").each(function() {
242
+                        selGroups.push($(this).text());
243
+                     });
244
+                     if (selGroups.length == 0) { selGroups.push(""); }
245
+
246
+                     var selUsers = [];
247
+                     $("#alwdakeyUsrs-"+ crntprov +" .selectedUsrs").each(function() {
248
+                        selUsers.push($(this).text());
249
+                     });
250
+                     if (selUsers.length == 0) { selUsers.push(""); }
251
+
252
+                     // Check if the access key fields have been left empty
253
+                     if (crntprov == 'tnx' && ($("#telapi_key").val().trim() == '' || $("#tel_pub_key").val().trim() == '' || $("#messaging_profile_id").val().trim() == '')) {
254
+                         showAlert("Please first fill in the fields: 'Telnyx API Secret Key', 'Telnyx Account Public Key' and 'Messaging Profile ID'");
255
+                         return;
256
+                     } else if (crntprov == 'plv' && ($("#nexapi_key").val().trim() == '' || $("#nexapi_secret").val().trim() == '')) {
257
+                         showAlert("Please first fill in the fields: 'Plivo Auth ID' and 'Plivo Auth Token'.");
258
+                         return;
259
+                     } else if (crntprov == 'twl' && ($("#twilapi_key").val().trim() == '' || $("#twilapi_secret").val().trim() == '')) {
260
+                         showAlert("Please first fill in the fields: 'Twilio Account SID' and 'Twilio Auth Token'.");
261
+                         return;
262
+                     } else if (crntprov == 'flr' && ($("#flowapi_key").val().trim() == '' || $("#flowapi_secret").val().trim() == '')) {
263
+                         showAlert("Please first fill in the fields: 'Flowroute Access Key' and 'Flowroute Secret Key'.");
264
+                         return;
265
+                     }
266
+
267
+                     var saveAlwdUrl = OC.generateUrl('/apps/sms_relentless/user/updatekeysallowedusers');
268
+
269
+                     var alwddatatosend = { 
270
+                              userId: userid,
271
+                              groups: selGroups,
272
+                              users: selUsers,
273
+                              provider: crntprov
274
+                     };
275
+
276
+	             $.ajax({
277
+	                   method: 'PUT',
278
+	                   url: saveAlwdUrl + '/' + userid,
279
+	                   contentType: 'application/json',
280
+	                   data: JSON.stringify(alwddatatosend),
281
+                           success: function(messagesent) {
282
+                                        if (messagesent == 'success') {
283
+                                            showAlert('The allowed groups and users have been successfully saved to the database!');
284
+                                        } else if (messagesent != 'success' && messagesent != 'failure') {
285
+                                            showAlert(messagesent);
286
+                                        } else if (messagesent == 'failure') {
287
+                                            showAlert('Error while trying to save the allowed groups and users!');
288
+                                        }
289
+                           },
290
+	                   error: function() {
291
+		                        showAlert('Error while attempting to save the allowed groups and users! You can check the Nextcloud log to find more details about this issue.');
292
+	                   }
293
+	             });
294
+
295
+                     $(this).attr("value", "Edit");
296
+
297
+                } else {
298
+
299
+                     $("#alwdrstsave-"+ crntprov).attr("value", "Save");
300
+                }
301
+
302
+             });
303
+          }
304
+          saveAlwdRow();
305
+
306
+
307
+
308
+          // Phone number restrictions
309
+
310
+          // Create a list with all the available groups
311
+          var grpsListItems = "";
312
+          $.each(allGroups, function(key, value) {
313
+                 grpsListItems += "<div class='groupsList'>"+ value +"</div>";
314
+          });
315
+
316
+          // Create a list with all the available users
317
+          var usersListItems = "";
318
+          $.each(allUsers, function(key, usrval) {
319
+                 usersListItems += "<div class='usersList'>"+ usrval +"</div>";
320
+          });
321
+
322
+
323
+          if (allRestrictions.length > 0) {
324
+              var restrNmb = allRestrictions.length;
325
+          } else {
326
+              var restrNmb = 0;
327
+          }
328
+
329
+
330
+	  // List the access restrictions for groups and users
331
+          if (restrNmb == 0) {
332
+
333
+              $("#phoneNmbrRestr").append("<tr><td><input type='text' class='restrAuthor' value='"+ crntadmDispName +"' disabled></td><td><select id='rstphn-"+ restrNmb +"' class='restrPhoneNmbr'></select></td><td><div id='rstgrp-"+ restrNmb +"' class='restrGroups'></div></td><td><div id='showGrps-"+ restrNmb +"' class='showAllGroups'><img src='/apps/sms_relentless/img/group.svg' style='cursor:pointer' title='Show all groups'></div></td><td><div id='rstusr-"+ restrNmb +"' class='restrUsers'></div></td><td><div id='showUsr-"+ restrNmb +"' class='showAllUsers'><img src='/apps/sms_relentless/img/user.svg' style='cursor:pointer' title='Show all users'></div></td><td><img id='rmRow-"+ restrNmb +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:6px 7px 0px 6px;'></td><td><input type='submit' id='rstsave-"+ restrNmb +"' class='saveRestrictions' value='Save' title='Save Row' /></td></tr>");
334
+	      $("#phoneNmbrRestr").append("<div><img id='addRestrRow' src='/apps/sms_relentless/img/add.svg' title='Add Row'></div>");
335
+
336
+          } else {
337
+
338
+	      for (k = 0; k < restrNmb; k++) {
339
+
340
+                   if (allRestrictions[k].groups) {
341
+                       var groupsfdbpre = allRestrictions[k].groups.split("|");
342
+                       var groupsfdb = "";
343
+                       for (var g = 0; g < groupsfdbpre.length; g++) {
344
+                            groupsfdb += "<div class='selectedGrps'>"+ groupsfdbpre[g] +"<img id='rmvGrp-"+ groupsfdbpre[g] +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>";
345
+                       }
346
+                   } else { var groupsfdb = ""; }
347
+
348
+                   if (allRestrictions[k].users) {
349
+                       var usersfdbpre = allRestrictions[k].users.split("|");
350
+                       var usersfdb = "";
351
+                       for (var u = 0; u < usersfdbpre.length; u++) {
352
+                            usersfdb += "<div class='selectedUsrs'>"+ usersfdbpre[u] +"<img id='rmvUsr-"+ usersfdbpre[u] +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>";
353
+                       }
354
+                   } else { var usersfdb = ""; }
355
+
356
+		   $("#phoneNmbrRestr").append("<tr><td><input type='text' class='restrAuthor' value='"+ allRestrictions[k].saved_by_dsplname +"' disabled></td><td><select id='rstphn-"+ k +"' class='restrPhoneNmbr' style='pointer-events:none'><option selected>"+ allRestrictions[k].phone_number +"</option></select></td><td><div id='rstgrp-"+ k +"' class='restrGroups'>"+ groupsfdb +"</div></td><td><div id='showGrps-"+ k +"' class='showAllGroups'><img src='/apps/sms_relentless/img/group.svg' style='cursor:pointer' title='Show all groups'></div></td><td><div id='rstusr-"+ k +"' class='restrUsers'>"+ usersfdb +"</div></td><td><div id='showUsr-"+ k +"' class='showAllUsers'><img src='/apps/sms_relentless/img/user.svg' style='cursor:pointer' title='Show all users'></div></td><td><img id='rmRow-"+ k +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:6px 7px 0px 6px;'></td><td><input type='submit' id='rstsave-"+ k +"' class='saveRestrictions' value='Edit' title='Edit Row' /></td></tr>");
357
+              }
358
+              $("#phoneNmbrRestr").append("<div><img id='addRestrRow' src='/apps/sms_relentless/img/add.svg' title='Add Row'></div>");
359
+          }
360
+
361
+
362
+          // Get the available phone numbers from all providers associated with the access keys entered on the Settings page
363
+          $("#phoneNumberTh").addClass('icon-loading');
364
+          var getnumbersUrl = OC.generateUrl("/apps/sms_relentless/user/getsmsnumbers");
365
+          var numbersListItems = '';
366
+
367
+	  $.ajax({
368
+		  url: getnumbersUrl + '/' + userid,
369
+		  type: "POST",
370
+		  cache: false,
371
+		  processData: false,
372
+		  contentType: false,
373
+		  success: function(currentnmbrs) {
374
+
375
+                                    $("#phoneNumberTh").removeClass('icon-loading');
376
+
377
+				    // Create a list with all the available phone numbers
378
+                                    numbersListItems = "<option value='' selected>Select phone number</option>";
379
+
380
+				    $.each(currentnmbrs, function(key, indsmsnmb) {
381
+					   numbersListItems += "<option value='"+ indsmsnmb +"'>"+ indsmsnmb +"</option>";
382
+				    });
383
+
384
+				    if (restrNmb == 0) { var indRow = 0; } else { var indRow = parseInt(restrNmb + 1); }
385
+
386
+				    // Append the list of available phone numbers
387
+				    $("#rstphn-"+ indRow).empty();
388
+				    $("#rstphn-"+ indRow).append(numbersListItems);
389
+        
390
+		  },
391
+		  error: function() {
392
+                                    $("#phoneNumberTh").removeClass('icon-loading'); 
393
+                                    showAlert("Error while attempting to retrieve the available phone numbers!");
394
+                  }
395
+          });
396
+
397
+
398
+          function showLists() {
399
+
400
+              // Append the list of available groups to the restrictions table
401
+              $('[id^="showGrps-"]').click(function() {
402
+                 var crtnmbr = $(this).attr("id").replace("showGrps-", "");
403
+                 $("#grpL-"+ crtnmbr).remove();
404
+                 $("#showGrps-"+ crtnmbr).append("<div id='grpL-"+ crtnmbr +"' class='grpsList'>"+ grpsListItems +"</div>");
405
+                 $("#adminOverlay").remove();
406
+                 $("#app-content").append("<div id='adminOverlay'></div>");
407
+                 $("#adminOverlay").css({ "width" : parseInt($("#sms_relentless_adm").width() + 400) +"px", "height" : $("#sms_relentless_adm").height() +"px" });
408
+
409
+                 $("#adminOverlay").click(function() { 
410
+                    $("#adminOverlay").remove(); 
411
+                    $("#grpL-"+ crtnmbr).remove(); 
412
+                    $("#usrL-"+ crtnmbr).remove();
413
+                 });
414
+
415
+                 // Select a group
416
+                 $(".groupsList").click(function() {
417
+                    var slctdGrp = $(this).text();
418
+                    $("#grpL-"+ crtnmbr).remove();
419
+                    var addedTxtgrp = $("#rstgrp-"+ crtnmbr).text();
420
+
421
+                    if (addedTxtgrp.indexOf(slctdGrp) == -1) {
422
+                        $("#rstgrp-"+ crtnmbr).append("<div class='selectedGrps'>"+ slctdGrp +"<img id='rmvGrp-"+ slctdGrp +"' class='removeGroup' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this group'></div>");
423
+                    } else { showAlert("That group has already been added!"); }
424
+
425
+                    // Remove a group from list
426
+                    $('[id^="rmvGrp-"]').click(function() {
427
+                       $(this).closest(".selectedGrps").remove();
428
+                    });
429
+                 });
430
+
431
+              });
432
+
433
+              // Append the list of available users to the restrictions table
434
+              $('[id^="showUsr-"]').click(function() {
435
+
436
+                 var ctusrnmbr = $(this).attr("id").replace("showUsr-", "");
437
+                 $("#usrL-"+ ctusrnmbr).remove();
438
+                 $("#showUsr-"+ ctusrnmbr).append("<div id='usrL-"+ ctusrnmbr +"' class='usrsList'>"+ usersListItems +"</div>");
439
+                 $("#adminOverlay").remove();
440
+                 $("#app-content").append("<div id='adminOverlay'></div>");
441
+                 $("#adminOverlay").css({ "width" : parseInt($("#sms_relentless_adm").width() + 400) +"px", "height" : $("#sms_relentless_adm").height() +"px" });
442
+
443
+                 $("#adminOverlay").click(function() { 
444
+                    $("#adminOverlay").remove(); 
445
+                    $("#grpL-"+ ctusrnmbr).remove(); 
446
+                    $("#usrL-"+ ctusrnmbr).remove();
447
+                 });
448
+
449
+                 // Select a user
450
+                 $(".usersList").click(function() {
451
+                    var slctdUsr = $(this).text();
452
+                    var addedTxtusr = $("#rstusr-"+ ctusrnmbr).text();
453
+
454
+                    if (addedTxtusr.indexOf(slctdUsr) == -1) {
455
+                        $("#rstusr-"+ ctusrnmbr).append("<div class='selectedUsrs'>"+ slctdUsr +"<img id='rmvUsr-"+ slctdUsr +"' class='removeUser' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this user'></div>");
456
+                    } else { showAlert("That user has already been added!"); }
457
+
458
+                    // Remove a user from list
459
+                    $('[id^="rmvUsr-"]').click(function() {
460
+                       $(this).closest(".selectedUsrs").remove();
461
+                    });
462
+                 });
463
+
464
+              });
465
+
466
+              // Remove a group from the list 
467
+              $('[id^="rmvGrp-"]').click(function() {
468
+                 $(this).closest(".selectedGrps").remove();
469
+              });
470
+
471
+              // Remove a user from the list
472
+              $('[id^="rmvUsr-"]').click(function() {
473
+                 $(this).closest(".selectedUsrs").remove();
474
+              });
475
+
476
+          }
477
+          showLists();
478
+
479
+
480
+          // Save the data
481
+          function saveRestrRow() {
482
+             $('[id^="rstsave-"]').unbind("click");
483
+             $('[id^="rstsave-"]').click(function(event) {
484
+
485
+                 event.preventDefault();
486
+                 var crntrwnmbr = $(this).attr("id").replace("rstsave-", "");
487
+
488
+                 if ($(this).attr("value") == "Save") {
489
+
490
+                     var phoneNmbr = $("#rstphn-"+ crntrwnmbr).val();
491
+                     var slctdGroups = [];
492
+                     $("#rstgrp-"+ crntrwnmbr +" .selectedGrps").each(function() {
493
+                        slctdGroups.push($(this).text());
494
+                     });
495
+                     var slctdUsers = [];
496
+                     $("#rstusr-"+ crntrwnmbr +" .selectedUsrs").each(function() {
497
+                        slctdUsers.push($(this).text());
498
+                     });
499
+
500
+                     if (phoneNmbr != '') {
501
+
502
+                       if (slctdGroups.length > 0 || slctdUsers.length > 0) {
503
+
504
+                         var saveRestrUrl = OC.generateUrl('/apps/sms_relentless/user/updatenumberrestrictions');
505
+
506
+                         var datatosend = { 
507
+                              userId: userid,
508
+                              savedByDsplname: crntadmDispName,
509
+                              phoneNumber: phoneNmbr,
510
+                              groups: slctdGroups,
511
+                              users: slctdUsers
512
+                         };
513
+
514
+	                 $.ajax({
515
+	                   method: 'PUT',
516
+	                   url: saveRestrUrl + '/' + userid,
517
+	                   contentType: 'application/json',
518
+	                   data: JSON.stringify(datatosend),
519
+                           success: function(messagetosend) {
520
+                                        if (messagetosend == 'success') {
521
+                                            showAlert('The restrictions have been successfully saved to the database!');
522
+                                        } else {
523
+                                            showAlert('Error while trying to save the restrictions!');
524
+                                        }
525
+                           },
526
+	                   error: function() {
527
+		                        showAlert('Error while attempting to save the restrictions! You can check the Nextcloud log to find more details about this issue.');
528
+	                   }
529
+	                 });
530
+
531
+                       } else { showAlert("You must select at least a group or a user in order to restrict the use of a phone number."); return; }
532
+
533
+                     } else { showAlert("Please select a phone number!"); return; }
534
+
535
+                     $(this).attr("value", "Edit");
536
+
537
+                } else {
538
+
539
+                     $("#rstsave-"+ crntrwnmbr).attr("value", "Save");
540
+                }
541
+
542
+             });
543
+          }
544
+          saveRestrRow();
545
+
546
+          // Remove a row
547
+          function removeRestrRow() {
548
+
549
+               $('[id^="rmRow-"]').click(function() {
550
+
551
+                  var slctRowRmv = $(this).attr("id").replace("rmRow-", "");
552
+                  var crntPhNmbr = $("#rstphn-"+ slctRowRmv).val();
553
+
554
+                  confirmAlert("Do you really want to remove this row from the database ?");
555
+
556
+                  $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
557
+
558
+                  $("#confirmOk").click(function() {
559
+
560
+                      $("#alertMsgOverlay").remove();
561
+                      $("#alertConfMessage").remove();
562
+
563
+                      var rmvRestrUrl = OC.generateUrl('/apps/sms_relentless/user/removenumberrestrictions');
564
+                      $.ajax({
565
+                           url: rmvRestrUrl + '/' + userid,
566
+                           method: "POST",
567
+                           dataType: "text",
568
+                           data: { phoneNumber: crntPhNmbr },
569
+                           success: function(delresult) {
570
+
571
+                                             if (delresult.indexOf("success") > -1) {
572
+                                                 showAlert("The restriction has been removed successfully!");
573
+                                                 $("#rstphn-"+ slctRowRmv).closest("tr").remove();
574
+                                             } else {
575
+                                                 showAlert("Error while trying to remove restriction data!");
576
+                                             }
577
+                           },
578
+                           error: function() { showAlert("Error while attempting to remove restriction data! You can check the Nextcloud log to find more details about this issue."); }
579
+                       });
580
+                  });
581
+               });
582
+          }
583
+          removeRestrRow();
584
+
585
+          // Add a new row
586
+	  $("#addRestrRow").click(function() {
587
+              if ($("#phoneNmbrRestr").find("tr:last-child").find(".restrPhoneNmbr").length > 0) {
588
+                  var lastrstAuth = $("#phoneNmbrRestr").find("tr:last-child").find(".restrPhoneNmbr").attr("id").replace("rstphn-", "");
589
+                  var indRowAdd = parseInt(lastrstAuth + 1);
590
+              } else { var indRowAdd = 0; }
591
+	      $("#phoneNmbrRestr").append("<tr><td><input type='text' class='restrAuthor' value='"+ crntadmDispName +"' disabled></td><td><select id='rstphn-"+ indRowAdd +"' class='restrPhoneNmbr'>"+ numbersListItems +"</select></td><td><div id='rstgrp-"+ indRowAdd +"' class='restrGroups'></div></td><td><div id='showGrps-"+ indRowAdd +"' class='showAllGroups'><img src='/apps/sms_relentless/img/group.svg' style='cursor:pointer' title='Show all groups'></div></td><td><div id='rstusr-"+ indRowAdd +"' class='restrUsers'></div></td><td><div id='showUsr-"+ indRowAdd +"' class='showAllUsers'><img src='/apps/sms_relentless/img/user.svg' style='cursor:pointer' title='Show all users'></div></td><td><img id='rmRow-"+ indRowAdd +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:6px 7px 0px 6px;'></td><td><input type='submit' id='rstsave-"+ indRowAdd +"' class='saveRestrictions' value='Save' title='Save Row' /></td></tr>");
592
+              showLists();
593
+              saveRestrRow();
594
+              removeRestrRow();
595
+
596
+              // Check if the same phone number has been already restricted
597
+              $("#rstphn-"+ indRowAdd).change(function() {
598
+                 var selectedPhNmbr = $("#rstphn-"+ indRowAdd).val();
599
+                 var allPHoneRestr = $("#phoneNmbrRestr").find("tr").find(".restrPhoneNmbr");
600
+                 var phNmbrChck = 0;
601
+                 allPHoneRestr.each(function() {
602
+                    var slctdphnmbr = ($(this).val())? $(this).val() : $(this).text();
603
+                    if (selectedPhNmbr == slctdphnmbr) { phNmbrChck++; }
604
+                 });
605
+
606
+                 if (phNmbrChck == 2) {
607
+                     showAlert("This phone number is already in the list of restricted phone numbers. Please edit its own row, or choose a different phone number to restrict.");
608
+                     $(this).val('');
609
+                     return;
610
+                 }
611
+              });
612
+	  });
613
+
614
+     },
615
+     error: function() {
616
+                showAlert('Error while getting the admin settings! You can check the Nextcloud log to find more details about this issue.');
617
+     }
618
+  });
619
+
620
+
621
+
622
+  // Save admin settings
623
+  function randomStr(strlength) {
624
+        var fintext = "";
625
+        var keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
626
+        for (var i = 0; i < strlength; i++) {
627
+             fintext += keyspace.charAt(Math.floor(Math.random() * keyspace.length));
628
+        }
629
+        return fintext;
630
+  }
631
+
632
+  $("#generate_tel_rcpt").on("click", function(event) {
633
+
634
+     var teltokenrec = randomStr(70);
635
+     var telnyxwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstel?telrecparam=') + teltokenrec;
636
+
637
+     $("#telapi_url_rec").val(telnyxwhurlrec);
638
+  });
639
+
640
+  $("#copyToClipboardtel").on("click", function(event) {
641
+     var $tempEl = $("<input>");
642
+     $("body").append($tempEl);
643
+     $tempEl.val($("#telapi_url_rec").val()).select();
644
+     document.execCommand("Copy");
645
+     $tempEl.remove();
646
+     showAlert("The link has been copied to your clipboard!");
647
+  });
648
+
649
+  $("#generate_tel_delrcpt").on("click", function(event) {
650
+
651
+     var teltoken = randomStr(70);
652
+     var telnyxwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytel?teldrparam=') + teltoken;
653
+
654
+     $("#telapi_url").val(telnyxwhurl);
655
+  });
656
+
657
+  $("#generate_nex_rcpt").on("click", function(event) {
658
+
659
+     var plivotokenrec = randomStr(70);
660
+     var plivowhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsnex?plivorecparam=') + plivotokenrec;
661
+
662
+     $("#nexapi_url_rec").val(plivowhurlrec);
663
+  });
664
+
665
+  $("#copyToClipboardnex").on("click", function(event) {
666
+     var $tempElpl = $("<input>");
667
+     $("body").append($tempElpl);
668
+     $tempElpl.val($("#nexapi_url_rec").val()).select();
669
+     document.execCommand("Copy");
670
+     $tempElpl.remove();
671
+     showAlert("The link has been copied to your clipboard!");
672
+  });
673
+
674
+  $("#generate_nex_delrcpt").on("click", function(event) {
675
+
676
+     var plivotoken = randomStr(70);
677
+     var plivodrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverynex?plivodrparam=') + plivotoken;
678
+
679
+     $("#nexapi_url").val(plivodrwhurl);
680
+  });
681
+
682
+  $("#generate_twil_rcpt").on("click", function(event) {
683
+
684
+     var twiltokenrec = randomStr(35);
685
+     var twilwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstwil?twilrecparam=') + twiltokenrec;
686
+
687
+     $("#twilapi_url_rec").val(twilwhurlrec);
688
+  });
689
+
690
+  $("#copyToClipboardtwil").on("click", function(event) {
691
+     var $tempElpl = $("<input>");
692
+     $("body").append($tempElpl);
693
+     $tempElpl.val($("#twilapi_url_rec").val()).select();
694
+     document.execCommand("Copy");
695
+     $tempElpl.remove();
696
+     showAlert("The link has been copied to your clipboard!");
697
+  });
698
+
699
+  $("#generate_twil_delrcpt").on("click", function(event) {
700
+
701
+     var twiltoken = randomStr(35);
702
+     var twildrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytwil?twildrparam=') + twiltoken;
703
+
704
+     $("#twilapi_url").val(twildrwhurl);
705
+  });
706
+
707
+  $("#generate_flow_rcpt").on("click", function(event) {
708
+
709
+     var flowtokenrec = randomStr(70);
710
+     var flowwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsflow?flowrecparam=') + flowtokenrec;
711
+
712
+     $("#flowapi_url_rec").val(flowwhurlrec);
713
+  });
714
+
715
+  $("#copyToClipboardflow").on("click", function(event) {
716
+     var $tempElpl = $("<input>");
717
+     $("body").append($tempElpl);
718
+     $tempElpl.val($("#flowapi_url_rec").val()).select();
719
+     document.execCommand("Copy");
720
+     $tempElpl.remove();
721
+     showAlert("The link has been copied to your clipboard!");
722
+  });
723
+
724
+  $("#generate_flow_delrcpt").on("click", function(event) {
725
+
726
+     var flowtoken = randomStr(70);
727
+     var flowdrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliveryflow?flowdrparam=') + flowtoken;
728
+
729
+     $("#flowapi_url").val(flowdrwhurl);
730
+  });
731
+
732
+
733
+  $("#save_admin_settings").on("click", function(event) {
734
+
735
+    event.preventDefault();
736
+    OC.msg.startAction('#smsr_save_msg', t('sms_relentless', 'Saved'));
737
+
738
+    var baseUrlsv = OC.generateUrl('/apps/sms_relentless/user/updateadminsettings');
739
+
740
+    var showallmsgs = 0;
741
+    if ($("#showallmessages").is(':checked')) {
742
+        showallmsgs = 1;
743
+    }
744
+
745
+    var telsenderinit = $("#tel_sender_name").val();
746
+    var telsenderproc = telsenderinit.replace(/[^A-Za-z 0-9]/g, '');
747
+
748
+    var nexsenderinit = $("#nex_sender_name").val();
749
+    var nexsenderproc = nexsenderinit.replace(/[^A-Za-z 0-9]/g, '');
750
+
751
+    var twilsenderinit = $("#twil_sender_name").val();
752
+    var twilsenderproc = twilsenderinit.replace(/[^A-Za-z 0-9]/g, '');
753
+
754
+    var datatosave = {
755
+                      userId: userid,
756
+                      telapiKey: $("#telapi_key").val(),
757
+                      telPubKey: $("#tel_pub_key").val(),
758
+                      telapiUrlRec: $("#telapi_url_rec").val(),
759
+                      telapiUrl: $("#telapi_url").val(),
760
+                      messagingProfileId: $("#messaging_profile_id").val(),
761
+                      nexapiKey: $("#nexapi_key").val(),
762
+                      nexapiSecret: $("#nexapi_secret").val(),
763
+                      nexapiUrlRec: $("#nexapi_url_rec").val(),
764
+                      nexapiUrl: $("#nexapi_url").val(),
765
+                      twilapiKey: $("#twilapi_key").val(),
766
+                      twilapiSecret: $("#twilapi_secret").val(),
767
+                      twilapiUrlRec: $("#twilapi_url_rec").val(),
768
+                      twilapiUrl: $("#twilapi_url").val(),
769
+                      flowapiKey: $("#flowapi_key").val(),
770
+                      flowapiSecret: $("#flowapi_secret").val(),
771
+                      flowapiUrlRec: $("#flowapi_url_rec").val(),
772
+                      flowapiUrl: $("#flowapi_url").val(),
773
+                      telSenderName: telsenderproc,
774
+                      nexSenderName: nexsenderproc,
775
+                      twilSenderName: twilsenderproc,
776
+                      showAllMessages: showallmsgs
777
+    };
778
+
779
+
780
+    $.ajax({
781
+       method: 'PUT',
782
+       url: baseUrlsv + '/' + userid,
783
+       contentType: 'application/json',
784
+       data: JSON.stringify(datatosave),
785
+       success: function() {
786
+       },
787
+       error: function() {
788
+            showAlert('Error while attempting to save the settings! You can check the Nextcloud log to find more details about this issue.');
789
+       }
790
+    });
791
+
792
+  });
793
+
794
+  function showAlert(alertText) {
795
+
796
+     let alertwnd = "<div id='alertMessage'>";
797
+     alertwnd += "<a id='closeAlertWnd' title='Close this window'></a>";
798
+     alertwnd += "<div id='alertTextWrap'>"+ alertText +"</div>";
799
+     alertwnd += "<input type='submit' id='alertOk' value='OK'>";
800
+     alertwnd += "</div>";
801
+
802
+     $("#content").append("<div id='alertMsgOverlay'></div>");
803
+     $("#content").append(alertwnd);
804
+
805
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
806
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
807
+     $("#alertMessage").css({ "top" : topDist, "left" : leftDist });
808
+
809
+     $("#closeAlertWnd").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
810
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
811
+     $("#alertOk").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
812
+  }
813
+
814
+  function confirmAlert(alertText) {
815
+
816
+     let alertwndcf = "<div id='alertConfMessage'>";
817
+     alertwndcf += "<a id='closeAlertWndcf' title='Close this window'></a>";
818
+     alertwndcf += "<div id='alertTextWrap'>"+ alertText +"</div>";
819
+     alertwndcf += "<div id='cancelOkWrap'><input type='submit' id='confirmCancel' value='Cancel'>";
820
+     alertwndcf += "<input type='submit' id='confirmOk' value='OK'></div>";
821
+     alertwndcf += "</div>";
822
+
823
+     $("#content").append("<div id='alertMsgOverlay'></div>");
824
+     $("#content").append(alertwndcf);
825
+
826
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
827
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
828
+     $("#alertConfMessage").css({ "top" : topDist, "left" : leftDist });
829
+
830
+     $("#closeAlertWndcf").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
831
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
832
+  }
833
+
834
+});
0 835
new file mode 100644
... ...
@@ -0,0 +1,331 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+$(document).ready(function() {
24
+
25
+    var userid = "<?php p($userId); ?>";
26
+
27
+    // Delete from the database all the received messages older than the specified period
28
+    $("#delOldrecSMS").on("click", function() {
29
+
30
+      var oldrecInterval = $("#oldrecSmsInterval").val();
31
+      var procoldrecint = oldrecInterval.replace(/[^0-9]/g, "");
32
+      var finaloldrecint = parseInt(procoldrecint);
33
+
34
+      if (finaloldrecint == "" || !$.isNumeric(finaloldrecint)) {
35
+          showAlert("Please enter the number of days in the box from above !");
36
+      } else {
37
+
38
+         var getRecUrl = OC.generateUrl("/apps/sms_relentless/user/getreceivedtablefordel");
39
+         $('#smstables').addClass('icon-loading');
40
+
41
+         $.ajax({
42
+             url: getRecUrl + '/' + userid,
43
+             method: "GET",
44
+             dataType:'text',
45
+             success: function(recinfoFromDB) {
46
+
47
+                var parsedinfo = $.parseJSON(recinfoFromDB);
48
+
49
+                if (parsedinfo == "not permitted") {
50
+
51
+                    showAlert("Only admins can remove old messages using this option!");
52
+                    $('#smstables').removeClass('icon-loading');
53
+                    return;
54
+
55
+                } else {
56
+
57
+                    var recmessagedbIDs = [];
58
+                    var oldrecRows = [];
59
+                    oldrecRows.push("id,user_id,message_id,date,from,to,message,author_displayname,internal_sender\r\n");
60
+
61
+                    var targetdate = new Date(new Date().setDate(new Date().getDate() - finaloldrecint));
62
+
63
+                    for (var j = 0; j < parsedinfo.length; j++) {
64
+                         var firstdate = parsedinfo[j].date;
65
+                         var secdate = firstdate.split(" ");
66
+                         var thirddate = secdate[0].split("-");
67
+                         var fourthdate = secdate[1].split(":");
68
+                         var pastdate = new Date(thirddate[0],(thirddate[1]-1),thirddate[2],fourthdate[0],fourthdate[1],fourthdate[2]);
69
+
70
+                         if (pastdate < targetdate) {
71
+                             recmessagedbIDs.push(parsedinfo[j].id);
72
+
73
+                             // Check if the message contains characters that must be escaped in the final CSV file
74
+                             if ((parsedinfo[j].message.indexOf(',') > -1 || /\r|\n|\r\n/.exec(parsedinfo[j].message)) && parsedinfo[j].message.indexOf('"') === -1) {
75
+                                 var messageproc = '"'+ parsedinfo[j].message + '"';
76
+                             } else if (parsedinfo[j].message.indexOf('"') > -1) {
77
+                                 var messageproc = '"'+ parsedinfo[j].message.replace(/"/g,'""') + '"';
78
+                             }
79
+
80
+                             oldrecRows.push(parsedinfo[j].id + ',' + parsedinfo[j].user_id + ',' + parsedinfo[j].message_id + ',' + parsedinfo[j].date + ',' + parsedinfo[j].from + ',' + parsedinfo[j].to + ',' + messageproc + ',' + parsedinfo[j].author_displayname + ',' + parsedinfo[j].internal_sender + '\r\n');
81
+                         }
82
+                    }
83
+
84
+
85
+                    if (oldrecRows.length == 1) {
86
+
87
+                        showAlert("No messages will be deleted since there are no messages older than " + finaloldrecint + " days.");
88
+
89
+                    // Save in a '.csv' file all the received messages that will be deleted from the database, then delete them
90
+                    } else {
91
+
92
+                        confirmAlert("Are you sure you want to delete all the received messages older than " + finaloldrecint + " days ?");
93
+
94
+                        $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
95
+
96
+                        $("#confirmOk").click(function() {
97
+
98
+                            $("#alertMsgOverlay").remove();
99
+                            $("#alertConfMessage").remove();
100
+
101
+                            var deloldrecRowsUrl = OC.generateUrl("/apps/sms_relentless/user/saveoldrecrows");
102
+
103
+                            $.ajax({
104
+                                url: deloldrecRowsUrl + '/' + userid,
105
+                                method: "POST",
106
+                                dataType:'text',
107
+                                data: { oldrecRows: oldrecRows },
108
+                                success: function(savecheck) {
109
+
110
+                                            // Delete received messages from the database
111
+                                            var delrecDbSmsUrl = OC.generateUrl("/apps/sms_relentless/user/removerecrows");
112
+
113
+                                            if (savecheck == 1) {
114
+
115
+                                                $.ajax({
116
+                                                       url: delrecDbSmsUrl + '/' + userid,
117
+                                                       method: "POST",
118
+                                                       dataType:'text',
119
+                                                       data: { recmessagedbIDs: recmessagedbIDs },
120
+                                                       success: function() {
121
+                                                            showAlert((oldrecRows.length - 1)+" rows have been successfully saved in the 'SMS_relentless/removed_received_messages' directory and then deleted from the database !");
122
+                                                            $('#smstables').removeClass('icon-loading');
123
+                                                       },
124
+                                                       error: function() {
125
+                                                            showAlert("There was an error while deleting the messages older than the specified period!");
126
+                                                            $('#smstables').removeClass('icon-loading');
127
+                                                       }
128
+                                                });
129
+
130
+                                            } else { showAlert("There was an error while saving the messages older than the specified period!"); }
131
+
132
+                                            $('#smstables').removeClass('icon-loading');
133
+                                },
134
+                                error: function() {
135
+                                     showAlert("There was an error while saving and/or deleting the messages older than the specified period!");
136
+                                     $('#smstables').removeClass('icon-loading');
137
+                                }
138
+                            });
139
+                        });
140
+                    }
141
+                }
142
+             },
143
+             error: function() {
144
+                showAlert("An error occurred while getting data from the database!");
145
+                $('#smstables').removeClass('icon-loading');
146
+             }
147
+         });
148
+
149
+      }
150
+
151
+    });
152
+
153
+
154
+    // Delete from the database all the sent messages older than the specified period
155
+    $("#delOldsentSMS").on("click", function() {
156
+
157
+      var oldsentInterval = $("#oldsentSmsInterval").val();
158
+      var procoldsentint = oldsentInterval.replace(/[^0-9]/g, "");
159
+      var finaloldsentint = parseInt(procoldsentint);
160
+
161
+      if (finaloldsentint == "" || !$.isNumeric(finaloldsentint)) {
162
+          showAlert("Please enter the number of days in the box above !");
163
+      } else {
164
+
165
+         var getSentUrl = OC.generateUrl("/apps/sms_relentless/user/getsenttablefordel");
166
+         $('#smstables').addClass('icon-loading');
167
+
168
+         $.ajax({
169
+             url: getSentUrl + '/' + userid,
170
+             method: "GET",
171
+             dataType:'text',
172
+             success: function(sentinfoFromDB) {
173
+
174
+                var parsedsentinfo = $.parseJSON(sentinfoFromDB);
175
+
176
+                if (parsedsentinfo == "not permitted") {
177
+
178
+                    showAlert("Only admins can remove old messages using this option!");
179
+                    $('#smstables').removeClass('icon-loading');
180
+                    return;
181
+
182
+                } else {
183
+
184
+                    var sentmessagedbIDs = [];
185
+                    var oldsentRows = [];
186
+                    oldsentRows.push("id,user_id,message_id,date,from,to,network,price,status,deliveryreceipt,message,author_displayname\r\n");
187
+
188
+                    var senttargetdate = new Date(new Date().setDate(new Date().getDate() - finaloldsentint));
189
+
190
+                    for (var j = 0; j < parsedsentinfo.length; j++) {
191
+                         var firstdate = parsedsentinfo[j].date;
192
+                         var secdate = firstdate.split(" ");
193
+                         var thirddate = secdate[0].split("-");
194
+                         var fourthdate = secdate[1].split(":");
195
+                         var sentpastdate = new Date(thirddate[0],(thirddate[1]-1),thirddate[2],fourthdate[0],fourthdate[1],fourthdate[2]);
196
+
197
+                         if (sentpastdate < senttargetdate) {
198
+                             sentmessagedbIDs.push(parsedsentinfo[j].id);
199
+
200
+                             // Check if the message contains characters that must be escaped in the final CSV file
201
+                             if ((parsedsentinfo[j].message.indexOf(',') > -1 || /\r|\n|\r\n/.exec(parsedsentinfo[j].message)) && parsedsentinfo[j].message.indexOf('"') === -1) {
202
+                                 var messageproc = '"'+ parsedsentinfo[j].message + '"';
203
+                             } else if (parsedsentinfo[j].message.indexOf('"') > -1) {
204
+                                 var messageproc = '"'+ parsedsentinfo[j].message.replace(/"/g,'""') + '"';
205
+                             }
206
+
207
+                             if ((parsedsentinfo[j].network.indexOf(',') > -1 || /\r|\n|\r\n/.exec(parsedsentinfo[j].network)) && parsedsentinfo[j].network.indexOf('"') === -1) {
208
+                                 var networkproc = '"'+ parsedsentinfo[j].network + '"';
209
+                             } else if (parsedsentinfo[j].network.indexOf('"') > -1) {
210
+                                 var networkproc = '"'+ parsedsentinfo[j].network.replace(/"/g,'""') + '"';
211
+                             }
212
+
213
+                             if ((parsedsentinfo[j].status.indexOf(',') > -1 || /\r|\n|\r\n/.exec(parsedsentinfo[j].status)) && parsedsentinfo[j].status.indexOf('"') === -1) {
214
+                                 var statusproc = '"'+ parsedsentinfo[j].status + '"';
215
+                             } else if (parsedsentinfo[j].status.indexOf('"') > -1) {
216
+                                 var statusproc = '"'+ parsedsentinfo[j].status.replace(/"/g,'""') + '"';
217
+                             }
218
+
219
+                             oldsentRows.push(parsedsentinfo[j].id + ',' + parsedsentinfo[j].user_id + ',' + parsedsentinfo[j].message_id + ',' + parsedsentinfo[j].date + ',' + parsedsentinfo[j].from + ',' + parsedsentinfo[j].to + ',' + networkproc + ',' + parsedsentinfo[j].price + ',' + statusproc + ',' + parsedsentinfo[j].deliveryreceipt + ',' + messageproc + ',' + parsedsentinfo[j].author_displayname + '\r\n');
220
+                         }
221
+                    }
222
+
223
+
224
+                    if (oldsentRows.length == 1) {
225
+
226
+                        showAlert("No messages will be deleted since there are no messages older than " + finaloldsentint + " days.");
227
+
228
+                    // Save in a '.csv' file all the sent messages that will be deleted from the database, then delete them
229
+                    } else {
230
+
231
+                          confirmAlert("Are you sure you want to delete all the sent messages older than " + finaloldsentint + " days ?");
232
+
233
+                          $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
234
+
235
+                          $("#confirmOk").click(function() {
236
+
237
+                              $("#alertMsgOverlay").remove();
238
+                              $("#alertConfMessage").remove();
239
+
240
+                              var deloldsentRowsUrl = OC.generateUrl("/apps/sms_relentless/user/saveoldsentrows");
241
+
242
+                              $.ajax({
243
+                                  url: deloldsentRowsUrl + '/' + userid,
244
+                                  method: "POST",
245
+                                  dataType:'text',
246
+                                  data: { oldsentRows: oldsentRows },
247
+                                  success: function(savesentcheck) {
248
+
249
+                                            // Delete sent messages from the database
250
+                                            var delsentDbSmsUrl = OC.generateUrl("/apps/sms_relentless/user/removesentrows");
251
+
252
+                                            if (savesentcheck == 1) {
253
+
254
+                                                $.ajax({
255
+                                                       url: delsentDbSmsUrl + '/' + userid,
256
+                                                       method: "POST",
257
+                                                       dataType:'text',
258
+                                                       data: { sentmessagedbIDs: sentmessagedbIDs },
259
+                                                       success: function() {
260
+                                                            showAlert((oldsentRows.length - 1) + " rows have been successfully saved in the 'SMS_relentless/removed_sent_messages' directory and then deleted from the database !");
261
+                                                            $('#smstables').removeClass('icon-loading');
262
+                                                       },
263
+                                                       error: function() {
264
+                                                            showAlert("There was an error while deleting the messages older than the specified period!");
265
+                                                            $('#smstables').removeClass('icon-loading');
266
+                                                       }
267
+                                                });
268
+
269
+                                            } else { showAlert("There was an error while saving the messages older than the specified period!"); }
270
+
271
+                                            $('#smstables').removeClass('icon-loading');
272
+                                  },
273
+                                  error: function() {
274
+                                     showAlert("There was an error while saving and/or deleting the messages older than the specified period!");
275
+                                     $('#smstables').removeClass('icon-loading');
276
+                                  }
277
+                              });
278
+                          });
279
+                    }
280
+                }  
281
+
282
+             },
283
+             error: function() {
284
+                showAlert("An error occurred while getting data from the database!");
285
+                $('#smstables').removeClass('icon-loading');
286
+             }
287
+         });
288
+      }
289
+
290
+    });
291
+
292
+    function showAlert(alertText) {
293
+
294
+       let alertwnd = "<div id='alertMessage'>";
295
+       alertwnd += "<a id='closeAlertWnd' title='Close this window'></a>";
296
+       alertwnd += "<div id='alertTextWrap'>"+ alertText +"</div>";
297
+       alertwnd += "<input type='submit' id='alertOk' value='OK'>";
298
+       alertwnd += "</div>";
299
+
300
+       $("#content").append("<div id='alertMsgOverlay'></div>");
301
+       $("#content").append(alertwnd);
302
+
303
+       let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
304
+       let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
305
+       $("#alertMessage").css({ "top" : topDist, "left" : leftDist });
306
+
307
+       $("#closeAlertWnd").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
308
+       $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
309
+       $("#alertOk").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
310
+    }
311
+
312
+    function confirmAlert(alertText) {
313
+
314
+       let alertwndcf = "<div id='alertConfMessage'>";
315
+       alertwndcf += "<a id='closeAlertWndcf' title='Close this window'></a>";
316
+       alertwndcf += "<div id='alertTextWrap'>"+ alertText +"</div>";
317
+       alertwndcf += "<div id='cancelOkWrap'><input type='submit' id='confirmCancel' value='Cancel'>";
318
+       alertwndcf += "<input type='submit' id='confirmOk' value='OK'></div>";
319
+       alertwndcf += "</div>";
320
+
321
+       $("#content").append("<div id='alertMsgOverlay'></div>");
322
+       $("#content").append(alertwndcf);
323
+
324
+       let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
325
+       let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
326
+       $("#alertConfMessage").css({ "top" : topDist, "left" : leftDist });
327
+
328
+       $("#closeAlertWndcf").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
329
+       $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
330
+    }
331
+});
0 332
new file mode 100644
... ...
@@ -0,0 +1,1617 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+  var userid = "<?php p($userId); ?>";
24
+  var charcolorthr = 160;
25
+  var textread = '';
26
+  var providerUsed = '';
27
+  var receiversNumbers = [];
28
+  var waittime = 1000;
29
+  var selectedid = '';
30
+  var isMMS = 0;
31
+  var n = 1;
32
+  var textsizekb = 0;
33
+  var uploadedtomms = [];
34
+  var msgtotalflsize = 0;
35
+  var readtxtfile = [];
36
+  var readjpg = [];
37
+  var readpng = [];
38
+  var readgif = [];
39
+  var readbmp = [];
40
+  var readtif = [];
41
+  var readmp4 = [];
42
+  var chosenProvider = '';
43
+  var chosenProvFullName = '';
44
+  var infonotecontent = '';
45
+  var validExtensions = [];
46
+  var maximumsize = 750;
47
+  var maxsizenonimage = 600;
48
+  var maximumfilenumber = 10;
49
+  var maximumsizeinit = 750;
50
+
51
+  // Adjust the path, so that the uploaded pdf files can be previewed while Nextcloud is served on a subdomain or on a subdirectory, by Nginx or by Apache
52
+  var locHref = window.location.href;
53
+  var pathSplit = locHref.split('/');
54
+  var firstPathEl = '';
55
+  if (pathSplit.length == 7) { firstPathEl = '/' + pathSplit[3]; }
56
+
57
+
58
+  // Get the available phone numbers associated with the API keys saved on the Settings page
59
+  $("#smsnumbersdiv").addClass('icon-loading');
60
+
61
+  var getsmsnumbersUrl = OC.generateUrl("/apps/sms_relentless/user/getsmsnumbers");
62
+
63
+  $.ajax({
64
+          url: getsmsnumbersUrl + '/' + userid,
65
+          type: "POST",
66
+          data: { userid: userid },
67
+          cache: false,
68
+          processData: false,
69
+          contentType: false,
70
+          success: function(currentnmbrs) {
71
+
72
+                     $('#currentsmsnmbrs').empty();
73
+
74
+                     if (currentnmbrs.length > 1) {
75
+
76
+                         $('#currentsmsnmbrs').append("<option value='' class='optselectsmsnb' selected disabled>Choose an ID</option>");
77
+
78
+                         $.each(currentnmbrs, function(key, valsmsnmb) {
79
+                                $('#currentsmsnmbrs').append("<option value='"+ valsmsnmb +"' class='optselectsmsnb'>"+ valsmsnmb +"</option>");
80
+                         });
81
+
82
+                         // Append the available providers to the 'see balance' drop-down list
83
+                         var providerNm = [];
84
+                         for (var n = 0; n < currentnmbrs.length; n++) {
85
+
86
+                              var provfirstchr = currentnmbrs[n].split(": ")[0];
87
+                              if (provfirstchr == "Tx") {
88
+                                  if (providerNm.indexOf("Telnyx") === -1) {
89
+                                      providerNm.push("Telnyx");
90
+                                      $("#smsprovider").append("<option value='Telnyx' class='selectsmsprov'>Telnyx</option>");
91
+                                  }
92
+                              } else if (provfirstchr == "Pl") {
93
+                                  if (providerNm.indexOf("Plivo") === -1) {
94
+                                      providerNm.push("Plivo");
95
+                                      $("#smsprovider").append("<option value='Plivo' class='selectsmsprov'>Plivo</option>");
96
+                                  }
97
+                              } else if (provfirstchr == "Tw") {
98
+                                  if (providerNm.indexOf("Twilio") === -1) {
99
+                                      providerNm.push("Twilio");
100
+                                      $("#smsprovider").append("<option value='Twilio' class='selectsmsprov'>Twilio</option>");
101
+                                  }
102
+                              } else if (provfirstchr == "Fl") {
103
+                                  if (providerNm.indexOf("Flowroute") === -1) {
104
+                                      providerNm.push("Flowroute");
105
+                                      $("#smsprovider").append("<option value='Flowroute' class='selectsmsprov'>Flowroute</option>");
106
+                                  }
107
+                              }
108
+                         }
109
+
110
+                     } else if (currentnmbrs.length == 1) {
111
+
112
+                                $('#currentsmsnmbrs').append("<option value='"+ currentnmbrs[0] +"' class='optselectsmsnb' selected disabled>"+ currentnmbrs[0] +"</option>");
113
+
114
+                                selectedid = currentnmbrs[0];
115
+
116
+                                var unqprovider = currentnmbrs[0].split(": ")[0];
117
+
118
+                                if (unqprovider == 'Tx') {
119
+
120
+					  validExtensions = ["jpg", "jpeg", "png", "gif", "mp3", "ogg", "amr", "mp4", "3gpp", "pdf", "vcf", "vcard", "txt"];
121
+					  // Maximum size of message text + files in KB
122
+					  maximumsize = 1024;
123
+					  maximumsizeinit = 1024;
124
+					  maxsizenonimage = 600;
125
+					  maximumfilenumber = 10;
126
+					  chosenProvFullName = "Telnyx";
127
+					  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Telnyx, if you send only jpeg/jpg, png \
128
+						             or gif files, the size of all the files plus the size of the text should be \
129
+						             <a href='https://support.telnyx.com/en/articles/4450150-faqs-about-mms-at-telnyx' style='color:#1b60ba' target='_blank' \
130
+						             rel='noreferrer noopener'>1024 KB</a> or less. If you send files of other formats, the total size of the files plus the size of the text should \
131
+						             be 600 KB or less. Allowed formats are jpeg/jpg, png, gif, mp3, ogg, amr, mp4, 3gpp, pdf, vcf, vcard and txt. By default, Telnyx accounts are \
132
+						             limited to <a href='https://support.telnyx.com/en/articles/3102823-mms-sending-and-receiving' style='color:#1b60ba' target='_blank' \
133
+						             rel='noreferrer noopener'>1 MMS message per second</a>. Deliverability of MMS messages depends on the carrier and device of the receiver. \
134
+						             Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending jpeg/jpg, png or \
135
+						             gif files, with a total message size of 600 KB or less. Telnyx allows sending MMS messages only from US or Canadian phone numbers to other US \
136
+						             or Canadian phone numbers. Although all the specified file types can be added to the MMS, only the most common media file types (jpeg/jpg, png, \
137
+						             gif, mp4, ogg, etc.) can be previewed in the adjoining pane.";
138
+					  $("#tooltiptextfourth").html(infonotecontent);
139
+
140
+                                          // Append 'Telnyx' to the 'see balance' drop-down list
141
+                                          $("#smsprovider").append("<option value='Telnyx' class='selectsmsprov'>Telnyx</option>");
142
+
143
+                                } else if (unqprovider == 'Pl') {
144
+
145
+					  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "wav", "wave", "mp4", "amr", "mpg", "mpeg", "3gpp", "3gpp2", "vcf", "vcard", "x-vcard", "ics", "ical", "ifb", 
146
+						             "icalendar", "csv", "txt", "pdf", "xls"];
147
+					  // Maximum size of message text + files in KB
148
+					  maximumsize = 5120;
149
+					  maximumsizeinit = 5120;
150
+					  maxsizenonimage = 600;
151
+					  maximumfilenumber = 10;
152
+					  chosenProvFullName = "Plivo";
153
+					  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Plivo, if you send only jpeg/jpg, png \
154
+						             or gif files, the size of all the files plus the size of the text should be \
155
+						             <a href='https://support.plivo.com/hc/en-us/articles/360042280091-What-are-the-MMS-upload-size-limits-and-file-restrictions-' \
156
+						             style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>5120 KB</a> or less. If you send files of other formats, the total size \
157
+						             of the files plus the size of the text should be 600 KB or less. <a href='https://support.plivo.com/hc/en-us/articles/360042273051' \
158
+						             style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, wav/wave, mp4, amr, mpg, mpeg, 3gpp, \
159
+						             3gpp2, vcf, vcard, x-vcard, ics, ical, ifb, icalendar, csv, txt, pdf and xls. Deliverability of MMS messages depends on the carrier and \
160
+						             device of the receiver. Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is \
161
+						             achieved when sending jpeg/jpg, png or gif files, with a total message size of 600 KB or less. Plivo allows sending MMS messages \
162
+						             only from US or Canadian phone numbers to other US or Canadian phone numbers. Although all the specified file types can be added to the MMS, \
163
+						             only the most common media file types (jpeg/jpg, png, gif, wav/wave, mp4, etc.) can be previewed in the adjoining pane.";
164
+					  $("#tooltiptextfourth").html(infonotecontent);
165
+
166
+                                          // Append 'Plivo' to the 'see balance' drop-down list
167
+                                          $("#smsprovider").append("<option value='Plivo' class='selectsmsprov'>Plivo</option>");
168
+
169
+                                } else if (unqprovider == 'Tw') {
170
+
171
+					  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "tiff", "tif", "au", "snd", "l16", "wav", "wave", "aiff", "pcm", "mp4", "ogg", "ra", "ram", "3gpp", 
172
+						             "3gpp2", "ac3", "webm", "amr", "mpg", "mpeg", "mov", "qt", "h261", "h263", "h264", "vcf", "vcard", "x-vcard", "csv", "rtf", "ics", "ical", "ifb", 
173
+						             "icalendar", "directory", "pdf", "pkpass"];
174
+					  // Maximum size of message text + files in KB
175
+					  maximumsize = 5120;
176
+					  maximumsizeinit = 5120;
177
+					  maxsizenonimage = 600;
178
+					  maximumfilenumber = 10;
179
+					  chosenProvFullName = "Twilio";
180
+					  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Twilio, if you send only jpeg/jpg, png \
181
+						             or gif files, the size of all the files plus the size of the text should be \
182
+						             <a href='https://support.twilio.com/hc/en-us/articles/360018832773-Twilio-Programmable-SMS-Supported-File-Types-and-Size-Limits-for-MMS-Media-Messages' \
183
+						             style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>5120 KB</a> or less. If you send files of other formats, the total size \
184
+						             of the files plus the size of the text should be 600 KB or less. <a href='https://www.twilio.com/docs/sms/accepted-mime-types' \
185
+						             style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, tiff/tif, au, snd, l16, \
186
+						             wav/wave, aiff, pcm, mp4, ogg, ra, ram, 3gpp, 3gpp2, ac3, webm, amr, mpg, mpeg, mov, qt, h261, h263, h264, vcf, vcard, x-vcard, csv, rtf, ics, \
187
+						             ical, ifb, icalendar, directory, pdf and pkpass. Deliverability of MMS messages depends on the carrier and device of the receiver. Carriers \
188
+						             can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending jpeg/jpg, png or gif files, \
189
+						             with a total message size of 600 KB or less. Twilio allows sending MMS messages from US or Canadian phone numbers to other US or Canadian phone \
190
+						             numbers. However, MMS messages sent internationally will be converted to SMS messages with URL links to the included files. Although all the \
191
+						             specified file types can be added to the MMS, only the most common media file types (jpeg/jpg, png, gif, wav/wave, mp4, ogg, etc.) can be \
192
+						             previewed in the adjoining pane."
193
+					  $("#tooltiptextfourth").html(infonotecontent);
194
+
195
+                                          // Append 'Twilio' to the 'see balance' drop-down list
196
+                                          $("#smsprovider").append("<option value='Twilio' class='selectsmsprov'>Twilio</option>");
197
+
198
+                                } else if (unqprovider == 'Fl') {
199
+
200
+					  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "3gp", "mp4", "avi", "amr", "midi", "wav", "wave", "ac3", "mp3"];
201
+					  // Maximum size of message text + files in KB
202
+					  maximumsize = 750;
203
+					  maximumsizeinit = 750;
204
+					  maxsizenonimage = 600;
205
+					  maximumfilenumber = 10;
206
+					  chosenProvFullName = "Flowroute";
207
+					  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Flowroute, if you send only jpeg/jpg, \
208
+							     png or gif files, the size of all the files plus the size of the text should be \
209
+							     <a href='https://developer.flowroute.com/api/messages/v2.1/send-an-mms/' style='color:#1b60ba' target='_blank' \
210
+							     rel='noreferrer noopener'>750 KB</a> or less. If you send files of other formats, the total \
211
+							     size of the files plus the size of the text should be 600 KB or less. \
212
+							     <a href='https://support.flowroute.com/937402-What-file-types-does-Flowroute-MMS-support' style='color:#1b60ba' target='_blank' \
213
+							     rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, 3gp, mp4, avi, amr, midi, wav/wave, ac3 and mp3. Flowroute accounts are \
214
+							     limited to <a href='https://developer.flowroute.com/docs/sms-mms-best-practices/#sending-and-receiving-limitations' style='color:#1b60ba' \
215
+							     target='_blank' rel='noreferrer noopener'>1 MMS message per second</a>. Deliverability of MMS messages depends on the carrier and device \
216
+							     of the receiver. Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending \
217
+							     jpeg/jpg, png or gif files, with a total message size of 600 KB or less. Flowroute allows sending MMS messages only from US or Canadian phone \
218
+							     numbers to other US or Canadian phone numbers. Although all the specified file types can be added to the MMS, only the most common media file \
219
+							     types (jpeg/jpg, png, gif, wav/wave, mp4, etc.) can be previewed in the adjoining pane."
220
+					  $("#tooltiptextfourth").html(infonotecontent);
221
+
222
+                                          // Append 'Flowroute' to the 'see balance' drop-down list
223
+                                          $("#smsprovider").append("<option value='Flowroute' class='selectsmsprov'>Flowroute</option>");
224
+                                }
225
+                     } else {
226
+                                $('#currentsmsnmbrs').append("<option value='' class='optselectsmsnb' selected disabled>No IDs</option>");
227
+                     }
228
+
229
+                     $("#smsnumbersdiv").removeClass('icon-loading');
230
+          }
231
+  });
232
+
233
+  // Clean the SMS_Relentless/temp_files directory
234
+  var cleanflUrl = OC.generateUrl("/apps/sms_relentless/user/cleantempdir");
235
+
236
+  $.ajax({
237
+          url: cleanflUrl + '/' + userid,
238
+          type: "POST",
239
+          data: { userid: userid },
240
+          cache: false,
241
+          processData: false,
242
+          contentType: false
243
+  });
244
+  
245
+  // Check the available balance
246
+  $("#smsprovider").on("change", function () {
247
+
248
+     var provider = $('#smsprovider :selected').val();
249
+
250
+     if (provider == "Telnyx") {
251
+
252
+        var gettelbalance = function() {
253
+
254
+          $('#currentbalance').addClass('icon-loading');
255
+
256
+          var gettelbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancetel");
257
+
258
+          $.ajax({
259
+              url: gettelbalanceUrl + '/' + userid,
260
+              type: "POST",
261
+              data: { userid: userid },
262
+              cache: false,
263
+              processData: false,
264
+              contentType: false,
265
+              success: function(currentbalancetel) {
266
+
267
+                     $('#currentbalance').empty();
268
+                     $('#currentbalance').text(currentbalancetel);
269
+                     $('#currentbalance').removeClass('icon-loading');
270
+              }
271
+          });
272
+        }
273
+
274
+        gettelbalance();
275
+
276
+     } else if (provider == "Plivo") {
277
+
278
+          var getnexbalance = function() {
279
+
280
+            $('#currentbalance').addClass('icon-loading');
281
+
282
+            var getnexbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancenex");
283
+
284
+            $.ajax({
285
+                url: getnexbalanceUrl + '/' + userid,
286
+                type: "POST",
287
+                data: { userid: userid },
288
+                cache: false,
289
+                processData: false,
290
+                contentType: false,
291
+                success: function(currentbalancenex) {
292
+
293
+                     $('#currentbalance').empty();
294
+                     $('#currentbalance').text(currentbalancenex);
295
+                     $('#currentbalance').removeClass('icon-loading');
296
+                }
297
+            });
298
+          }
299
+
300
+          getnexbalance();
301
+
302
+     } else if (provider == "Twilio") {
303
+
304
+          var gettwilbalance = function() {
305
+
306
+            $('#currentbalance').addClass('icon-loading');
307
+
308
+            var gettwilbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalancetwil");
309
+
310
+            $.ajax({
311
+                url: gettwilbalanceUrl + '/' + userid,
312
+                type: "POST",
313
+                data: { userid: userid },
314
+                cache: false,
315
+                processData: false,
316
+                contentType: false,
317
+                success: function(currentbalancetwil) {
318
+
319
+                     $('#currentbalance').empty();
320
+                     $('#currentbalance').text(currentbalancetwil);
321
+                     $('#currentbalance').removeClass('icon-loading');
322
+                }
323
+            });
324
+          }
325
+
326
+          gettwilbalance();
327
+
328
+     } else if (provider == "Flowroute") {
329
+
330
+          var getflowbalance = function() {
331
+
332
+            $('#currentbalance').addClass('icon-loading');
333
+
334
+            var getflowbalanceUrl = OC.generateUrl("/apps/sms_relentless/user/getbalanceflow");
335
+
336
+            $.ajax({
337
+                url: getflowbalanceUrl + '/' + userid,
338
+                type: "POST",
339
+                data: { userid: userid },
340
+                cache: false,
341
+                processData: false,
342
+                contentType: false,
343
+                success: function(currentbalanceflow) {
344
+
345
+                     $('#currentbalance').empty();
346
+                     $('#currentbalance').text(currentbalanceflow);
347
+                     $('#currentbalance').removeClass('icon-loading');
348
+                }
349
+            });
350
+          }
351
+
352
+          getflowbalance();
353
+
354
+       } else if (provider == "") {
355
+                $('#currentbalance').text("");
356
+                $('#currentbalance').removeClass('icon-loading');
357
+       }
358
+  });
359
+
360
+
361
+  // If a Sender ID is selected
362
+  $("#currentsmsnmbrs").on("change", function () {
363
+
364
+          if ($("#currentsmsnmbrs option[value='']").length > 0) {
365
+
366
+              selectedid = $('#currentsmsnmbrs :selected').val();
367
+              var setIdsplit = selectedid.split(":");
368
+	      chosenProvider = setIdsplit[0];
369
+
370
+              // Set the valid MMS file extensions, maximum MMS message size, maximum message size when non-jpeg/png/gif files are included, maximum number of files and the info note content, for the chosen provider
371
+	      if (chosenProvider == "Tx") {
372
+		  validExtensions = ["jpg", "jpeg", "png", "gif", "mp3", "ogg", "amr", "mp4", "3gpp", "pdf", "vcf", "vcard", "txt"];
373
+		  // Maximum size of message text + files in KB
374
+		  maximumsize = 1024;
375
+                  maximumsizeinit = 1024;
376
+		  maxsizenonimage = 600;
377
+		  maximumfilenumber = 10;
378
+                  chosenProvFullName = "Telnyx";
379
+                  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Telnyx, if you send only jpeg/jpg, png \
380
+                                     or gif files, the size of all the files plus the size of the text should be \
381
+                                     <a href='https://support.telnyx.com/en/articles/4450150-faqs-about-mms-at-telnyx' style='color:#1b60ba' target='_blank' \
382
+                                     rel='noreferrer noopener'>1024 KB</a> or less. If you send files of other formats, the total size of the files plus the size of the text should \
383
+                                     be 600 KB or less. Allowed formats are jpeg/jpg, png, gif, mp3, ogg, amr, mp4, 3gpp, pdf, vcf, vcard and txt. By default, Telnyx accounts are \
384
+                                     limited to <a href='https://support.telnyx.com/en/articles/3102823-mms-sending-and-receiving' style='color:#1b60ba' target='_blank' \
385
+                                     rel='noreferrer noopener'>1 MMS message per second</a>. Deliverability of MMS messages depends on the carrier and device of the receiver. \
386
+                                     Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending jpeg/jpg, png or \
387
+                                     gif files, with a total message size of 600 KB or less. Telnyx allows sending MMS messages only from US or Canadian phone numbers to other US \
388
+                                     or Canadian phone numbers. Although all the specified file types can be added to the MMS, only the most common media file types (jpeg/jpg, png, \
389
+                                     gif, mp4, ogg, etc.) can be previewed in the adjoining pane.";
390
+                  $("#tooltiptextfourth").html(infonotecontent);
391
+	      } else if (chosenProvider == "Pl") {
392
+		  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "wav", "wave", "mp4", "amr", "mpg", "mpeg", "3gpp", "3gpp2", "vcf", "vcard", "x-vcard", "ics", "ical", "ifb", 
393
+                                     "icalendar", "csv", "txt", "pdf", "xls"];
394
+		  // Maximum size of message text + files in KB
395
+		  maximumsize = 5120;
396
+                  maximumsizeinit = 5120;
397
+		  maxsizenonimage = 600;
398
+		  maximumfilenumber = 10;
399
+                  chosenProvFullName = "Plivo";
400
+                  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Plivo, if you send only jpeg/jpg, png \
401
+                                     or gif files, the size of all the files plus the size of the text should be \
402
+                                     <a href='https://support.plivo.com/hc/en-us/articles/360042280091-What-are-the-MMS-upload-size-limits-and-file-restrictions-' \
403
+                                     style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>5120 KB</a> or less. If you send files of other formats, the total size \
404
+                                     of the files plus the size of the text should be 600 KB or less. <a href='https://support.plivo.com/hc/en-us/articles/360042273051' \
405
+                                     style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, wav/wave, mp4, amr, mpg, mpeg, 3gpp, \
406
+                                     3gpp2, vcf, vcard, x-vcard, ics, ical, ifb, icalendar, csv, txt, pdf and xls. Deliverability of MMS messages depends on the carrier and \
407
+                                     device of the receiver. Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is \
408
+                                     achieved when sending jpeg/jpg, png or gif files, with a total message size of 600 KB or less. Plivo allows sending MMS messages \
409
+                                     only from US or Canadian phone numbers to other US or Canadian phone numbers. Although all the specified file types can be added to the MMS, \
410
+                                     only the most common media file types (jpeg/jpg, png, gif, wav/wave, mp4, etc.) can be previewed in the adjoining pane.";
411
+                  $("#tooltiptextfourth").html(infonotecontent);
412
+	      } else if (chosenProvider == "Tw") {
413
+		  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "tiff", "tif", "au", "snd", "l16", "wav", "wave", "aiff", "pcm", "mp4", "ogg", "ra", "ram", "3gpp", 
414
+                                     "3gpp2", "ac3", "webm", "amr", "mpg", "mpeg", "mov", "qt", "h261", "h263", "h264", "vcf", "vcard", "x-vcard", "csv", "rtf", "ics", "ical", "ifb", 
415
+                                     "icalendar", "directory", "pdf", "pkpass"];
416
+		  // Maximum size of message text + files in KB
417
+		  maximumsize = 5120;
418
+                  maximumsizeinit = 5120;
419
+		  maxsizenonimage = 600;
420
+		  maximumfilenumber = 10;
421
+                  chosenProvFullName = "Twilio";
422
+                  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Twilio, if you send only jpeg/jpg, png \
423
+                                     or gif files, the size of all the files plus the size of the text should be \
424
+                                     <a href='https://support.twilio.com/hc/en-us/articles/360018832773-Twilio-Programmable-SMS-Supported-File-Types-and-Size-Limits-for-MMS-Media-Messages' \
425
+                                     style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>5120 KB</a> or less. If you send files of other formats, the total size \
426
+                                     of the files plus the size of the text should be 600 KB or less. <a href='https://www.twilio.com/docs/sms/accepted-mime-types' \
427
+                                     style='color:#1b60ba' target='_blank' rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, tiff/tif, au, snd, l16, \
428
+                                     wav/wave, aiff, pcm, mp4, ogg, ra, ram, 3gpp, 3gpp2, ac3, webm, amr, mpg, mpeg, mov, qt, h261, h263, h264, vcf, vcard, x-vcard, csv, rtf, ics, \
429
+                                     ical, ifb, icalendar, directory, pdf and pkpass. Deliverability of MMS messages depends on the carrier and device of the receiver. Carriers \
430
+                                     can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending jpeg/jpg, png or gif files, \
431
+                                     with a total message size of 600 KB or less. Twilio allows sending MMS messages from US or Canadian phone numbers to other US or Canadian phone \
432
+                                     numbers. However, MMS messages sent internationally will be converted to SMS messages with URL links to the included files. Although all the \
433
+                                     specified file types can be added to the MMS, only the most common media file types (jpeg/jpg, png, gif, wav/wave, mp4, ogg, etc.) can be \
434
+                                     previewed in the adjoining pane."
435
+                  $("#tooltiptextfourth").html(infonotecontent);
436
+	      } else if (chosenProvider == "Fl") {
437
+		  validExtensions = ["jpg", "jpeg", "png", "gif", "bmp", "3gp", "mp4", "avi", "amr", "midi", "wav", "wave", "ac3", "mp3"];
438
+		  // Maximum size of message text + files in KB
439
+		  maximumsize = 750;
440
+                  maximumsizeinit = 750;
441
+		  maxsizenonimage = 600;
442
+		  maximumfilenumber = 10;
443
+                  chosenProvFullName = "Flowroute";
444
+                  infonotecontent = "To send an MMS, you can upload media files or pick them from Nextcloud. You can add up to 10 files. For Flowroute, if you send only jpeg/jpg, \
445
+                                     png or gif files, the size of all the files plus the size of the text should be \
446
+                                     <a href='https://developer.flowroute.com/api/messages/v2.1/send-an-mms/' style='color:#1b60ba' target='_blank' \
447
+                                     rel='noreferrer noopener'>750 KB</a> or less. If you send files of other formats, the total \
448
+                                     size of the files plus the size of the text should be 600 KB or less. \
449
+                                     <a href='https://support.flowroute.com/937402-What-file-types-does-Flowroute-MMS-support' style='color:#1b60ba' target='_blank' \
450
+                                     rel='noreferrer noopener'>Allowed formats</a> are jpeg/jpg, png, gif, bmp, 3gp, mp4, avi, amr, midi, wav/wave, ac3 and mp3. Flowroute accounts are \
451
+                                     limited to <a href='https://developer.flowroute.com/docs/sms-mms-best-practices/#sending-and-receiving-limitations' style='color:#1b60ba' \
452
+                                     target='_blank' rel='noreferrer noopener'>1 MMS message per second</a>. Deliverability of MMS messages depends on the carrier and device \
453
+                                     of the receiver. Carriers can reject MMS messages with files exceeding a certain size. The best deliverability is achieved when sending \
454
+                                     jpeg/jpg, png or gif files, with a total message size of 600 KB or less. Flowroute allows sending MMS messages only from US or Canadian phone \
455
+                                     numbers to other US or Canadian phone numbers. Although all the specified file types can be added to the MMS, only the most common media file \
456
+                                     types (jpeg/jpg, png, gif, wav/wave, mp4, etc.) can be previewed in the adjoining pane."
457
+                  $("#tooltiptextfourth").html(infonotecontent);
458
+	      }
459
+
460
+          } else { selectedid = ''; }
461
+  });
462
+
463
+  // Check the checkbox to send SMS message to multiple recipients
464
+  $('#tomultchckbx').change(function() {
465
+      if ($(this).is(':checked')) {
466
+          $("#multiplerecivers").css("display", "block");
467
+          $("#smstodiv").css("visibility", "hidden");
468
+          $("#smsto").val("");
469
+
470
+          receiversNumbers.length = 0;
471
+
472
+      } else {
473
+          $("#multiplerecivers").css("display", "none");
474
+          $("#smstodiv").css("visibility", "visible");
475
+
476
+          // Remove the uploaded file(s) if any
477
+          $("#induploadfile").remove();
478
+
479
+          receiversNumbers.length = 0;
480
+      }
481
+  });
482
+
483
+  // Upload the file with the recipients' phone numbers
484
+  $("#uploadfileforsms").change(function(e) {
485
+
486
+     $("#fileuploadednm").empty();
487
+
488
+     receiversNumbers.length = 0;
489
+
490
+     OC.msg.startAction("#sms_upload_msg", t("sms_relentless", "Uploading ..."));
491
+
492
+     var baseUrl = OC.generateUrl("/apps/sms_relentless/user/upload_numbers_file");
493
+
494
+     var formData = new FormData();
495
+     formData.append('uploadfileforsms', $('#uploadfileforsms')[0].files[0]);
496
+
497
+     var fileup = $('#uploadfileforsms').val();
498
+     var fileuptrim = fileup.split('\\').pop();
499
+
500
+     $('#fileuploadednm').append("<div id='induploadfile' class='indgenflcls'><div id='indfilediv' class='indivflcls'>" + fileuptrim + "</div><div id='indivflremove' class='indupfldl'>X</div></div><br>");
501
+
502
+     var extension = fileup.replace(/^.*\./, '');
503
+
504
+     if (extension == fileup) {
505
+         extension = "";
506
+     } else {
507
+         extension = extension.toLowerCase();
508
+     }
509
+
510
+     var validExtensionsmrec = ["txt", "csv"];
511
+
512
+     if (jQuery.inArray(extension, validExtensionsmrec) != -1) {
513
+
514
+       if (selectedid != '') {
515
+
516
+               $.ajax({
517
+                 url: baseUrl + '/' + userid,
518
+                 type: "POST",
519
+                 data: formData,
520
+                 cache: false,
521
+                 processData: false,
522
+                 contentType: false,
523
+                 success: function(numberarray) {
524
+
525
+		    if (numberarray.length > 0) {
526
+
527
+		        // Get the array of the receivers' phone numbers
528
+		        if (chosenProvider == "Tx") {
529
+
530
+		             for(key in numberarray) {
531
+		                 receiversNumbers.push("+"+numberarray[key]);
532
+		             }
533
+
534
+		        } else if (chosenProvider == "Pl") {
535
+
536
+		             for(key in numberarray) {
537
+		                 receiversNumbers.push(numberarray[key]);
538
+		             }
539
+
540
+		          } else if (chosenProvider == "Tw") {
541
+
542
+		             for(key in numberarray) {
543
+		                 receiversNumbers.push(numberarray[key]);
544
+		             }
545
+		          } else if (chosenProvider == "Fl") {
546
+
547
+		             for(key in numberarray) {
548
+		                 receiversNumbers.push(numberarray[key]);
549
+		             }
550
+		          }
551
+
552
+		    } else {
553
+                          showAlert("The uploaded file doesn't seem to contain any valid phone numbers. Please upload a txt or csv file that contains phone numbers separated by commas, semicolons, vertical bars or new lines.");
554
+		    }
555
+                            
556
+                    // Preview the uploaded file
557
+                    var smsfilename = e.target.files[0].name;
558
+                    var baseUrl = OC.generateUrl("/remote.php/webdav/SMS_Relentless/temp_files/"+smsfilename);
559
+
560
+                    var reader = new FileReader();
561
+                    reader.readAsText(e.target.files[0]);
562
+                    reader.onload = function(e) {
563
+                          $("#smstables").empty();
564
+                          $("#smstables").append(e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>'));
565
+                    };
566
+
567
+                    $("#smstables").show();
568
+
569
+                    $('#sms_upload_msg').hide();
570
+                    $('#smstables').removeClass('icon-loading');
571
+
572
+                  },
573
+                  error: function() {
574
+                             showAlert("Error while uploading the file.");
575
+                  }
576
+               });
577
+
578
+        } else {
579
+               showAlert("Please choose a Sender ID from the Set ID drop-down list!");
580
+               $('#sms_upload_msg').hide();
581
+               $('#smstables').removeClass('icon-loading');
582
+        }
583
+
584
+     } else {
585
+          showAlert("The file type is not supported ! Supported formats are txt and csv.");
586
+          $('#pf_upload_msg').hide();
587
+          $('#smstables').removeClass('icon-loading');
588
+
589
+          $("#induploadfile").remove();
590
+          $("#sms_upload_msg").hide();
591
+     }
592
+
593
+     // Preview uploaded file when clicked
594
+     $("#indfilediv").on("click", function() {
595
+
596
+          var smsfilename = e.target.files[0].name;
597
+          var baseUrl = OC.generateUrl("/remote.php/webdav/SMS_Relentless/temp_files/"+smsfilename);
598
+
599
+          var reader = new FileReader();
600
+          reader.readAsText(e.target.files[0]);
601
+          reader.onload = function(e) {
602
+                  $("#smstables").empty();
603
+                  $("#smstables").append(e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>'));
604
+          };
605
+
606
+          $("#smstables").show();
607
+          $('#sms_upload_msg').hide();
608
+          $('#smstables').removeClass('icon-loading');
609
+     });
610
+
611
+     // Remove selected file
612
+     $("#indivflremove").on("click", function() {
613
+
614
+          $("#induploadfile").remove();
615
+          $("#sms_upload_msg").hide();
616
+
617
+          receiversNumbers.length = 0;
618
+
619
+     });
620
+
621
+  });
622
+
623
+  // Show the number of characters entered in the SMS textarea and the text size in KB
624
+  $("#smstext").on('input', function() {
625
+
626
+     $("#char_count").css("display", "inline");
627
+
628
+     $("#mtextSize").css("display", "inline");
629
+
630
+     $(".maxmessagelength").css("display", "inline-block");
631
+
632
+     $("#countchnb").text($(this).val().length);
633
+
634
+     var textsize = encodeURIComponent($(this).val()).replace(/%[A-F\d]{2}/g, 'U').length;
635
+     textsizekb = parseFloat(textsize/1024).toFixed(4);
636
+     $("#textsizeinkb").text(textsizekb);
637
+
638
+     if ($(this).val().length > charcolorthr) {
639
+         $("#char_count").css("color", "#BB2E4B");
640
+     } else {
641
+         $("#char_count").css("color", "#4cbc86;");
642
+     }
643
+
644
+  });
645
+
646
+
647
+  // Check the checkbox to send file(s) as MMS
648
+  $('#mediafilechckbx').change(function() {
649
+
650
+      if ($(this).is(':checked')) {
651
+
652
+          isMMS = 1;
653
+          if (selectedid == '') {
654
+              showAlert("Please, first choose a Sender ID from the Set ID drop-down list !");
655
+              $(this).prop("checked", false);
656
+              isMMS = 0;
657
+              return;
658
+          }
659
+          $("#upmediafiles").css("display", "block");
660
+          $("#submitsms").prop("value", "Send MMS");
661
+
662
+      } else {
663
+
664
+          isMMS = 0;
665
+          $("#upmediafiles").css("display", "none");
666
+          $("#submitsms").prop("value", "Send SMS");
667
+
668
+          // Remove the uploaded file(s) if any
669
+          $(".indgenflclsmms").each(function() { $(this).remove(); });
670
+          $(".indgenpckfls").each(function() { $(this).remove(); });
671
+
672
+          uploadedtomms = [];
673
+          n = 1;
674
+
675
+          msgtotalflsize = 0;
676
+
677
+          $("#filestotsize").hide();
678
+      }
679
+  });
680
+
681
+
682
+  // Check if the uploaded files' format is jpeg, png or gif and adjust the maximum cumulative size of files, if necessary
683
+  function adjustMaximumSize(uploadedtomms) {
684
+				      
685
+      var nonimgcheck = 0;
686
+      for (var u = 0; u < uploadedtomms.length; u++) {
687
+	   var crupfl = uploadedtomms[u];
688
+	   var extensionup = crupfl.replace(/^.*\./, '');
689
+	   if ($.inArray(extensionup, ["jpg", "jpeg", "png", "gif"]) === -1) {
690
+	       nonimgcheck = 1;
691
+	   }
692
+      }
693
+
694
+      if (nonimgcheck == 0) { maximumsize = maximumsizeinit; }
695
+  }
696
+
697
+  // Upload files to be sent as MMS
698
+  $("#uploadfileformms").change(function(e) {
699
+
700
+     OC.msg.startAction("#pf_upload_msg", t("sms_relentless", "Uploading ..."));
701
+     $('#smstables').addClass('icon-loading');
702
+     $('#filestotsize').show();
703
+
704
+     var userid = "<?php p($userId); ?>";
705
+     var baseUrl = OC.generateUrl("/apps/sms_relentless/user/uploadfile");
706
+
707
+     var formData = new FormData();
708
+     formData.append('uploadfileformms', $('#uploadfileformms')[0].files[0]);
709
+
710
+     var currentflsize = $('#uploadfileformms')[0].files[0].size;
711
+
712
+     // Add the size of the current file to the total size of all the files
713
+     msgtotalflsize += Math.floor((currentflsize/1024) * 100)/100;
714
+
715
+     var fileup = $('#uploadfileformms').val();
716
+     var fileuptrim = fileup.split('\\').pop();
717
+
718
+     if ($.inArray(fileuptrim, uploadedtomms) != -1) {
719
+         var duplicatescheck = 1;
720
+     } else { 
721
+         var duplicatescheck = 0;
722
+     }
723
+
724
+     var extension = fileup.replace(/^.*\./, '');
725
+
726
+     if (extension == fileup) {
727
+         extension = "";
728
+     } else {
729
+         extension = extension.toLowerCase();
730
+     }
731
+
732
+     // If the uploaded file's format is different from jpeg, png or gif, the maximum allowed size of the message will be lower
733
+     if (($.inArray(extension, ["jpg", "jpeg", "png", "gif"]) === -1) && (msgtotalflsize <= Number(maximumsize) - Number(textsizekb))) {
734
+         maximumsize = maxsizenonimage;
735
+     }
736
+
737
+     if ($.inArray(extension, validExtensions) != -1) {
738
+
739
+       if (duplicatescheck == 0) {
740
+
741
+         if (msgtotalflsize <= Number(maximumsize) - Number(textsizekb)) {
742
+
743
+            if (n <= maximumfilenumber) {
744
+
745
+               $.ajax({
746
+                 url: baseUrl + '/' + userid,
747
+                 type: "POST",
748
+                 data: formData,
749
+                 cache: false,
750
+                 processData: false,
751
+                 contentType: false,
752
+                 success: function(totalflsize) {
753
+
754
+                   uploadedtomms.push(fileuptrim);
755
+
756
+                   $('#filessizetext').text(totalflsize);
757
+
758
+                   var rectotfilesz = parseFloat(totalflsize);
759
+
760
+                   if (rectotfilesz <= maximumsize) {
761
+                       $('#submitsms').attr("disabled", false);
762
+                       $('#filestotsize').css('color', '#189558');
763
+                   } else {
764
+                       $('#filestotsize').css('color', '#ba3555');
765
+                       showAlert("Error ! For "+ chosenProvFullName +", for the chosen files format, the size of all the included files plus the size of the text cannot exceed "+ maximumsize +" KB !");
766
+                       $('#submitsms').attr("disabled", true);
767
+                       $('#smstables').removeClass('icon-loading');
768
+                       $('#pf_upload_msg').hide();
769
+                   }
770
+
771
+                   $('#mmsfileuploadednm').append("<div class='indgenflclsmms'><div id='"+n+"indfilediv' class='indivflcls'>" + n + ") " + fileuptrim + "</div><div class='indupfldl'>X</div></div>");
772
+                   n++;
773
+
774
+                   // Preview the file when you click on its name
775
+                   $("div:visible[id*='indfilediv']").each(function() {
776
+
777
+                        $(this).on("click", function(eventclck) {
778
+
779
+                           $("#mmsfoldersview").css("display", "inline-block");
780
+                           var mmsfilenameinit = $(this).text();
781
+                           var mmsfilenamesec = mmsfilenameinit.substring(mmsfilenameinit.indexOf(" ") + 1);
782
+                           var mmsfilename = mmsfilenamesec.replace("X","");
783
+                           var baseUrl = firstPathEl+"/remote.php/webdav/SMS_Relentless/temp_files/"+mmsfilename;
784
+                           var extenlst = mmsfilename.replace(/^.*\./, '');
785
+
786
+                           if (extenlst == mmsfilename) {
787
+                               extenlst = "";
788
+                           } else {
789
+                               extenlst = extenlst.toLowerCase();
790
+                           }
791
+
792
+                           if (extenlst == 'jpg' || extenlst == 'jpeg') {
793
+                                  $("#smstables").empty();
794
+                                  $("#smstables").append('<img style="width:auto;height:auto" id="uploadedjpg" src="#" />');
795
+                                  $("#uploadedjpg").attr('src', readjpg[mmsfilename]);
796
+                           } else if (extenlst == 'png') {
797
+                                  $("#smstables").empty();
798
+                                  $("#smstables").append('<img style="width:auto;height:auto" id="uploadedpng" src="#" />');
799
+                                  $("#uploadedpng").attr('src', readpng[mmsfilename]);
800
+                           } else if (extenlst == 'gif') {
801
+                                  $("#smstables").empty();
802
+                                  $("#smstables").append('<img style="width:auto;height:auto" id="uploadedgif" src="#" />');
803
+                                  $("#uploadedgif").attr('src', readgif[mmsfilename]);
804
+                           } else if (extenlst == 'bmp') {
805
+                                  $("#smstables").empty();
806
+                                  $("#smstables").append('<img style="width:auto;height:auto" id="uploadedbmp" src="#" />');
807
+                                  $("#uploadedbmp").attr('src', readbmp[mmsfilename]);
808
+                           } else if (extenlst == 'tif' || extenlst == 'tiff') {
809
+                                  var tiffile = '/remote.php/webdav/SMS_Relentless/temp_files/'+mmsfilename;
810
+                                  var xhr = new XMLHttpRequest();
811
+                                  xhr.responseType = 'arraybuffer';
812
+                                  xhr.open('GET', tiffile);
813
+                                  xhr.onload = function (evnt) {
814
+                                      var tiff = new Tiff({buffer: xhr.response});
815
+                                      var tifcanvas = tiff.toCanvas();
816
+                                      $("#smstables").empty();
817
+                                      $("#smstables").append(tifcanvas);
818
+                                  };
819
+                                  xhr.send();
820
+                           } else if (extenlst == 'pdf') {
821
+                                  var viewerclick = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
822
+                                  var $iframe = $('<iframe id="docclickview" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewerclick + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
823
+                                  $("#smstables").empty();
824
+                                  $("#smstables").append($iframe);
825
+                           } else if (extenlst == 'txt') {
826
+                                  $("#smstables").empty();
827
+                                  $("#smstables").append(readtxtfile[mmsfilename]);
828
+                           } else if (extension == 'mp4') {
829
+                                  $("#smstables").empty();
830
+                                  $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmp4" src="'+ baseUrl +'"></video>');
831
+		           } else if (extension == 'ogg') {
832
+		                  $("#smstables").empty();
833
+		                  $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedogg" src="'+ baseUrl +'"></video>');
834
+		           } else if (extension == 'avi') {
835
+		                  $("#smstables").empty();
836
+		                  $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedavi" src="'+ baseUrl +'" type="video/avi"></video>');
837
+		           } else if (extension == 'mpg' || extension == 'mpeg') {
838
+		                  $("#smstables").empty();
839
+		                  $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmpg" src="'+ baseUrl +'"></video>');
840
+		           } else if (extension == 'wav' || extension == 'wave') {
841
+		                  $("#smstables").empty();
842
+		                  $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedwav" src="'+ baseUrl +'"></audio>');
843
+		           } else if (extension == 'mp3') {
844
+		                  $("#smstables").empty();
845
+		                  $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmp3" src="'+ baseUrl +'" type="audio/mp3"></audio>');
846
+		           } else if (extension == 'midi') {
847
+		                  $("#smstables").empty();
848
+		                  $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmidi" src="'+ baseUrl +'" type="audio/midi"></audio>');
849
+		           }
850
+
851
+                           $("#smstables").show();
852
+                           $("#mmsfoldersview").hide();
853
+                        });
854
+                   });
855
+
856
+                   // Remove uploaded files
857
+                   $('[class*="indupfldl"]').last().click(function() {
858
+
859
+                           var userid = "<?php p($userId); ?>";
860
+                           var baseUrl = OC.generateUrl("/apps/sms_relentless/user/removeupfile");
861
+
862
+                           var removedfilenameinit = $(this).closest('[class*="indgenflclsmms"]').find('[class*="indivflcls"]').text();
863
+
864
+                           var removedfilesplit = removedfilenameinit.split(") ");
865
+                           var removedflnb = parseInt(removedfilesplit[0]);
866
+
867
+                           $(this).closest('[class*="indgenflclsmms"]').find('[class*="indivflcls"]').hide();
868
+                           $(this).hide();
869
+
870
+                           var removedfilename = removedfilenameinit.substring(removedfilenameinit.indexOf(" ") + 1);
871
+
872
+                           uploadedtomms = $.grep(uploadedtomms, function(value) {
873
+                                           return value != removedfilename;
874
+                           });
875
+
876
+                           $.ajax({
877
+                                   url: baseUrl + '/' + userid,
878
+                                   type: "POST",
879
+                                   data: {removedfilename: removedfilename},
880
+                                   success: function(totalflsize) {
881
+
882
+                                      msgtotalflsize = totalflsize;
883
+                                      $('#filessizetext').text(totalflsize);
884
+
885
+                                      adjustMaximumSize(uploadedtomms);
886
+
887
+                                      // Check message size
888
+                                      var rectotfilesz = parseFloat(totalflsize);
889
+
890
+                                      if (rectotfilesz <= Number(maximumsize) - Number(textsizekb)) {
891
+                                          $('#submitsms').attr("disabled", false);
892
+                                          $('#filestotsize').css('color', '#189558');
893
+                                      } else {
894
+                                          $('#filestotsize').css('color', '#ba3555');
895
+                                          showAlert("Error ! For "+ chosenProvFullName +", for the chosen files format, the total size of the included files plus the size of the text cannot exceed "+ maximumsize +" KB !");
896
+                                          $('#submitsms').attr("disabled", true);
897
+                                      }
898
+
899
+                                      // Rewrite order numbers for files that follow
900
+                                      --n;
901
+                                      $("div:visible[id*='indfilediv']").each(function() {
902
+
903
+                                          var getdivtext =  $(this).text();
904
+                                          var splitdivtext = getdivtext.split(") ");
905
+                                          var currentnbvalue = parseInt(splitdivtext[0]);
906
+                                          var newnbvalue = currentnbvalue - 1;
907
+
908
+                                          if (currentnbvalue > removedflnb) {
909
+                                              var replacedstr = newnbvalue + ") " + splitdivtext[1];
910
+                                              $(this).text(replacedstr);
911
+                                          }
912
+                                      });
913
+
914
+                                      $("div:visible[id*='indflpicked']").each(function() {
915
+
916
+                                          var getdivtext =  $(this).text();
917
+                                          var splitdivtext = getdivtext.split(") ");
918
+                                          var currentnbvalue = parseInt(splitdivtext[0]);
919
+                                          var newnbvalue = currentnbvalue - 1;
920
+
921
+                                          if (currentnbvalue > removedflnb) {
922
+                                              var replacedstr = newnbvalue + ") " + splitdivtext[1];
923
+                                              $(this).text(replacedstr);
924
+                                          }
925
+                                      });
926
+
927
+                                   },
928
+                                   error: function() {
929
+                                              showAlert("Error while removing the file(s).");
930
+                                   }
931
+                           });
932
+
933
+                           $('#smstables').removeClass('icon-loading');
934
+                           $("#smstables").empty();
935
+                   });
936
+
937
+                   // Preview the uploaded file
938
+                   $("#mmsfoldersview").css("display", "inline-block");
939
+                   var mmsfilename = e.target.files[0].name;
940
+                   var baseUrl = firstPathEl+"/remote.php/webdav/SMS_Relentless/temp_files/"+mmsfilename;
941
+
942
+
943
+                   if (extension == 'jpg' || extension == 'jpeg') {
944
+                              $("#smstables").empty();
945
+                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedjpg" src="#" />');
946
+
947
+                              var reader = new FileReader();
948
+                              reader.onload = function (e) {
949
+                                  readjpg[mmsfilename] = e.target.result;
950
+                                  $("#uploadedjpg").attr('src', readjpg[mmsfilename]);
951
+                              }
952
+                              reader.readAsDataURL(e.target.files[0]);
953
+                   } else if (extension == 'png') {
954
+                              $("#smstables").empty();
955
+                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedpng" src="#" />');
956
+
957
+                              var reader = new FileReader();
958
+                              reader.onload = function (e) {
959
+                                  readpng[mmsfilename] = e.target.result;
960
+                                  $("#uploadedpng").attr('src', readpng[mmsfilename]);
961
+                              }
962
+                              reader.readAsDataURL(e.target.files[0]);
963
+
964
+                   } else if (extension == 'gif') {
965
+                              $("#smstables").empty();
966
+                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedgif" src="#" />');
967
+
968
+                              var reader = new FileReader();
969
+                              reader.onload = function (e) {
970
+                                  readgif[mmsfilename] = e.target.result;
971
+                                  $("#uploadedgif").attr('src', readgif[mmsfilename]);
972
+                              }
973
+                              reader.readAsDataURL(e.target.files[0]);
974
+
975
+                   } else if (extension == 'bmp') {
976
+                              $("#smstables").empty();
977
+                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedbmp" src="#" />');
978
+
979
+                              var reader = new FileReader();
980
+                              reader.onload = function (e) {
981
+                                  readbmp[mmsfilename] = e.target.result;
982
+                                  $("#uploadedbmp").attr('src', readbmp[mmsfilename]);
983
+                              }
984
+                              reader.readAsDataURL(e.target.files[0]);
985
+
986
+                   } else if (extension == 'tif' || extension == 'tiff') {
987
+                              var tiffile = '/remote.php/webdav/SMS_Relentless/temp_files/'+mmsfilename;
988
+                              var xhr = new XMLHttpRequest();
989
+                              xhr.responseType = 'arraybuffer';
990
+                              xhr.open('GET', tiffile);
991
+                              xhr.onload = function (e) {
992
+                                  var tiff = new Tiff({buffer: xhr.response});
993
+                                  var tifcanvas = tiff.toCanvas();
994
+                                  $("#smstables").empty();
995
+                                  $("#smstables").append(tifcanvas);
996
+                              };
997
+                              xhr.send();
998
+
999
+                   } else if (extension == 'pdf') {
1000
+                              var viewer = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
1001
+                              var $iframe = $('<iframe id="docviewer" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewer + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
1002
+                              $("#smstables").empty();
1003
+                              $("#smstables").append($iframe);
1004
+
1005
+                   } else if (extension == 'txt') {
1006
+                              var reader = new FileReader();
1007
+                              reader.readAsText(e.target.files[0]);
1008
+                              reader.onload = function(e) {
1009
+                                  readtxtfile[mmsfilename] = e.target.result.replace(/(?:\r\n|\r|\n)/g, '<br>');
1010
+                                  $("#smstables").empty();
1011
+                                  $("#smstables").append(readtxtfile[mmsfilename]);
1012
+                              };
1013
+                   } else if (extension == 'mp4') {
1014
+                              $("#smstables").empty();
1015
+                              $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmp4" src="'+ baseUrl +'"></video>');
1016
+                   } else if (extension == 'ogg') {
1017
+                              $("#smstables").empty();
1018
+                              $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedogg" src="'+ baseUrl +'"></video>');
1019
+                   } else if (extension == 'avi') {
1020
+                              $("#smstables").empty();
1021
+                              $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedavi" src="'+ baseUrl +'" type="video/avi"></video>');
1022
+                   } else if (extension == 'mpg' || extension == 'mpeg') {
1023
+                              $("#smstables").empty();
1024
+                              $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmpg" src="'+ baseUrl +'"></video>');
1025
+                   } else if (extension == 'wav' || extension == 'wave') {
1026
+                              $("#smstables").empty();
1027
+                              $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedwav" src="'+ baseUrl +'"></audio>');
1028
+                   } else if (extension == 'mp3') {
1029
+                              $("#smstables").empty();
1030
+                              $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmp3" src="'+ baseUrl +'" type="audio/mp3"></audio>');
1031
+                   } else if (extension == 'midi') {
1032
+                              $("#smstables").empty();
1033
+                              $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmidi" src="'+ baseUrl +'" type="audio/midi"></audio>');
1034
+                   }
1035
+
1036
+                   $("#smstables").show();
1037
+                   $('#pf_upload_msg').hide();
1038
+                   $('#smstables').removeClass('icon-loading');
1039
+                   $("#mmsfoldersview").hide();
1040
+                 },
1041
+                 error: function() {
1042
+                              showAlert("Error while uploading the file.");
1043
+                 }
1044
+               });
1045
+
1046
+            } else {
1047
+                  msgtotalflsize -= Math.floor((currentflsize/1024) * 100)/100;
1048
+                  adjustMaximumSize(uploadedtomms);
1049
+
1050
+                  showAlert("Error! You cannot send more than 10 files in one MMS !");
1051
+                  $('#pf_upload_msg').hide();
1052
+                  $('#smstables').removeClass('icon-loading');
1053
+            }
1054
+         } else {
1055
+              msgtotalflsize -= Math.floor((currentflsize/1024) * 100)/100;
1056
+              adjustMaximumSize(uploadedtomms);
1057
+
1058
+              showAlert("Error ! For "+ chosenProvFullName +", for the chosen files format, the size of all the included files plus the size of the text cannot be greater than "+ maxsizenonimage +" KB !");
1059
+              $('#pf_upload_msg').hide();
1060
+              $('#smstables').removeClass('icon-loading');
1061
+         }
1062
+       } else {
1063
+            msgtotalflsize -= Math.floor((currentflsize/1024) * 100)/100;
1064
+            adjustMaximumSize(uploadedtomms);
1065
+
1066
+            showAlert("Error ! There is already a file named '"+ fileuptrim +"' in the 'SMS_Relentless/temp_files' folder !");
1067
+            $('#pf_upload_msg').hide();
1068
+            $('#smstables').removeClass('icon-loading');
1069
+       }
1070
+
1071
+     } else {
1072
+          msgtotalflsize -= Math.floor((currentflsize/1024) * 100)/100;
1073
+          adjustMaximumSize(uploadedtomms);
1074
+
1075
+          showAlert("The file type is not supported! Supported extensions for "+ chosenProvFullName +" are: "+ validExtensions.join(", ") +".");
1076
+          $('#pf_upload_msg').hide();
1077
+          $('#smstables').removeClass('icon-loading');
1078
+     }
1079
+  });
1080
+
1081
+
1082
+  // Pick file(s) from Nextcloud, to send as MMS
1083
+  var mmsfilename = null;
1084
+
1085
+  $("#choosefilen").on("click", function(evn) {
1086
+
1087
+                OC.dialogs.filepicker(
1088
+                        t('settings', "Select a file to send as MMS."),
1089
+                        function (path) {
1090
+
1091
+                              OC.msg.startAction("#pf_choose_msg", t("sms_relentless", "Please wait ..."));
1092
+                              $('#smstables').addClass('icon-loading');
1093
+                              $('#filestotsize').show();
1094
+
1095
+                              var userid = "<?php p($userId); ?>";
1096
+                              var baseUrl = OC.generateUrl("/apps/sms_relentless/user/pickfile");
1097
+
1098
+                              mmsfilename = path.split('/').pop();
1099
+
1100
+                              if ($.inArray(mmsfilename, uploadedtomms) != -1) {
1101
+                                  var duplicatescheck = 1;
1102
+                              } else var duplicatescheck = 0;
1103
+
1104
+                              var extension = mmsfilename.replace(/^.*\./, '');
1105
+
1106
+                              if (extension == mmsfilename) {
1107
+                                  extension = "";
1108
+                              } else {
1109
+                                  extension = extension.toLowerCase();
1110
+                              }
1111
+
1112
+			      // If the picked file's format is different from jpeg, png or gif, the maximum allowed size of the message will be lower
1113
+			      if ($.inArray(extension, ["jpg", "jpeg", "png", "gif"]) === -1) {
1114
+				   maximumsize = maxsizenonimage;
1115
+			      }
1116
+
1117
+                              if ($.inArray(extension, validExtensions) != -1) {
1118
+
1119
+                                 if (duplicatescheck == 0) {
1120
+
1121
+                                    if (n <= maximumfilenumber) {
1122
+
1123
+                                       $.ajax({
1124
+                                          url: baseUrl + '/' + userid,
1125
+                                          type: "POST",
1126
+                                          data: { path: path },
1127
+                                          success: function(pickresult) {
1128
+
1129
+                                                uploadedtomms.push(mmsfilename);
1130
+
1131
+                                                var totalflsize = pickresult[0];
1132
+                                                var pickedflsize = pickresult[1];
1133
+
1134
+                                                // Check message size
1135
+                                                var rectotfilesz = parseFloat(totalflsize);
1136
+                                                var filesplustextsize = Number(rectotfilesz) + Number(textsizekb);
1137
+
1138
+                                                if (filesplustextsize <= maximumsize) {
1139
+
1140
+                                                    $("#mmsfoldersview").css("display", "inline-block");
1141
+
1142
+                                                    $('#filespickednc').append("<div class='indgenpckfls'><div id='"+n+"indflpicked' class='indivflpckd'>" + n + ") " + mmsfilename + "</div><div class='indpckfldl'>X</div></div>");
1143
+                                                    n++;
1144
+
1145
+                                                    msgtotalflsize = totalflsize;
1146
+                                                    $('#filessizetext').text(totalflsize);
1147
+                                                    $('#filestotsize').css('color', '#189558');
1148
+
1149
+                                                } else {
1150
+
1151
+                                                    uploadedtomms = uploadedtomms.filter(function(e) { return e !== mmsfilename });
1152
+                                                    $('#filestotsize').css('color', '#ba3555');
1153
+                                                    msgtotalflsize -= pickedflsize;
1154
+                                                    var baseUrlindrm = OC.generateUrl("/apps/sms_relentless/user/removeupfile");
1155
+
1156
+                                                    $.ajax({
1157
+                                                        url: baseUrlindrm + '/' + userid,
1158
+                                                        type: "POST",
1159
+                                                        data: {removedfilename: mmsfilename},
1160
+                                                        success: function(totalflsize) {
1161
+
1162
+                                                                          $('#filessizetext').text(totalflsize);
1163
+                                                                          $('#filestotsize').css('color', '#189558');
1164
+                                                                          adjustMaximumSize(uploadedtomms);
1165
+
1166
+                                                        },
1167
+                                                        error: function(totalflsize) {
1168
+                                                                          $('#filessizetext').text(totalflsize);
1169
+                                                                          if (parseFloat(totalflsize) > maximumsize) {
1170
+                                                                              $('#filestotsize').css('color', '#ba3555');
1171
+                                                                          } else { $('#filestotsize').css('color', '#189558'); }
1172
+                                                                          showAlert("Error while trying to remove the last picked file from the 'SMS_Relentless/temp_files' directory!");
1173
+                                                        }
1174
+                                                    });
1175
+
1176
+                                                    showAlert("Error ! For "+ chosenProvFullName +", for the chosen files format, the size of all the included files plus the size of the text cannot exceed "+ maximumsize +" KB !");
1177
+                                                }
1178
+
1179
+
1180
+                                                // Preview each file when you click on its name
1181
+                                                $("div:visible[id*='indflpicked']").each(function() {
1182
+                                                   $(this).on("click", function(event) {
1183
+
1184
+                                                      var mmsfilenameinit = $(this).text();
1185
+                                                      var mmsfilenamesec = mmsfilenameinit.substring(mmsfilenameinit.indexOf(" ") + 1);
1186
+                                                      var mmsfilenamesp = mmsfilenamesec.replace("X","");
1187
+                                                      var baseUrl = firstPathEl+"/remote.php/webdav/SMS_Relentless/temp_files/"+mmsfilenamesp;
1188
+                                                      var extenlst = mmsfilenamesp.replace(/^.*\./, '');
1189
+
1190
+                                                      if (extenlst == mmsfilenamesp) {
1191
+                                                           extenlst = "";
1192
+                                                      } else {
1193
+                                                           extenlst = extenlst.toLowerCase();
1194
+                                                      }
1195
+
1196
+                                                      if (extenlst == 'jpg' || extenlst == 'jpeg') {
1197
+                                                              $("#smstables").empty();
1198
+                                                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedjpg" src="'+ baseUrl +'" />');
1199
+                                                      } else if (extenlst == 'png') {
1200
+                                                              $("#smstables").empty();
1201
+                                                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedpng" src="'+ baseUrl +'" />');
1202
+                                                      } else if (extenlst == 'gif') {
1203
+                                                              $("#smstables").empty();
1204
+                                                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedgif" src="'+ baseUrl +'" />');
1205
+                                                      } else if (extenlst == 'bmp') {
1206
+                                                              $("#smstables").empty();
1207
+                                                              $("#smstables").append('<img style="width:auto;height:auto" id="uploadedbmp" src="'+ baseUrl +'" />');
1208
+                                                      } else if (extenlst == 'tif' || extenlst == 'tiff') {
1209
+                                                              var tiffile = '/remote.php/webdav/SMS_Relentless/temp_files/'+mmsfilenamesp;
1210
+                                                              var xhr = new XMLHttpRequest();
1211
+                                                              xhr.responseType = 'arraybuffer';
1212
+                                                              xhr.open('GET', tiffile);
1213
+                                                              xhr.onload = function (evnt) {
1214
+                                                                  var tiff = new Tiff({buffer: xhr.response});
1215
+                                                                  var tifcanvas = tiff.toCanvas();
1216
+                                                                  $("#smstables").empty();
1217
+                                                                  $("#smstables").append(tifcanvas);
1218
+                                                              };
1219
+                                                              xhr.send();
1220
+                                                      } else if (extenlst == 'pdf') {
1221
+                                                              var viewerclick = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: baseUrl});
1222
+                                                              var $iframe = $('<iframe id="docclickview" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewerclick + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
1223
+                                                              $("#smstables").empty();
1224
+                                                              $("#smstables").append($iframe);
1225
+                                                      } else if (extenlst == 'txt') {
1226
+                                                              $("#smstables").empty();
1227
+                                                              $("#smstables").append(readtxtfile[mmsfilenamesp]);
1228
+                                                      } else if (extension == 'mp4') {
1229
+							      $("#smstables").empty();
1230
+							      $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmp4" src="'+ baseUrl +'"></video>');
1231
+						      } else if (extension == 'ogg') {
1232
+							      $("#smstables").empty();
1233
+							      $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedogg" src="'+ baseUrl +'"></video>');
1234
+						      } else if (extension == 'avi') {
1235
+							      $("#smstables").empty();
1236
+							      $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedavi" src="'+ baseUrl +'" type="video/avi"></video>');
1237
+						      } else if (extension == 'mpg' || extension == 'mpeg') {
1238
+							      $("#smstables").empty();
1239
+							      $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmpg" src="'+ baseUrl +'"></video>');
1240
+						      } else if (extension == 'wav' || extension == 'wave') {
1241
+							      $("#smstables").empty();
1242
+							      $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedwav" src="'+ baseUrl +'"></audio>');
1243
+						      } else if (extension == 'mp3') {
1244
+							      $("#smstables").empty();
1245
+							      $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmp3" src="'+ baseUrl +'" type="audio/mp3"></audio>');
1246
+						      } else if (extension == 'midi') {
1247
+							      $("#smstables").empty();
1248
+							      $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmidi" src="'+ baseUrl +'" type="audio/midi"></audio>');
1249
+						      }
1250
+
1251
+
1252
+                                                      $("#smstables").show();
1253
+                                                      $("#mmsfoldersview").hide();
1254
+                                                   });
1255
+                                                });
1256
+
1257
+
1258
+                                                // Remove picked files
1259
+                                                $('[class*="indpckfldl"]').last().click(function() {
1260
+                                                    var userid = "<?php p($userId); ?>";
1261
+                                                    var baseUrl = OC.generateUrl("/apps/sms_relentless/user/removeupfile");
1262
+
1263
+                                                    var removedfilenameinit = $(this).closest('[class*="indgenpckfls"]').find('[class*="indivflpckd"]').text();
1264
+
1265
+                                                    var removedfilesplit = removedfilenameinit.split(") ");
1266
+                                                    var removedflnb = parseInt(removedfilesplit[0]);
1267
+
1268
+                                                    $(this).closest('[class*="indgenpckfls"]').find('[class*="indivflpckd"]').hide();
1269
+                                                    $(this).hide();
1270
+                                                    var removedfilename = removedfilenameinit.substring(removedfilenameinit.indexOf(" ") + 1);
1271
+
1272
+                                                    uploadedtomms = $.grep(uploadedtomms, function(value) {
1273
+                                                             return value != removedfilename;
1274
+                                                    });
1275
+
1276
+                                                    $.ajax({
1277
+                                                        url: baseUrl + '/' + userid,
1278
+                                                        type: "POST",
1279
+                                                        data: {removedfilename: removedfilename},
1280
+                                                        success: function(totalflsize) {
1281
+
1282
+                                                             msgtotalflsize = totalflsize;
1283
+                                                             $('#filessizetext').text(totalflsize);
1284
+                                                             adjustMaximumSize(uploadedtomms);
1285
+
1286
+                                                             // Check message size
1287
+                                                             var rectotfilesz = parseFloat(totalflsize);
1288
+
1289
+                                                             if (rectotfilesz > maximumsize) {
1290
+                                                                 $('#filestotsize').css('color', '#ba3555');
1291
+                                                                 showAlert("Error ! For "+ chosenProvFullName +", for the chosen files format, the size of all the included files plus the size of the text cannot exceed "+ maximumsize +" KB !");
1292
+                                                                 $('#submitsms').attr("disabled", true);
1293
+                                                             } else {
1294
+                                                                 $('#submitsms').attr("disabled", false);
1295
+                                                                 $('#filestotsize').css('color', '#189558');
1296
+                                                               }
1297
+
1298
+                                                             // Rewrite order numbers for files that follow
1299
+                                                             --n;
1300
+                                                             $("div:visible[id*='indflpicked']").each(function() {
1301
+
1302
+                                                                  var getdivtext =  $(this).text();
1303
+                                                                  var splitdivtext = getdivtext.split(") ");
1304
+                                                                  var currentnbvalue = parseInt(splitdivtext[0]);
1305
+                                                                  var newnbvalue = currentnbvalue - 1;
1306
+
1307
+                                                                  if (currentnbvalue > removedflnb) {
1308
+                                                                      var replacedstr = newnbvalue + ") " + splitdivtext[1];
1309
+                                                                      $(this).text(replacedstr);
1310
+                                                                  }
1311
+                                                             });
1312
+                                                        },
1313
+                                                        error: function() {
1314
+                                                                  showAlert("Error while removing the file.");
1315
+                                                        }
1316
+                                                    });
1317
+
1318
+                                                    $('#smstables').removeClass('icon-loading');
1319
+                                                    $("#smstables").empty();
1320
+                                                });
1321
+
1322
+
1323
+		                                // Preview the picked file
1324
+		                                $("#mmsfoldersview").css("display", "inline-block");
1325
+		                                var flUrl = firstPathEl+"/remote.php/webdav/SMS_Relentless/temp_files/"+mmsfilename;
1326
+		                                var pickUrl = OC.generateUrl("/apps/sms_relentless/user/getpickedfile");
1327
+
1328
+
1329
+						if (extension == 'jpg' || extension == 'jpeg') {
1330
+
1331
+		                                            $("#smstables").empty();
1332
+		                                            $("#smstables").append('<img style="width:auto;height:auto" id="uploadedjpg" src="'+ flUrl +'" />');
1333
+
1334
+		                                } else if (extension == 'png') {
1335
+
1336
+		                                            $("#smstables").empty();
1337
+		                                            $("#smstables").append('<img style="width:auto;height:auto" id="uploadedpng" src="'+ flUrl +'" />');
1338
+
1339
+		                                } else if (extension == 'gif') {
1340
+
1341
+		                                            $("#smstables").empty();
1342
+		                                            $("#smstables").append('<img style="width:auto;height:auto" id="uploadedgif" src="'+ flUrl +'" />');
1343
+
1344
+		                                } else if (extension == 'bmp') {
1345
+
1346
+	                                                    $("#smstables").empty();
1347
+		                                            $("#smstables").append('<img style="width:auto;height:auto" id="uploadedbmp" src="'+ flUrl +'" />');
1348
+
1349
+		                                } else if (extension == 'tif' || extension == 'tiff') {
1350
+
1351
+		                                       var tiffile = '/remote.php/webdav/SMS_Relentless/temp_files/'+mmsfilename;
1352
+		                                       var xhr = new XMLHttpRequest();
1353
+		                                       xhr.responseType = 'arraybuffer';
1354
+		                                       xhr.open('GET', tiffile);
1355
+		                                       xhr.onload = function (event) {
1356
+		                                           var tiff = new Tiff({buffer: xhr.response});
1357
+		                                           var tifcanvas = tiff.toCanvas();
1358
+		                                           $("#smstables").empty();
1359
+		                                           $("#smstables").append(tifcanvas);
1360
+		                                       };
1361
+		                                       xhr.send();
1362
+
1363
+		                                } else if (extension == 'pdf') {
1364
+
1365
+		                                       var viewer = OC.generateUrl('/apps/files_pdfviewer/?file={file}', {file: flUrl});
1366
+		                                       var $iframe = $('<iframe id="docviewer" style="width:100%;height:100%;display:block;position:absolute;top:0;left:0;z-index:1041;" src="' + viewer + '" sandbox="allow-scripts allow-same-origin allow-popups allow-modals"></iframe>');
1367
+		                                       $("#smstables").empty();
1368
+		                                       $("#smstables").append($iframe);
1369
+
1370
+		                                } else if (extension == 'txt') {
1371
+
1372
+							     $.get(flUrl, function(textdata) {
1373
+		                                               readtxtfile[mmsfilename] = textdata.replace(/(?:\r\n|\r|\n)/g, '<br>');
1374
+		                                               $("#smstables").empty();
1375
+							       $("#smstables").append(readtxtfile[mmsfilename]);
1376
+							     });
1377
+
1378
+		                                } else if (extension == 'mp4') {
1379
+						       $("#smstables").empty();
1380
+						       $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmp4" src="'+ baseUrl +'"></video>');
1381
+						} else if (extension == 'ogg') {
1382
+						       $("#smstables").empty();
1383
+						       $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedogg" src="'+ baseUrl +'"></video>');
1384
+						} else if (extension == 'avi') {
1385
+						       $("#smstables").empty();
1386
+						       $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedavi" src="'+ baseUrl +'" type="video/avi"></video>');
1387
+						} else if (extension == 'mpg' || extension == 'mpeg') {
1388
+						       $("#smstables").empty();
1389
+						       $("#smstables").append('<video width="100%" height="auto" controls><source id="uploadedmpg" src="'+ baseUrl +'"></video>');
1390
+						} else if (extension == 'wav' || extension == 'wave') {
1391
+						       $("#smstables").empty();
1392
+						       $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedwav" src="'+ baseUrl +'"></audio>');
1393
+						} else if (extension == 'mp3') {
1394
+						       $("#smstables").empty();
1395
+						       $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmp3" src="'+ baseUrl +'" type="audio/mp3"></audio>');
1396
+						} else if (extension == 'midi') {
1397
+						       $("#smstables").empty();
1398
+						       $("#smstables").append('<audio width="100%" height="auto" controls><source id="uploadedmidi" src="'+ baseUrl +'" type="audio/midi"></audio>');
1399
+						}
1400
+
1401
+
1402
+		                                $("#smstables").show();
1403
+
1404
+		                                $('#pf_choose_msg').hide();
1405
+		                                $('#smstables').removeClass('icon-loading');
1406
+		                                $("#mmsfoldersview").hide();
1407
+
1408
+                                          },
1409
+
1410
+                                          error: function(data){
1411
+                                                      showAlert("Error while getting the file.");
1412
+                                          }
1413
+
1414
+                                       });
1415
+
1416
+                                    } else {
1417
+                                        showAlert("Error ! You cannot send more than "+ maximumfilenumber +" files in one MMS message !");
1418
+                                        $('#pf_choose_msg').hide();
1419
+                                        $('#smstables').removeClass('icon-loading');
1420
+                                      }
1421
+                                 } else {
1422
+                                      showAlert("Error ! There is already a file named '"+ mmsfilename +"' in the 'SMS_Relentless/temp_files' folder !");
1423
+                                      $('#pf_choose_msg').hide();
1424
+                                      $('#smstables').removeClass('icon-loading');
1425
+                                   }
1426
+
1427
+                              } else {
1428
+                                   showAlert("The file type is not supported! Supported extensions for "+ chosenProvFullName +" are: "+ validExtensions.join(", ") +".");
1429
+                                   $('#pf_choose_msg').hide();
1430
+                                   $('#smstables').removeClass('icon-loading');
1431
+                                }
1432
+
1433
+                        }
1434
+                );
1435
+  });
1436
+
1437
+
1438
+
1439
+  // Send the SMS/MMS message
1440
+  $("#submitsms").on("click", function(event) {
1441
+
1442
+     if (isMMS == 0) { var sendingtype = 'SMS'; } else { var sendingtype = 'MMS'; }
1443
+     OC.msg.startAction("#sms_submit_msg", t("sms_relentless", "Sending "+ sendingtype +" ... Please wait !"));
1444
+     $("#sms_submit_msg").css("display", "inline-block");
1445
+     $('#smstables,#recSmsTable,#sentSmsTable').addClass('icon-loading');
1446
+
1447
+     if (selectedid != '') { 
1448
+
1449
+         var sendersplit = selectedid.split(":");
1450
+         var providercap = sendersplit[0];
1451
+         var provsec = sendersplit[1];
1452
+
1453
+         if (/[a-zA-Z]/.test(provsec)) {
1454
+             var alphanumcheck = true;
1455
+         } else { var alphanumcheck = false; }
1456
+
1457
+         if (providercap == 'Tx' && alphanumcheck == false) {  
1458
+             var senderproc = selectedid.replace(/[^0-9]/g, "");
1459
+             var selectedsender = "+" + senderproc;
1460
+             var providerUsed = "telnyx";
1461
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
1462
+         } else if (providercap == 'Pl' && alphanumcheck == false) {
1463
+             var selectedsender = selectedid.replace(/[^0-9]/g, "");
1464
+             var providerUsed = "plivo";
1465
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
1466
+         } else if (providercap == 'Tw' && alphanumcheck == false) {  
1467
+             var senderproc = selectedid.replace(/[^0-9]/g, "");
1468
+             var selectedsender = "+" + senderproc;
1469
+             var providerUsed = "twilio";
1470
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
1471
+         } else if (providercap == 'Fl' && alphanumcheck == false) {  
1472
+             var senderproc = selectedid.replace(/[^0-9]/g, "");
1473
+             var selectedsender = "+" + senderproc;
1474
+             var providerUsed = "flowroute";
1475
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
1476
+         } else if (providercap == 'Tx' && alphanumcheck == true) {
1477
+             var selectedsender = provsec;
1478
+             var providerUsed = "telnyx";
1479
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
1480
+         } else if (providercap == 'Pl' && alphanumcheck == true) {
1481
+             var selectedsender = provsec;
1482
+             var providerUsed = "plivo";
1483
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
1484
+         } else if (providercap == 'Tw' && alphanumcheck == true) {
1485
+             var selectedsender = provsec;
1486
+             var providerUsed = "twilio";
1487
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
1488
+         } else if (providercap == 'Fl' && alphanumcheck == true) {
1489
+             var selectedsender = provsec;
1490
+             var providerUsed = "flowroute";
1491
+             var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
1492
+         }
1493
+
1494
+         // Get the interval between message consecutive sending requests, if it's the case
1495
+         if ($('#tomultchckbx').is(':checked')) {
1496
+
1497
+             var numbersfile = 1;
1498
+             var initinterval = $("#multsmsinterval").val();
1499
+             var secinterval = initinterval.replace(/[^0-9]/g, "");
1500
+
1501
+             if (secinterval != '') {
1502
+                 var tertinterval = parseInt(secinterval);
1503
+                     waittime = tertinterval;
1504
+             }
1505
+
1506
+         } else {
1507
+
1508
+             var numbersfile = 0;
1509
+             var toNumberinit = $('#smsto').val();
1510
+             var toNumber = toNumberinit.replace(/[^0-9,]/g, "");
1511
+             var toNumbersec = toNumber.split(",");
1512
+
1513
+                 for (var i = 0; i < toNumbersec.length; i++) {
1514
+                      toNumbersec[i] = "+" + toNumbersec[i];
1515
+                 }
1516
+
1517
+                 receiversNumbers = toNumbersec.filter(function(v){return v!==""});
1518
+         }
1519
+
1520
+         if (numbersfile == 0 && $('#smsto').val().trim() == '') { receiversNumbers.length = 0; }
1521
+
1522
+         var smstext = $("#smstext").val();
1523
+
1524
+         if (receiversNumbers.length != 0) {
1525
+
1526
+              if (smstext != '') {
1527
+                  $.ajax({
1528
+                     url: relbaseUrl + '/' + userid,
1529
+                     type: "POST",
1530
+                     data: {
1531
+                           receiversPhoneNbs: receiversNumbers,
1532
+                           fromsender: selectedsender,
1533
+                           waitinterval: waittime,
1534
+                           sentsmstext: smstext,
1535
+                           ismms: isMMS,
1536
+                           mmsfiles: uploadedtomms
1537
+                         },
1538
+                     success: function() {
1539
+
1540
+                           if (receiversNumbers.length == 1) {
1541
+                                   showAlert("The message has been sent ! You can press the 'Sent SMS Messages' button to check the current status and the delivery receipt for this message. If they don't appear immediately, wait about 10 seconds and press the button again.");
1542
+                           } else {
1543
+                                   showAlert("The messages have been sent ! You can press the 'Sent SMS Messages' button to check the current status and the delivery receipt for each message. If they don't appear immediately, wait about 10 seconds and press the button again.");
1544
+                           }
1545
+
1546
+                           $('#sms_submit_msg').hide();
1547
+                           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1548
+                     },
1549
+                     error: function() {
1550
+                           showAlert("Error! Please check the recipient's phone number and your settings!");
1551
+                           $('#sms_submit_msg').hide();
1552
+                           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1553
+                     }
1554
+                  });
1555
+              } else {
1556
+                     showAlert("Please enter a message in the text box !");
1557
+
1558
+                     $('#sms_submit_msg').hide();
1559
+                     $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1560
+              }
1561
+         } else if (receiversNumbers.length == 0 && !($('#tomultchckbx').is(':checked'))) {
1562
+                 showAlert("Please enter the recipient's phone number !");
1563
+                 $('#sms_submit_msg').hide();
1564
+                 $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1565
+         } else if (receiversNumbers.length == 0 && $('#tomultchckbx').is(':checked')) {
1566
+                 showAlert("Please upload a txt or csv file that contains phone numbers separated by commas, semicolons, vertical bars or new lines !");
1567
+                 $('#sms_submit_msg').hide();
1568
+                 $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1569
+         }
1570
+     } else {
1571
+           showAlert("Please choose a Sender ID from the Set ID drop-down list !");
1572
+           $('#smstables,#recSmsTable,#sentSmsTable').removeClass('icon-loading');
1573
+           $('#sms_submit_msg').hide();
1574
+     }
1575
+
1576
+  });
1577
+
1578
+  // Check the checkbox to delete old messages from the database
1579
+  $('#deleteoldchckbox').change(function() {
1580
+     if ($(this).is(':checked')) {
1581
+         $("#deleteoldsms").css("display", "block");
1582
+     } else {
1583
+         $("#deleteoldsms").css("display", "none");
1584
+     }
1585
+  });
1586
+
1587
+  // Set the height of info notes
1588
+  $('#setcalleridtp').css('height', $(window).height() - 160);
1589
+  $('#tonmbrformat').css('height', $(window).height() - 260);
1590
+  $('#uploadfileinfo').css('height', $(window).height() - 390);
1591
+
1592
+  $(window).resize(function() { 
1593
+     $('#setcalleridtp').css('height', $(window).height() - 160);
1594
+     $('#tonmbrformat').css('height', $(window).height() - 260);
1595
+     $('#uploadfileinfo').css('height', $(window).height() - 390);
1596
+  });
1597
+
1598
+
1599
+  function showAlert(alertText) {
1600
+
1601
+     let alertwnd = "<div id='alertMessage'>";
1602
+     alertwnd += "<a id='closeAlertWnd' title='Close this window'></a>";
1603
+     alertwnd += "<div id='alertTextWrap'>"+ alertText +"</div>";
1604
+     alertwnd += "<input type='submit' id='alertOk' value='OK'>";
1605
+     alertwnd += "</div>";
1606
+
1607
+     $("#content").append("<div id='alertMsgOverlay'></div>");
1608
+     $("#content").append(alertwnd);
1609
+
1610
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
1611
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
1612
+     $("#alertMessage").css({ "top" : topDist, "left" : leftDist });
1613
+
1614
+     $("#closeAlertWnd").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
1615
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
1616
+     $("#alertOk").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
1617
+  }
0 1618
new file mode 100644
... ...
@@ -0,0 +1,836 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+$(document).ready(function() {
24
+
25
+  var userid = "<?php p($userId); ?>";
26
+  var isadm = '';
27
+
28
+  // Get personal settings
29
+  var baseUrlget = OC.generateUrl('/apps/sms_relentless/user/getsettings');
30
+
31
+  $.ajax({
32
+     method: 'GET',
33
+     url: baseUrlget + '/' + userid,
34
+     contentType: 'application/json',
35
+     success: function(settingsfromdb) {
36
+
37
+         // Add the webhook URLs section, if the user is not an admin
38
+         if (settingsfromdb.adminornot == 'reguser') {
39
+
40
+             isadm = 'reguser';
41
+
42
+             $("#appTitlePrg").append('<p id="settings-dscr"><h3>Enter your options in the fields from below. As a non-admin user, you can use any of the SMS service providers from \
43
+                  below, on the condition that an admin has shared with you his API keys for that provider:</h3></p><br>');
44
+
45
+             $("#nadmProvSection").append('<div class="providerSettings"><p><label for="telapi_url_rec" class="setlabeltext"><b>Telnyx webhook URL for incoming SMS/MMS</b> (Generate \
46
+                  the URL by pressing the button from below. Don\'t forget to also click the \'Save\' button at the bottom of this page after entering all the options, to save \
47
+                  all the settings to the database.)</label></p> \
48
+                  <input type="button" id="generate_tel_rcpt" class="generateUrl" value="Generate new webhook URL for incoming SMS/MMS" /> \
49
+                  <input type="text" class="smsr_textboxspec" id="telapi_url_rec" name="telapi_url_rec" autocomplete="false" /> \
50
+                  <span id="copyToClipboardtel" class="icon icon-clippy" title="Copy to clipboard"></span><br><br> \
51
+                  \
52
+                  <p><label for="telapi_url" class="setlabeltext"><b>Telnyx webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in message sending \
53
+                  requests, so that Telnyx will know where to send the delivery receipts. Just generate it by pressing the button from below. Don\'t forget to click the \'Save\' \
54
+                  button at the bottom of this page after entering all the options, to save all the settings to the database.)</label></p> \
55
+                  <input type="button" id="generate_tel_delrcpt" class="generateUrl" value="Generate new webhook URL for delivery receipts" /> \
56
+                  <input type="text" id="telapi_url" name="telapi_url" autocomplete="false" /></div><br><br> \
57
+                  \
58
+                  <div class="providerSettings"><p><label for="nexapi_url_rec" class="setlabeltext"><b>Plivo webhook URL for incoming SMS/MMS</b> (Generate the URL by pressing \
59
+                  the button from below. Don\'t forget to also click the \'Save\' button at the bottom of this page after entering all the options, to save all the settings \
60
+                  to the database.)</label></p> \
61
+                  <input type="button" id="generate_nex_rcpt" class="generateUrl" value="Generate new webhook URL for incoming SMS/MMS" /> \
62
+                  <input type="text" class="smsr_textboxspec" id="nexapi_url_rec" name="nexapi_url_rec" autocomplete="false" /> \
63
+                  <span id="copyToClipboardnex" class="icon icon-clippy" title="Copy to clipboard"></span><br><br> \
64
+                  \
65
+                  <p><label for="nexapi_url" class="setlabeltext"><b>Plivo webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in message sending \
66
+                  requests, so that Plivo will know where to send the delivery receipts. Just generate it by pressing the button from below. Don\'t forget to click the \'Save\' \
67
+                  button at the bottom of this page after entering all the options, to save all the settings to the database.)</label></p> \
68
+                  <input type="button" id="generate_nex_delrcpt" class="generateUrl" value="Generate new webhook URL for delivery receipts" /> \
69
+                  <input type="text" id="nexapi_url" name="nexapi_url" autocomplete="false" /></div><br><br> \
70
+                  \
71
+                  <div class="providerSettings"><p><label for="twilapi_url_rec" class="setlabeltext"><b>Twilio webhook URL for incoming SMS/MMS</b> (Generate the URL by pressing \
72
+                  the button from below. Don\'t forget to also click the \'Save\' button at the bottom of this page after entering all the options, to save all the settings to \
73
+                  the database.)</label></p> \
74
+                  <input type="button" id="generate_twil_rcpt" class="generateUrl" value="Generate new webhook URL for incoming SMS/MMS" /> \
75
+                  <input type="text" class="smsr_textboxspec" id="twilapi_url_rec" name="twilapi_url_rec" autocomplete="false" /> \
76
+                  <span id="copyToClipboardtwil" class="icon icon-clippy" title="Copy to clipboard"></span><br><br> \
77
+                  \
78
+                  <p><label for="twilapi_url" class="setlabeltext"><b>Twilio webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in message sending \
79
+                  requests, so that Twilio will know where to send the delivery receipts. Just generate it by pressing the button from below. Don\'t forget to click the \'Save\' \
80
+                  button at the bottom of this page after entering all the options, to save all the settings to the database.)</label></p> \
81
+                  <input type="button" id="generate_twil_delrcpt" class="generateUrl" value="Generate new webhook URL for delivery receipts" /> \
82
+                  <input type="text" id="twilapi_url" name="twilapi_url" autocomplete="false" /></div><br><br> \
83
+                  \
84
+                  <div class="providerSettings"><p><label for="flowapi_url_rec" class="setlabeltext"><b>Flowroute webhook URL for incoming SMS/MMS</b> (Generate the URL by pressing \
85
+                  the button from below. Don\'t forget to also click the \'Save\' button at the bottom of this page after entering all the options, to save all the settings to \
86
+                  the database.)</label></p> \
87
+                  <input type="button" id="generate_flow_rcpt" class="generateUrl" value="Generate new webhook URL for incoming SMS/MMS" /> \
88
+                  <input type="text" class="smsr_textboxspec" id="flowapi_url_rec" name="flowapi_url_rec" autocomplete="false" /> \
89
+                  <span id="copyToClipboardflow" class="icon icon-clippy" title="Copy to clipboard"></span><br><br> \
90
+                  \
91
+                  <p><label for="flowapi_url" class="setlabeltext"><b>Flowroute webhook URL for delivery receipts</b> (This URL will be included by SMS Relentless in message sending \
92
+                  requests, so that Flowroute will know where to send the delivery receipts. Just generate it by pressing the button from below. Don\'t forget to click the \'Save\' \
93
+                  button at the bottom of this page after entering all the options, to save all the settings to the database.)</label></p> \
94
+                  <input type="button" id="generate_flow_delrcpt" class="generateUrl" value="Generate new webhook URL for delivery receipts" /> \
95
+                  <input type="text" id="flowapi_url" name="flowapi_url" autocomplete="false" /><br><br> \
96
+                  Flowroute only supports sending/receiving SMS/MMS messages within USA and Canada and it doesn\'t support Alphanumeric Sender IDs.</div><br>');
97
+
98
+
99
+		  $("#telapi_url_rec").val(settingsfromdb.telapi_url_rec);
100
+		  $("#telapi_url").val(settingsfromdb.telapi_url);
101
+		  $("#nexapi_url_rec").val(settingsfromdb.nexapi_url_rec);
102
+		  $("#nexapi_url").val(settingsfromdb.nexapi_url);
103
+		  $("#twilapi_url_rec").val(settingsfromdb.twilapi_url_rec);
104
+		  $("#twilapi_url").val(settingsfromdb.twilapi_url);
105
+		  $("#flowapi_url_rec").val(settingsfromdb.flowapi_url_rec);
106
+		  $("#flowapi_url").val(settingsfromdb.flowapi_url);
107
+		  $("#messagesperpage").val(settingsfromdb.messagesperpage);
108
+
109
+		  if (settingsfromdb.get_notify == 1) {
110
+		      $("#get_notify").attr('checked', true);
111
+		  } else {
112
+		      $("#get_notify").attr('checked', false);
113
+		  }
114
+
115
+		  $("#notification_email").val(settingsfromdb.notification_email);
116
+
117
+		  if (settingsfromdb.getsmsinemail == 1) {
118
+		      $("#includesmsinemail").attr('checked', true);
119
+		  } else {
120
+		      $("#includesmsinemail").attr('checked', false);
121
+		  }
122
+
123
+		  if (settingsfromdb.show_display_names == 1) {
124
+		      $("#showdisplaynames").attr('checked', true);
125
+		  } else {
126
+		      $("#showdisplaynames").attr('checked', false);
127
+		  }
128
+
129
+		  function randomStr(strlength) {
130
+			var fintext = "";
131
+			var keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
132
+			for (var i = 0; i < strlength; i++) {
133
+			     fintext += keyspace.charAt(Math.floor(Math.random() * keyspace.length));
134
+			}
135
+			return fintext;
136
+		  }
137
+
138
+		  $("#generate_tel_rcpt").on("click", function(event) {
139
+
140
+		     var teltokenrec = randomStr(70);
141
+		     var telnyxwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstel?telrecparam=') + teltokenrec;
142
+
143
+		     $("#telapi_url_rec").val(telnyxwhurlrec);
144
+		  });
145
+
146
+		  $("#copyToClipboardtel").on("click", function(event) {
147
+		     var $tempEl = $("<input>");
148
+		     $("body").append($tempEl);
149
+		     $tempEl.val($("#telapi_url_rec").val()).select();
150
+		     document.execCommand("Copy");
151
+		     $tempEl.remove();
152
+		     showAlert("The link has been copied to your clipboard!");
153
+		  });
154
+
155
+		  $("#generate_tel_delrcpt").on("click", function(event) {
156
+
157
+		     var teltoken = randomStr(70);
158
+		     var telnyxwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytel?teldrparam=') + teltoken;
159
+
160
+		     $("#telapi_url").val(telnyxwhurl);
161
+		  });
162
+
163
+
164
+		  $("#generate_nex_rcpt").on("click", function(event) {
165
+
166
+		     var plivotokenrec = randomStr(70);
167
+		     var plivowhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsnex?plivorecparam=') + plivotokenrec;
168
+
169
+		     $("#nexapi_url_rec").val(plivowhurlrec);
170
+		  });
171
+
172
+		  $("#copyToClipboardnex").on("click", function(event) {
173
+		     var $tempElpl = $("<input>");
174
+		     $("body").append($tempElpl);
175
+		     $tempElpl.val($("#nexapi_url_rec").val()).select();
176
+		     document.execCommand("Copy");
177
+		     $tempElpl.remove();
178
+		     showAlert("The link has been copied to your clipboard!");
179
+		  });
180
+
181
+		  $("#generate_nex_delrcpt").on("click", function(event) {
182
+
183
+		     var plivotoken = randomStr(70);
184
+		     var plivodrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverynex?plivodrparam=') + plivotoken;
185
+
186
+		     $("#nexapi_url").val(plivodrwhurl);
187
+		  });
188
+
189
+
190
+		  $("#generate_twil_rcpt").on("click", function(event) {
191
+
192
+		     var twiltokenrec = randomStr(35);
193
+		     var twilwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmstwil?twilrecparam=') + twiltokenrec;
194
+
195
+		     $("#twilapi_url_rec").val(twilwhurlrec);
196
+		  });
197
+
198
+		  $("#copyToClipboardtwil").on("click", function(event) {
199
+		     var $tempElpl = $("<input>");
200
+		     $("body").append($tempElpl);
201
+		     $tempElpl.val($("#twilapi_url_rec").val()).select();
202
+		     document.execCommand("Copy");
203
+		     $tempElpl.remove();
204
+		     showAlert("The link has been copied to your clipboard!");
205
+		  });
206
+
207
+		  $("#generate_twil_delrcpt").on("click", function(event) {
208
+
209
+		     var twiltoken = randomStr(35);
210
+		     var twildrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliverytwil?twildrparam=') + twiltoken;
211
+
212
+		     $("#twilapi_url").val(twildrwhurl);
213
+		  });
214
+
215
+
216
+		  $("#generate_flow_rcpt").on("click", function(event) {
217
+
218
+		     var flowtokenrec = randomStr(70);
219
+		     var flowwhurlrec = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recsmsflow?flowrecparam=') + flowtokenrec;
220
+
221
+		     $("#flowapi_url_rec").val(flowwhurlrec);
222
+		  });
223
+
224
+		  $("#copyToClipboardflow").on("click", function(event) {
225
+		     var $tempElpl = $("<input>");
226
+		     $("body").append($tempElpl);
227
+		     $tempElpl.val($("#flowapi_url_rec").val()).select();
228
+		     document.execCommand("Copy");
229
+		     $tempElpl.remove();
230
+		     showAlert("The link has been copied to your clipboard!");
231
+		  });
232
+
233
+		  $("#generate_flow_delrcpt").on("click", function(event) {
234
+
235
+		     var flowtoken = randomStr(70);
236
+		     var flowdrwhurl = window.location.origin + OC.generateUrl('/apps/sms_relentless/api/recdeliveryflow?flowdrparam=') + flowtoken;
237
+
238
+		     $("#flowapi_url").val(flowdrwhurl);
239
+		  });
240
+
241
+
242
+         } else if (settingsfromdb.adminornot == 'admin') {
243
+
244
+                  $("#appTitlePrg").append('<p id="settings-dscr"><h3>Enter your options in the fields from below:</h3></p><br>');
245
+                  isadm = 'admin';
246
+
247
+		  $("#messagesperpage").val(settingsfromdb.messagesperpage);
248
+
249
+		  if (settingsfromdb.get_notify == 1) {
250
+		      $("#get_notify").attr('checked', true);
251
+		  } else {
252
+		      $("#get_notify").attr('checked', false);
253
+		  }
254
+
255
+		  $("#notification_email").val(settingsfromdb.notification_email);
256
+
257
+		  if (settingsfromdb.getsmsinemail == 1) {
258
+		      $("#includesmsinemail").attr('checked', true);
259
+		  } else {
260
+		      $("#includesmsinemail").attr('checked', false);
261
+		  }
262
+
263
+		  if (settingsfromdb.show_display_names == 1) {
264
+		      $("#showdisplaynames").attr('checked', true);
265
+		  } else {
266
+		      $("#showdisplaynames").attr('checked', false);
267
+		  }
268
+         }
269
+
270
+
271
+         // Auto-reply settings
272
+
273
+         // Get the available phone numbers from all providers associated with the access keys entered on the Settings page (restrictions are applied to numbers for non-admins)
274
+         $("#autoRplPhoneNb").addClass('icon-loading');
275
+         var getnumbersUrl = OC.generateUrl("/apps/sms_relentless/user/getautoreplyconf");
276
+
277
+	 $.ajax({
278
+		  url: getnumbersUrl + '/' + userid,
279
+		  type: "GET",
280
+                  contentType: 'application/json',
281
+		  success: function(autoreplydata) {
282
+
283
+                                    $("#autoRplPhoneNb").removeClass('icon-loading');
284
+                                    var cusrDisplayName = autoreplydata.userdisplayname;
285
+                                    var availPhoneNmbrs = autoreplydata.phonenumbers;
286
+                                    var autorpldata = autoreplydata.autoreplies;
287
+
288
+				    if (autorpldata.length > 0) { 
289
+				        var arplNmb = autorpldata.length;
290
+				    } else { 
291
+				        var arplNmb = 0; 
292
+				    }
293
+
294
+				    // List the auto-replies for the phone numbers available for the current user
295
+				    if (arplNmb == 0) {
296
+
297
+				        $("#autoReplyTbl").append("<tr><td><input type='text' class='arplAuthor' value='"+ cusrDisplayName +"' disabled></td><td><select id='arpphn-"+ arplNmb +"' class='arplPhoneNmbr'></select></td><td><div id='arplmode-"+ arplNmb +"' class='arplMode'><select id='modeselect-"+ arplNmb +"' class='selectArplMode'><option value='' selected>Select mode</option><option value='daily'>Daily mode</option><option value='vacation'>Vacation mode</option></select><div id='modecont-"+ arplNmb +"' class='modeContent'></div></div></td><td><textarea id='arpltxt-"+ arplNmb +"' class='arplText' rows='20' cols='40' placeholder='Enter the auto-reply message here.'></textarea></td><td><img id='rmRow-"+ arplNmb +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:9px 8px 0px 18px;'></td><td><input type='submit' id='arplsave-"+ arplNmb +"' class='saveAutoReply' value='Save' title='Save Row' /></td></tr>");
298
+				        $("#autoReplyTbl").append("<div><img id='addArplRow' src='/apps/sms_relentless/img/add.svg' title='Add Row'></div>");
299
+
300
+				    } else {
301
+
302
+				        for (k = 0; k < arplNmb; k++) {
303
+
304
+                                             if (autorpldata[k].days_of_week != '') {
305
+
306
+                                                 var slctdMode = "<option value=''>Select mode</option><option value='daily' selected>Daily mode</option><option value='vacation'>Vacation mode</option>";
307
+                                                 var dailyStartArr = autorpldata[k].daily_start.split(":");
308
+                                                 var dailyEndArr = autorpldata[k].daily_end.split(":");
309
+
310
+		                                 var dlHrStartOptions = "";
311
+			                         for (var hr = 0; hr < 24; hr++) {
312
+		                                      if (dailyStartArr[0] != hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})) {
313
+			                                  dlHrStartOptions += "<option value='"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
314
+		                                      } else {
315
+			                                  dlHrStartOptions += "<option value='"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"' selected>"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
316
+		                                      }
317
+			                         }
318
+
319
+		                                 var dlMnStartOptions = "";
320
+			                         for (var mn = 0; mn < 60; mn++) {
321
+		                                      if (dailyStartArr[0] != mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})) {
322
+			                                  dlMnStartOptions += "<option value='"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
323
+		                                      } else {
324
+			                                  dlMnStartOptions += "<option value='"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"' selected>"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
325
+		                                      }
326
+			                         }
327
+
328
+		                                 var dlHrEndOptions = "";
329
+			                         for (var hr = 0; hr < 24; hr++) {
330
+		                                      if (dailyEndArr[0] != hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})) {
331
+			                                  dlHrEndOptions += "<option value='"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
332
+		                                      } else {
333
+			                                  dlHrEndOptions += "<option value='"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"' selected>"+ hr.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
334
+		                                      }
335
+			                         }
336
+
337
+		                                 var dlMnEndOptions = "";
338
+			                         for (var mn = 0; mn < 60; mn++) {
339
+		                                      if (dailyEndArr[1] != mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})) {
340
+			                                  dlMnEndOptions += "<option value='"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
341
+		                                      } else {
342
+			                                  dlMnEndOptions += "<option value='"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"' selected>"+ mn.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
343
+		                                      }
344
+			                         }
345
+
346
+                                                 var modeContent = "<div class='daysOfWeek'>Days of the week:<div class='tooltipautoreply'><div id='infoautoreply'>i</div><div class='autorpltooltip'>Enter the order number of the days of the week in which the auto-reply will be sent. For example, to send the auto-reply every day from Monday to Friday (outside the time interval specified below), enter 1,2,3,4,5 To send the auto-reply only Monday, Thursday and Friday enter 1,4,5 To send the auto-reply every day of the week enter 1,2,3,4,5,6,7</div></div></div><input type='text' id='weekdays-"+ k +"' class='daysInWeek' value='"+ autorpldata[k].days_of_week +"'><div class='chooseTInterval'>Send auto-reply <span style='color:#ad0202'>outside</span> this interval:<div class='tooltipautoreplyst'><div id='infoautoreplyst'>i</div><div class='autorpltooltipst'>These fields specify the time of the server. If the server is located in a time zone that is different from that of the owner/company, the time interval entered here should be adjusted accordingly.</div></div></div><div class='selectArplHours'><select id='dmstarthr-"+ k +"' class='selectHrMin'>"+ dlHrStartOptions +"</select><select id='dmstartmn-"+ k +"' class='selectHrMin'>"+ dlMnStartOptions +"</select><span style='font-weight: 600'> — </span><select id='dmendhr-"+ k +"' class='selectHrMin'>"+ dlHrEndOptions +"</select><select id='dmendmn-"+ k +"' class='selectHrMin'>"+ dlMnEndOptions +"</select></div>";
347
+
348
+                                             } else {
349
+
350
+                                                 var vctnStart = autorpldata[k].vacation_start.split(" ")[0];
351
+                                                 var vctnEnd = autorpldata[k].vacation_end.split(" ")[0];
352
+
353
+                                                 var slctdMode = "<option value=''>Select mode</option><option value='daily'>Daily mode</option><option value='vacation' selected>Vacation mode</option>";
354
+                                                 var modeContent = "<div class='chooseDateIntvl'>Send auto-reply <span style='color:#ad0202'>inside</span> this interval:</div><div class='arplstrtendDates'><div class='stdtTitle'>Start Date</div><input type='text' id='startDT-"+ k +"' class='startDate' placeholder='Pick a date' value='"+ vctnStart +"'><div class='enddtTitle'>End Date</div><input type='text' id='endDT-"+ k +"' class='endDate' placeholder='Pick a date' value='"+ vctnEnd +"'></div>"
355
+                                             }
356
+
357
+				             $("#autoReplyTbl").append("<tr><td><input type='text' class='arplAuthor' value='"+ autorpldata[k].saved_by_dsplname +"' disabled></td><td><select id='arpphn-"+ k +"' class='arplPhoneNmbr' style='pointer-events:none'><option selected>"+ autorpldata[k].phone_number +"</option></select></td><td><div id='arplmode-"+ k +"' class='arplMode'><select id='modeselect-"+ k +"' class='selectArplMode'>"+ slctdMode +"</select><div id='modecont-"+ k +"' class='modeContent'>"+ modeContent +"</div></div></td><td><textarea id='arpltxt-"+ k +"' class='arplText' rows='20' cols='40' placeholder='Enter the auto-reply message here.'>"+ autorpldata[k].message_text +"</textarea></td><td><img id='rmRow-"+ k +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:9px 8px 0px 18px;'></td><td><input type='submit' id='arplsave-"+ k +"' class='saveAutoReply' value='Edit' title='Edit Row' /></td></tr>");
358
+				        }
359
+				        $("#autoReplyTbl").append("<div><img id='addArplRow' src='/apps/sms_relentless/img/add.svg' title='Add Row'></div>");
360
+				    }
361
+
362
+
363
+				    // Create a list with all the available phone numbers
364
+                                    var numbersListItems = "<option value='' selected>Select phone number</option>";
365
+
366
+				    $.each(availPhoneNmbrs, function(key, indsmsnmb) {
367
+				           numbersListItems += "<option value='"+ indsmsnmb +"'>"+ indsmsnmb +"</option>";
368
+				    });
369
+
370
+                                    if (arplNmb == 0) {
371
+				        $("#arpphn-"+ arplNmb).append(numbersListItems);
372
+                                    }
373
+
374
+                                    // Initialize the date picker
375
+			            $('[id^="endDT-"]').datepicker({ dateFormat: "yy-mm-dd" });
376
+			            $('[id^="startDT-"]').datepicker({ dateFormat: "yy-mm-dd" });
377
+
378
+
379
+                                    // Select the auto-reply mode
380
+                                    function selectMode() {
381
+
382
+		                            $('[id^="modeselect-"]').change(function() {
383
+
384
+		                               var crtnmbr = $(this).attr("id").replace("modeselect-", "");
385
+
386
+		                               var dailyHrStart = "";
387
+		                               for (var h = 0; h < 24; h++) {
388
+		                                    dailyHrStart += "<option value='"+ h.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ h.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
389
+		                               }
390
+
391
+		                               var dailyMnStart = "";
392
+		                               for (var m = 0; m < 60; m++) {
393
+		                                    dailyMnStart += "<option value='"+ m.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"'>"+ m.toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) +"</option>";
394
+		                               }
395
+
396
+		                               var dailyHrEnd = dailyHrStart;
397
+		                               var dailyMnEnd = dailyMnStart;
398
+
399
+		                               if ($(this).val() == 'daily') {
400
+		                                   $("#modecont-"+ crtnmbr).empty();
401
+		                                   $("#modecont-"+ crtnmbr).append("<div class='daysOfWeek'>Days of the week:<div class='tooltipautoreply'><div id='infoautoreply'>i</div><div class='autorpltooltip'>Enter the order number of the days of the week. For example, to send the auto-reply every day from Monday to Friday outside the specified time interval, enter 1,2,3,4,5 To send the auto-reply only Monday, Thursday and Friday enter 1,4,5 To send the auto-reply every day of the week enter 1,2,3,4,5,6,7</div></div></div><input type='text' id='weekdays-"+ crtnmbr +"' class='daysInWeek'><div class='chooseTInterval'>Send auto-reply <span style='color:#ad0202'>outside</span> this interval:<div class='tooltipautoreplyst'><div id='infoautoreplyst'>i</div><div class='autorpltooltipst'>These fields specify the time of the server. If the server is located in a time zone that is different from that of the owner/company, the time interval entered here should be adjusted accordingly.</div></div></div><div class='selectArplHours'><select id='dmstarthr-"+ crtnmbr +"' class='selectHrMin'>"+ dailyHrStart +"</select><select id='dmstartmn-"+ crtnmbr +"' class='selectHrMin'>"+ dailyMnStart +"</select><span style='font-weight: 600'> — </span><select id='dmendhr-"+ crtnmbr +"' class='selectHrMin'>"+ dailyHrEnd +"</select><select id='dmendmn-"+ crtnmbr +"' class='selectHrMin'>"+ dailyMnEnd +"</select></div>");
402
+		                               } else if ($(this).val() == 'vacation') {
403
+		                                   $("#modecont-"+ crtnmbr).empty();
404
+		                                   $("#modecont-"+ crtnmbr).append("<div class='chooseDateIntvl'>Send auto-reply <span style='color:#ad0202'>inside</span> this interval:</div><div class='arplstrtendDates'><div class='stdtTitle'>Start Date</div><input type='text' id='startDT-"+ crtnmbr +"' class='startDate' placeholder='Pick a date'><div class='enddtTitle'>End Date</div><input type='text' id='endDT-"+ crtnmbr +"' class='endDate' placeholder='Pick a date' /></div>");
405
+		                               }
406
+
407
+					       $("#endDT-"+ crtnmbr +"").datepicker({ dateFormat: "yy-mm-dd" });
408
+					       $("#startDT-"+ crtnmbr +"").datepicker({ dateFormat: "yy-mm-dd" });
409
+		                          });
410
+                                  }
411
+                                  selectMode();
412
+
413
+				  // Save the data
414
+				  function saveArplRow() {
415
+
416
+				     $('[id^="arplsave-"]').unbind("click");
417
+				     $('[id^="arplsave-"]').click(function(event) {
418
+
419
+				        event.preventDefault();
420
+				        var crntrwnmbr = $(this).attr("id").replace("arplsave-", "");
421
+
422
+				        if ($(this).attr("value") == "Save") {
423
+
424
+				            var phoneNmbr = $("#arpphn-"+ crntrwnmbr).val();
425
+				            var arplText = $("#arpltxt-"+ crntrwnmbr).val();
426
+				            var slctdMode = $("#modeselect-"+ crntrwnmbr).val();
427
+
428
+				            var slctddmDays = "";
429
+				            var slctdHrStart = "";
430
+				            var slctdMnStart = "";
431
+				            var slctdHrEnd = "";
432
+				            var slctdMnEnd = "";
433
+
434
+				            var vcStartDate = null;
435
+				            var vcEndDate = null;
436
+
437
+				            if (slctdMode == 'daily') {
438
+
439
+				                slctddmDays = $("#weekdays-"+ crntrwnmbr).val().trim();
440
+				                slctdHrStart = $("#dmstarthr-"+ crntrwnmbr).val().trim();
441
+				                slctdMnStart = $("#dmstartmn-"+ crntrwnmbr).val().trim();
442
+				                slctdHrEnd = $("#dmendhr-"+ crntrwnmbr).val().trim();
443
+				                slctdMnEnd = $("#dmendmn-"+ crntrwnmbr).val().trim();
444
+
445
+                                                if (slctdHrStart != '' && slctdMnStart != '') {
446
+                                                    var hrmnStartComp = slctdHrStart +":"+ slctdMnStart;
447
+                                                } else { var hrmnStartComp = ""; }
448
+
449
+                                                if (slctdHrEnd != '' && slctdMnEnd != '') {
450
+                                                    var hrmnEndComp = slctdHrEnd +":"+ slctdMnEnd;
451
+                                                } else { var hrmnEndComp = ""; }
452
+
453
+                                                if (!(/^[1-7\,]+$/.test(slctddmDays))) {
454
+				                    showAlert("The 'Days of the week' field can contain only digits from 1 to 7 and commas (,).");
455
+				                    return;
456
+                                                }
457
+
458
+                                                if (!(/^[0-9]+$/.test(slctdHrStart + slctdMnStart + slctdHrEnd + slctdMnEnd))) {
459
+				                    showAlert("The starting and ending values of the time interval for the 'Daily mode' can contain only digits from 0 to 9.");
460
+				                    return;
461
+                                                }
462
+
463
+                                                if (slctddmDays.trim() == '' || (slctdHrStart == slctdHrEnd && slctdMnStart == slctdMnEnd)) {
464
+				                    showAlert("For the 'Daily mode', you have to enter the order number of the days of the week for which you want the auto-reply to be sent, and you have to set a starting time that is different from the ending time!");
465
+				                    return;
466
+                                                }
467
+
468
+				            } else if (slctdMode == 'vacation') {
469
+		
470
+                                                if ($("#startDT-"+ crntrwnmbr).val().trim() == '' || $("#endDT-"+ crntrwnmbr).val().trim() == '') {
471
+
472
+				                    showAlert("For the 'Vacation mode', you have to enter both a start date and an end date.");
473
+				                    return;
474
+
475
+                                                } else {
476
+
477
+                                                    if (!(/^[0-9\-]+$/.test($("#startDT-"+ crntrwnmbr).val().trim() + $("#endDT-"+ crntrwnmbr).val().trim()))) {
478
+				                        showAlert("The start date and end date values for the 'Vacation mode' can contain only digits from 0 to 9 and hyphens (-).");
479
+				                        return;
480
+                                                    }
481
+
482
+		                                    vcStartDate = $("#startDT-"+ crntrwnmbr).val().trim() +" 00:00:00";
483
+				                    vcEndDate = $("#endDT-"+ crntrwnmbr).val().trim() +" 23:59:59";
484
+				                    var strtDateCmp = new Date(vcStartDate).toJSON().slice(0, 10) +" 00:00:00";
485
+				                    var endDateCmp = new Date(vcEndDate).toJSON().slice(0, 10) +" 23:59:59";
486
+				                    var crntDate = new Date().toJSON().slice(0, 10) +" 23:59:59";
487
+
488
+                                                    if (vcStartDate.trim() == "" || vcEndDate.trim() == "" || (strtDateCmp >= endDateCmp || ((strtDateCmp < crntDate) && (endDateCmp < crntDate)))) {
489
+				                        showAlert("For 'Vacation mode', you have to enter both a start date and an end date, the start date must be before the end date and at least the ending of the time interval must be in the future.");
490
+				                        return;
491
+                                                    }
492
+                                                }
493
+				            }
494
+
495
+
496
+				            if (phoneNmbr != '') {
497
+
498
+				              if (arplText.trim() != '') {
499
+
500
+				                if (slctdMode != '') {
501
+
502
+				                    var saveArplUrl = OC.generateUrl('/apps/sms_relentless/user/updateautoreplies');
503
+				                    var arpldata = {
504
+				                         userId: userid,
505
+				                         savedByDsplname: cusrDisplayName,
506
+				                         phoneNumber: phoneNmbr,
507
+				                         daysOfWeek: slctddmDays,
508
+				                         dailyStart: hrmnStartComp,
509
+				                         dailyEnd: hrmnEndComp,
510
+				                         vacationStart: vcStartDate,
511
+				                         vacationEnd: vcEndDate,
512
+				                         messageText: arplText
513
+				                    };
514
+
515
+					            $.ajax({
516
+					              method: 'PUT',
517
+					              url: saveArplUrl + '/' + userid,
518
+					              contentType: 'application/json',
519
+					              data: JSON.stringify(arpldata),
520
+				                      success: function(messagereceived) {
521
+
522
+				                                   if (messagereceived == 'success') {
523
+				                                       showAlert('The auto-reply has been successfully saved to the database!');
524
+				                                   } else if (messagereceived == 'failure') {
525
+				                                       showAlert('Error while trying to save the auto-reply!');
526
+				                                   } else if (messagereceived == 'not allowed') {
527
+                                                                       showAlert('You cannot change an auto-reply that was saved by a different user.');
528
+                                                                   }
529
+				                      },
530
+					              error: function() {
531
+						                   showAlert('Error while attempting to save the auto-reply! You can check the Nextcloud log to find more details about this issue.');
532
+					              }
533
+					            });
534
+
535
+
536
+                                                } else { showAlert("Please select the auto-reply mode."); return; }
537
+
538
+                                              } else { showAlert("Please enter the text of the auto-reply."); return; }
539
+
540
+                                            } else { showAlert("Please select a phone number if at least one number is available in the 'Phone Number' drop-down list. Otherwise, you should contact the administrator."); return; }
541
+
542
+                                            $(this).attr("value", "Edit");
543
+
544
+                                        } else {
545
+                                            $("#arplsave-"+ crntrwnmbr).attr("value", "Save");
546
+                                        }
547
+
548
+                                     });
549
+
550
+				  }
551
+                                  saveArplRow();
552
+
553
+
554
+				  // Remove a row
555
+				  function removeArplRow() {
556
+				       $('[id^="rmRow-"]').click(function() {
557
+
558
+					  var slctRowRm = $(this).attr("id").replace("rmRow-", "");
559
+					  var crntPhnNmbr = $("#arpphn-"+ slctRowRm).val();
560
+
561
+				          confirmAlert("Do you really want to remove this row from the database ?");
562
+
563
+				          $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
564
+
565
+				          $("#confirmOk").click(function() {
566
+
567
+				              $("#alertMsgOverlay").remove();
568
+				              $("#alertConfMessage").remove();
569
+
570
+					      var rmvArplUrl = OC.generateUrl('/apps/sms_relentless/user/removeautoreplies');
571
+					      $.ajax({
572
+						   url: rmvArplUrl + '/' + userid,
573
+						   method: "POST",
574
+						   dataType: "text",
575
+						   data: { phoneNumber: crntPhnNmbr },
576
+						   success: function(delresult) {
577
+
578
+						                     if (delresult.indexOf("success") > -1) {
579
+						                         showAlert("The auto-reply has been removed successfully!");
580
+						                         $("#arpphn-"+ slctRowRm).closest("tr").remove();
581
+						                     } else if (delresult.indexOf("failure") > -1) {
582
+						                         showAlert("Error while trying to remove auto-reply data!");
583
+						                     } else if (delresult.indexOf("not allowed") > -1) {
584
+                                                                         showAlert("You cannot remove the auto-reply saved by another user.");
585
+                                                                     }
586
+						   },
587
+						   error: function() { showAlert("Error while attempting to remove auto-reply data! You can check the Nextcloud log to find more details about this issue."); }
588
+					       });
589
+					  });
590
+				       });
591
+				  }
592
+				  removeArplRow();
593
+
594
+                                  // Add a new row
595
+                                  $("#addArplRow").click(function() {
596
+
597
+                                     if ($("#autoReplyTbl").find("tr:last-child").find(".arplPhoneNmbr").length > 0) {
598
+                                         var lastarpl = $("#autoReplyTbl").find("tr:last-child").find(".arplPhoneNmbr").attr("id").replace("arpphn-", "");
599
+                                         var indArplAdd = parseInt(lastarpl + 1);
600
+                                     } else { var indArplAdd = 0; }
601
+			             $("#autoReplyTbl").append("<tr><td><input type='text' class='arplAuthor' value='"+ cusrDisplayName +"' disabled></td><td><select id='arpphn-"+ indArplAdd +"' class='arplPhoneNmbr'>"+ numbersListItems +"</select></td><td><div id='arplmode-"+ indArplAdd +"' class='arplMode'><select id='modeselect-"+ indArplAdd +"' class='selectArplMode'><option value='' selected>Select mode</option><option value='daily'>Daily mode</option><option value='vacation'>Vacation mode</option></select><div id='modecont-"+ indArplAdd +"' class='modeContent'></div></div></td><td><textarea id='arpltxt-"+ indArplAdd +"' class='arplText' rows='20' cols='40' placeholder='Enter the auto-reply message here.'></textarea></td><td><img id='rmRow-"+ indArplAdd +"' class='removeRow' src='/apps/sms_relentless/img/closewnd.svg' title='Remove this row from the database' style='cursor:pointer;margin:9px 8px 0px 18px;'></td><td><input type='submit' id='arplsave-"+ indArplAdd +"' class='saveAutoReply' value='Save' title='Save Row' /></td></tr>");
602
+
603
+                                     selectMode();
604
+                                     saveArplRow();
605
+                                     removeArplRow();
606
+
607
+			             // Check if there is an auto-reply set for the same phone number
608
+				     $("#arpphn-"+ indArplAdd).change(function() {
609
+					 var selectedPhNb = $("#arpphn-"+ indArplAdd).val();
610
+					 var allArplPhNmbrs = $("#autoReplyTbl").find("tr").find(".arplPhoneNmbr");
611
+					 var phNbChck = 0;
612
+					 allArplPhNmbrs.each(function() {
613
+					    var slctphnb = ($(this).val())? $(this).val() : $(this).text();
614
+					    if (selectedPhNb == slctphnb) { phNbChck++; }
615
+					 });
616
+
617
+					 if (phNbChck == 2) {
618
+					     showAlert("There is already an auto-reply set up for this phone number. Please edit its own row, or choose a different phone number.");
619
+					     $(this).val('');
620
+					     return;
621
+					 }
622
+				     });
623
+                                  });
624
+
625
+		  },
626
+		  error: function() {
627
+                                    $("#autoRplPhoneNb").removeClass('icon-loading'); 
628
+                                    showAlert("Error while attempting to get the auto-reply settings! You can check the Nextcloud log to find more details about this issue.");
629
+                  }
630
+         });
631
+
632
+     },
633
+     error: function() {
634
+                  showAlert('Error while getting the settings! You can check the Nextcloud log to find more details about this issue.');
635
+     }
636
+  });
637
+
638
+
639
+
640
+  // Save personal settings for non-admin users
641
+  $("#save_sms_settings").on("click", function(event) {
642
+
643
+     if (isadm == 'reguser') {
644
+
645
+	    event.preventDefault();
646
+	    var baseUrlsave = OC.generateUrl('/apps/sms_relentless/user/updatesettings');
647
+
648
+	    var messagesperpageinit = $("#messagesperpage").val();
649
+	    var messagesperpagesec = messagesperpageinit.replace(/[^0-9]/g, '');
650
+
651
+	    if (messagesperpagesec != '') {
652
+		var messagesperpageproc = messagesperpagesec;
653
+	    } else {
654
+		var messagesperpageproc = 100;
655
+	    }
656
+
657
+	    var getnotify = 0;
658
+
659
+	    if ($("#get_notify").is(':checked')) {
660
+		getnotify = 1;
661
+	    }
662
+
663
+	    var emailaddressinit = $("#notification_email").val();
664
+
665
+	    function validate_email($email) {
666
+		var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
667
+		return email_reg.test($email);
668
+	    }
669
+
670
+	    if (validate_email(emailaddressinit)) {
671
+		 var notifyemail = emailaddressinit;
672
+	    } else {
673
+		 var notifyemail = '';
674
+	    }
675
+
676
+	    var includesmsinemail = 0;
677
+	    if ($("#includesmsinemail").is(':checked')) {
678
+		includesmsinemail = 1;
679
+                if ($("#notification_email").val().trim() == '') {
680
+                    showAlert("Please enter an email address in the field: 'I want to receive a notification to the email address from below ...', or uncheck the checkbox: 'Include the SMS/MMS message in the email notification itself'.");
681
+                    return;
682
+                }
683
+	    }
684
+
685
+	    var showdisplaynm = 0;
686
+	    if ($("#showdisplaynames").is(':checked')) {
687
+		showdisplaynm = 1;
688
+	    }
689
+
690
+	    var datatosave = {
691
+			      userId: userid,
692
+		              telapiUrlRec: $("#telapi_url_rec").val(),
693
+		              telapiUrl: $("#telapi_url").val(),
694
+		              nexapiUrlRec: $("#nexapi_url_rec").val(),
695
+		              nexapiUrl: $("#nexapi_url").val(),
696
+		              twilapiUrlRec: $("#twilapi_url_rec").val(),
697
+		              twilapiUrl: $("#twilapi_url").val(),
698
+		              flowapiUrlRec: $("#flowapi_url_rec").val(),
699
+		              flowapiUrl: $("#flowapi_url").val(),
700
+			      messagesperpage: messagesperpageproc,
701
+			      getNotify: getnotify,
702
+			      notificationEmail: notifyemail,
703
+			      getsmsinemail: includesmsinemail,
704
+			      showDisplayNames: showdisplaynm
705
+	    };
706
+
707
+
708
+	    $.ajax({
709
+	       method: 'PUT',
710
+	       url: baseUrlsave + '/' + userid,
711
+	       contentType: 'application/json',
712
+	       data: JSON.stringify(datatosave),
713
+	       success: function() {
714
+                               OC.msg.startAction('#smsr_save_msg', t('sms_relentless', 'Saved'));
715
+	       },
716
+	       error: function() {
717
+		    showAlert('Error while attempting to save the settings! You can check the Nextcloud log to find more details about this issue.');
718
+	       }
719
+	    });
720
+
721
+
722
+     } else if (isadm == 'admin') {
723
+
724
+	    // Save personal settings for admins
725
+	    event.preventDefault();
726
+	    var baseUrlsaveadm = OC.generateUrl('/apps/sms_relentless/user/updatepersadmnsettings');
727
+
728
+	    var messagesperpageinit = $("#messagesperpage").val();
729
+	    var messagesperpagesec = messagesperpageinit.replace(/[^0-9]/g, '');
730
+
731
+	    if (messagesperpagesec != '') {
732
+		var messagesperpageproc = messagesperpagesec;
733
+	    } else {
734
+		var messagesperpageproc = 100;
735
+	    }
736
+
737
+	    var getnotify = 0;
738
+
739
+	    if ($("#get_notify").is(':checked')) {
740
+		getnotify = 1;
741
+	    }
742
+
743
+	    var emailaddressinit = $("#notification_email").val();
744
+
745
+	    function validate_email($email) {
746
+		var email_reg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
747
+		return email_reg.test($email);
748
+	    }
749
+
750
+	    if (validate_email(emailaddressinit)) {
751
+		 var notifyemail = emailaddressinit;
752
+	    } else {
753
+		 var notifyemail = '';
754
+	    }
755
+
756
+	    var includesmsinemail = 0;
757
+	    if ($("#includesmsinemail").is(':checked')) {
758
+		includesmsinemail = 1;
759
+                if ($("#notification_email").val().trim() == '') {
760
+                    showAlert("Please enter an email address in the field: 'I want to receive a notification to the email address from below ...', or uncheck the checkbox: 'Include the SMS/MMS message in the email notification itself'.");
761
+                    return;
762
+                }
763
+	    }
764
+
765
+	    var showdisplaynm = 0;
766
+	    if ($("#showdisplaynames").is(':checked')) {
767
+		showdisplaynm = 1;
768
+	    }
769
+
770
+	    var datatosave = {
771
+			      userId: userid,
772
+			      messagesperpage: messagesperpageproc,
773
+			      getNotify: getnotify,
774
+			      notificationEmail: notifyemail,
775
+			      getsmsinemail: includesmsinemail,
776
+			      showDisplayNames: showdisplaynm
777
+	    };
778
+
779
+
780
+	    $.ajax({
781
+	       method: 'PUT',
782
+	       url: baseUrlsaveadm + '/' + userid,
783
+	       contentType: 'application/json',
784
+	       data: JSON.stringify(datatosave),
785
+	       success: function() {
786
+                               OC.msg.startAction('#smsr_save_msg', t('sms_relentless', 'Saved'));
787
+	       },
788
+	       error: function() {
789
+		    showAlert('Error while attempting to save the settings! You can check the Nextcloud log to find more details about this issue.');
790
+	       }
791
+	    });
792
+
793
+     }
794
+  });
795
+
796
+  function showAlert(alertText) {
797
+
798
+     let alertwnd = "<div id='alertMessage'>";
799
+     alertwnd += "<a id='closeAlertWnd' title='Close this window'></a>";
800
+     alertwnd += "<div id='alertTextWrap'>"+ alertText +"</div>";
801
+     alertwnd += "<input type='submit' id='alertOk' value='OK'>";
802
+     alertwnd += "</div>";
803
+
804
+     $("#content").append("<div id='alertMsgOverlay'></div>");
805
+     $("#content").append(alertwnd);
806
+
807
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
808
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
809
+     $("#alertMessage").css({ "top" : topDist, "left" : leftDist });
810
+
811
+     $("#closeAlertWnd").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
812
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
813
+     $("#alertOk").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
814
+  }
815
+
816
+  function confirmAlert(alertText) {
817
+
818
+     let alertwndcf = "<div id='alertConfMessage'>";
819
+     alertwndcf += "<a id='closeAlertWndcf' title='Close this window'></a>";
820
+     alertwndcf += "<div id='alertTextWrap'>"+ alertText +"</div>";
821
+     alertwndcf += "<div id='cancelOkWrap'><input type='submit' id='confirmCancel' value='Cancel'>";
822
+     alertwndcf += "<input type='submit' id='confirmOk' value='OK'></div>";
823
+     alertwndcf += "</div>";
824
+
825
+     $("#content").append("<div id='alertMsgOverlay'></div>");
826
+     $("#content").append(alertwndcf);
827
+
828
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
829
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
830
+     $("#alertConfMessage").css({ "top" : topDist, "left" : leftDist });
831
+
832
+     $("#closeAlertWndcf").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
833
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
834
+  }
835
+
836
+});
0 837
new file mode 100644
... ...
@@ -0,0 +1,4598 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+$(document).ready(function() {
24
+
25
+  var userid = "<?php p($userId); ?>";
26
+  var parseddata = null;
27
+  var sentparseddata = null;
28
+  var groupedparsed = null;
29
+  // Set the default number of messages per page
30
+  var messagesperpage = 100;
31
+
32
+  // Get the number of messages per page from the database
33
+  var getNoPerPageUrl = OC.generateUrl("/apps/sms_relentless/user/getmessagesperpage");
34
+
35
+  $.ajax({
36
+        url: getNoPerPageUrl + '/' + userid,
37
+        method: 'GET',
38
+        success: function(mesperpagedb) {
39
+                 messagesperpage = parseInt(mesperpagedb);
40
+
41
+        },
42
+        error: function(mesperpagedb) {
43
+                 showAlert("Error while getting the number of messages per page. You can check the Nextcloud log to find more details about this issue!");
44
+        }
45
+  });
46
+
47
+
48
+  // List received messages
49
+  $("#receivedsmstableshow").on("click", function(event) {
50
+
51
+     $('#smstables').empty();
52
+     var getReceivedUrl = OC.generateUrl("/apps/sms_relentless/user/getreceivedtable");
53
+
54
+     $('#smstables').addClass('icon-loading');
55
+
56
+     $.ajax({
57
+          url: getReceivedUrl + '/' + userid,
58
+          method: 'GET',
59
+          contentType: 'application/json',
60
+          success: function(datafdb) {
61
+
62
+                var parseddata = datafdb.datarows;
63
+
64
+                $('#smstables').append("<div id='toptablerec'><div class='topbuttonandpage'><span id='recarrow' title='Show/Hide filters and Delete button'></span></div><div id='paginationrec' class='recpages'>Pages </div></div>");
65
+                $('#smstables').append("<table id='recSmsTable'></table>");
66
+
67
+                $('#recSmsTable').append("<tr id='recfiltersrow'><td class='selectalldvfilter'><button id='clearrecfilters' title='Clear all filters.'></button><button id='deleterecrows' title='Permanently delete the selected row(s) from below from the database.'></button></td><td class='selectalldvfilter'><input type='text' id='dbidtextrec' class='indivfilterrec' title='Enter a database ID number to apply the filter.'><input type='submit' id='databaseidfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified database ID.' /></td><td class='selectalldvfilter'><input type='text' id='useridtextrec' class='indivfilterrec' title='Enter a Nextcloud username to apply the filter.' /><input type='submit' id='useridfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified username.' /></td><td class='selectalldvfilter'><input type='text' id='messageidtextrec' class='indivfilterrec' title='Enter a fragment from a message ID to apply the filter.'  /><input type='submit' id='messageidfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='datetextrec' class='indivfilterrec' title='Enter a fragment of a date to apply the filter.'/><input type='submit' id='datefilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='fromtextrec' class='indivfilterrec' title='Enter a fragment of a sender&#146s phone number or alphanumeric sender ID, to apply the filter.' /><input type='submit' id='fromfilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='totextrec' class='indivfilterrec' value='' title='Enter a fragment of a recipient&#146s phone number to apply the filter.'  /><input type='submit' id='tofilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='messagetextrec' class='indivfilterrec' title='Enter a fragment of a message to apply the filter.' /><input type='submit' id='messagefilter' class='filterbuttonsrec' value='' title='Filter rows by the specified string.'/></td></tr>");
68
+                $('#recSmsTable').append("<tr class='receivedrows' id='recheaderrow'><th id='selectalldv' class='selectsmsdv'><input type='checkbox' id='selectAllChckbx' class ='indivchckbx' title='Select all rows.' /></th><th title='The database ID of each message.'>ID</th><th>User ID</th><th>Message ID</th><th>Date</th><th>From</th><th>To</th><th>Received Message</th></tr>");
69
+
70
+                $('#recfiltersrow').hide();
71
+
72
+                if (datafdb.showdispnm == 1) {
73
+
74
+                    for (var i = 0; i < parseddata.length; i++) {
75
+
76
+                         if (parseddata[i].author_displayname) {
77
+                             var procrcmessage = "<span class='messageAuthorName'>"+ parseddata[i].author_displayname + ":</span>" + parseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
78
+                         } else {
79
+                             var procrcmessage = parseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
80
+                         }
81
+
82
+                         if (parseddata[i].internal_sender == 0) {
83
+                             var procrecFrom = "<div id='frmNmbr-"+ i +"'><div id='addDispName-"+ i +"' style='display:block;margin-right:5px;'><img class='addNameToPhNb' src='/apps/sms_relentless/img/user-grey.svg' title='Associate a Display Name with this phone number'></div>"+ parseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
84
+                         } else {
85
+                             var procrecFrom = "<div id='frmNmbr-"+ i +"'>"+ parseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src = '/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
86
+                         }
87
+
88
+                         var procrecTo = "<div id='toNmbr-"+ i +"'>"+ parseddata[i].to +"<div id='showMsgTo-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src = '/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
89
+
90
+                         $("#recSmsTable").append("<tr id='singlerow_"+ i +"' class='receivedrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+ i +"' class='indivchckbx' /></td><td class='dbidcolumnrec'>"+ parseddata[i].id +"</td><td class='useridcolrec'>"+ parseddata[i].user_id +"</td><td class='messageidcolrec'>"+ parseddata[i].message_id +"</td><td class='datecolrec'>"+ parseddata[i].date +"</td><td class='fromcolumnrec'>"+ procrecFrom +"</td><td class='tocolrec'>"+ procrecTo +"</td><td class='messagecolumnrec'>"+ procrcmessage +"</td></tr>");
91
+                    }
92
+
93
+                } else {
94
+
95
+                    for (var i = 0; i < parseddata.length; i++) {
96
+
97
+                         var procrcmessage = parseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
98
+
99
+                         if (parseddata[i].internal_sender == 0) {
100
+                             var procrecFrom = "<div id='frmNmbr-"+ i +"'><div id='addDispName-"+ i +"' style='display:block;margin-right:5px;'><img class='addNameToPhNb' src='/apps/sms_relentless/img/user-grey.svg' title='Associate a Display Name with this phone number'></div>"+ parseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
101
+                         } else {
102
+                             var procrecFrom = "<div id='frmNmbr-"+ i +"'>"+ parseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src = '/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
103
+                         }
104
+
105
+                         var procrecTo = "<div id='toNmbr-"+ i +"'>"+ parseddata[i].to +"<div id='showMsgTo-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src = '/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
106
+
107
+                         $("#recSmsTable").append("<tr id='singlerow_"+ i +"' class='receivedrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+ i +"' class='indivchckbx' /></td><td class='dbidcolumnrec'>"+ parseddata[i].id +"</td><td class='useridcolrec'>"+ parseddata[i].user_id +"</td><td class='messageidcolrec'>"+ parseddata[i].message_id +"</td><td class='datecolrec'>"+ parseddata[i].date +"</td><td class='fromcolumnrec'>"+ procrecFrom +"</td><td class='tocolrec'>"+ procrecTo +"</td><td class='messagecolumnrec'>"+ procrcmessage +"</td></tr>");
108
+                    }
109
+                }
110
+
111
+                $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
112
+
113
+                $('#smstables').removeClass('icon-loading');
114
+                $('#recarrow').removeClass('arrowUpCl');
115
+                $('#recarrow').addClass('arrowDownCl');
116
+
117
+
118
+                // Show the pop-up window that lists all the messages exchanged between the current 2 phone numbers
119
+                function showRecMsgPerConv(phNumberFrom, phNumberTo) {
120
+
121
+                   let allfrmtomsg = "<div id='listAllMsgsConv'>";
122
+                   allfrmtomsg += "<div id='draglstMsgmWindow'><img src='/apps/sms_relentless/img/dots.svg'></div>";
123
+                   allfrmtomsg += "<a id='closeFrmMsgWindow' title='Close this window'></a>";
124
+                   allfrmtomsg += "<div class='showByNmbrTitle'>Messages exchanged between <span style='color:#04957b'>"+ phNumberFrom +"</span> and <span style='color:#04957b'>"+ phNumberTo +"</span></div>";
125
+                   allfrmtomsg += "<div id='frmMsgLstWrap'>";
126
+                   allfrmtomsg += "<table id='frmMsgLstTbl'>";
127
+                   allfrmtomsg += "<tr class='groupedrowsbody'><td><div id='grpdbynamelst' class='groupedLstNamespn'></div></td><td><div id='loadMoreMsgs' title='Click to load older messages.'>Load more messages</div><div id='loadMoreMsgsusr' title='Click to load older messages.'>Load more messages</div><div id='msgListRowCell' class='groupedLstMsgspn'></div><div id='arrowupWrap'><div id='upArrowSmall' title='Scroll to the top'></div></div></td></tr>";
128
+                   allfrmtomsg += "</table></div>";
129
+                   allfrmtomsg += "<div id='sendMsgReply'><table id='sendMsgConv'><tr><td><div id='fromPhoneNmbrConv'>From: <select id='selectFromNbConv'></select></div><div id='toPhoneNmbrConv'>To: <span id='toNmbrConv' style='color:#04957b'>"+ phNumberFrom +"</span></div></td></tr>";
130
+                   allfrmtomsg += "<tr><td><textarea id='sendMsgConvText' placeholder='Enter a message here, then press Send SMS'></textarea></td></tr></table>";
131
+                   allfrmtomsg += "<div id='sendMsgConvBtn'>Send SMS</div></div>";
132
+                   allfrmtomsg += "<div style='display:block;width:100%;height:14px;'><img id='expandWindowRpl' src='/apps/sms_relentless/img/arrowDown.svg' title='Expand to send a reply'></div>";
133
+                   allfrmtomsg += "<div id='draglstMsgmWindowsc'><img src='/apps/sms_relentless/img/dots.svg' style='padding:4px;vertical-align:top;'></div>";
134
+                   allfrmtomsg += "</div>";
135
+
136
+                   $("#content").append("<div id='recTblOverlay'></div>");
137
+                   $("#content").append(allfrmtomsg);
138
+
139
+                   let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 340) +"px";
140
+                   let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 300) +"px";
141
+                   $("#listAllMsgsConv").css({ "top" : topDist, "left" : leftDist });
142
+
143
+                   $("#closeFrmMsgWindow").click(function() { $("#listAllMsgsConv").remove(); $("#recTblOverlay").remove(); });
144
+                   $("#recTblOverlay").click(function() { $("#listAllMsgsConv").remove(); $("#recTblOverlay").remove(); });
145
+
146
+	           // Expand the window when clicking on the arrow, to be able to send a reply message
147
+	           $("#expandWindowRpl").click(function() {
148
+
149
+	              if ($(this).attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
150
+                          $("#sendMsgReply").css("display", "block");
151
+                          $("#listAllMsgsConv").css("height", "618px");
152
+	                  $(this).attr('src', '/apps/sms_relentless/img/arrowUp.svg');
153
+                          $(this).attr('title', 'Collapse');
154
+	              } else {
155
+                          $("#sendMsgReply").css("display", "none");
156
+                          $("#listAllMsgsConv").css("height", "490px");
157
+                          $(this).attr('src', '/apps/sms_relentless/img/arrowDown.svg');
158
+                          $(this).attr('title', 'Expand to send a reply');
159
+	              }
160
+	           });
161
+
162
+                   // Send a message from the 'conversation' window
163
+                   $("#sendMsgConvBtn").click(function() {
164
+
165
+                      $("#sendMsgConv,#sendMsgConvBtn").addClass('icon-loading');
166
+                      var msgToSend = $("#sendMsgConvText").val();
167
+                      var selectedid = $("#selectFromNbConv").val();
168
+                      var toNumber = $("#toNmbrConv").text();
169
+                      var receiversNumbers = [toNumber];
170
+
171
+		      if (selectedid != '') { 
172
+
173
+			  var sendersplit = selectedid.split(":");
174
+			  var providercap = sendersplit[0];
175
+			  var provsec = sendersplit[1];
176
+
177
+			  if (/[a-zA-Z]/.test(provsec)) {
178
+			      var alphanumcheck = true;
179
+			  } else { var alphanumcheck = false; }
180
+
181
+			  if (providercap == 'Tx' && alphanumcheck == false) {  
182
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
183
+			      var selectedsender = "+" + senderproc;
184
+			      var providerUsed = "telnyx";
185
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
186
+			  } else if (providercap == 'Pl' && alphanumcheck == false) {
187
+			      var selectedsender = selectedid.replace(/[^0-9]/g, "");
188
+			      var providerUsed = "plivo";
189
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
190
+			  } else if (providercap == 'Tw' && alphanumcheck == false) {  
191
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
192
+			      var selectedsender = "+" + senderproc;
193
+			      var providerUsed = "twilio";
194
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
195
+			  } else if (providercap == 'Fl' && alphanumcheck == false) {  
196
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
197
+			      var selectedsender = "+" + senderproc;
198
+			      var providerUsed = "flowroute";
199
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
200
+			  } else if (providercap == 'Tx' && alphanumcheck == true) {
201
+			      var selectedsender = provsec;
202
+			      var providerUsed = "telnyx";
203
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
204
+			  } else if (providercap == 'Pl' && alphanumcheck == true) {
205
+			      var selectedsender = provsec;
206
+			      var providerUsed = "plivo";
207
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
208
+			  } else if (providercap == 'Tw' && alphanumcheck == true) {
209
+			      var selectedsender = provsec;
210
+			      var providerUsed = "twilio";
211
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
212
+			  } else if (providercap == 'Fl' && alphanumcheck == true) {
213
+			      var selectedsender = provsec;
214
+			      var providerUsed = "flowroute";
215
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
216
+			  }
217
+
218
+                          var uploadedtomms = [];
219
+
220
+	                  if (msgToSend != '') {
221
+
222
+				  $.ajax({
223
+				     url: relbaseUrl + '/' + userid,
224
+				     type: "POST",
225
+				     data: {
226
+				           receiversPhoneNbs: receiversNumbers,
227
+				           fromsender: selectedsender,
228
+				           waitinterval: 1000,
229
+				           sentsmstext: msgToSend,
230
+				           ismms: 0,
231
+				           mmsfiles: uploadedtomms
232
+				         },
233
+				     success: function(displayname) {
234
+
235
+                                           var tzdate = new Date();
236
+                                           var presDatest = new Date(tzdate.getTime() - (tzdate.getTimezoneOffset() * 60000)).toJSON();
237
+                                           var presDatedb = presDatest.split(".")[0];
238
+                                           var presDatesc = presDatedb.split("T");
239
+                                           var presDate = presDatesc[0] +" "+ presDatesc[1];
240
+                                           var sentMessageStatus = '';
241
+
242
+                                           if (displayname) {
243
+                                               var msgToSendproc = "<span class='msgAuthorNameGrp'>"+ displayname + ":</span>" + msgToSend; 
244
+                                           } else { var msgToSendproc = ''; }
245
+
246
+                                           $("#msgListRowCell").append("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ selectedsender +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ receiversNumbers[0] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ msgToSendproc +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ presDate +"</div><div class='sentMssgStatus'>"+ sentMessageStatus +"</div></div>");
247
+
248
+                                           // Scroll down to the bottom of the window
249
+                                           $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
250
+
251
+                                           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
252
+				     },
253
+				     error: function() {
254
+                                           showAlert("Error while sending the message. You can check your Nextcloud log to find out more about this issue.");
255
+				           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
256
+				     }
257
+				  });
258
+			  } else {
259
+                                  showAlert("Please enter a message in the text box!");
260
+				  $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
261
+			  }
262
+		      } else {
263
+                              showAlert("Please choose a Sender ID from the 'From' drop-down list!");
264
+			      $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
265
+		      }
266
+
267
+                   });
268
+
269
+
270
+	           // Make the window draggable
271
+	           function makeMgrWndDraggable(e) {
272
+
273
+			   window.pmdragging = {};
274
+			   pmdragging.pageX0 = e.pageX;
275
+			   pmdragging.pageY0 = e.pageY;
276
+			   pmdragging.elem = $("#listAllMsgsConv");
277
+			   pmdragging.offset0 = $("#listAllMsgsConv").offset();
278
+
279
+			   function handle_dragging(e) {
280
+			       let left = pmdragging.offset0.left + (e.pageX - pmdragging.pageX0);
281
+			       let top = pmdragging.offset0.top + (e.pageY - pmdragging.pageY0);
282
+			       $(pmdragging.elem).offset({top: top, left: left});
283
+			   }
284
+
285
+			   function handle_mouseup(e) {
286
+			       $('body').off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
287
+			   }
288
+
289
+			   $('body').on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
290
+	           }
291
+	           $("#draglstMsgmWindow").mousedown(makeMgrWndDraggable);
292
+	           $("#draglstMsgmWindowsc").mousedown(makeMgrWndDraggable);
293
+
294
+
295
+                   // Append the available phone numbers to the From drop-down list
296
+                   var availPhoneNmbrs = [];
297
+                   $("#currentsmsnmbrs .optselectsmsnb").each(function() {
298
+                      var crtphnmbr = $(this).attr("value");
299
+                      if (crtphnmbr != "") { availPhoneNmbrs.push(crtphnmbr); }
300
+                   });
301
+
302
+                   if (availPhoneNmbrs.length > 0) {
303
+                       var avphopt = "";
304
+                       for (let d = 0; d < availPhoneNmbrs.length; d++) {
305
+                            if (availPhoneNmbrs[d].indexOf(phNumberTo) === -1) {
306
+                                avphopt += "<option value='"+ availPhoneNmbrs[d] +"'>"+ availPhoneNmbrs[d] +"</option>";
307
+                            } else {
308
+                                avphopt += "<option value='"+ availPhoneNmbrs[d] +"' selected>"+ availPhoneNmbrs[d] +"</option>";
309
+                            }
310
+                       }
311
+                       $("#selectFromNbConv").append(avphopt);
312
+
313
+                   } else { $("#selectFromNbConv").append("<option value='' selected>No IDs</option>"); }
314
+
315
+
316
+                   // Get the sent/received messages for the current phone number, from the database
317
+		   let getGrpConvUrl = OC.generateUrl("/apps/sms_relentless/user/getgroupedforreply");
318
+
319
+		   $('#listAllMsgsConv').addClass('icon-loading');
320
+		   let totalPhNmbrs = 0;
321
+
322
+		   $.ajax({
323
+			  method: 'POST',
324
+			  url: getGrpConvUrl + '/' + userid,
325
+			  contentType: 'application/json',
326
+                          data: JSON.stringify({ phoneNmbrFrom: phNumberFrom, phoneNmbrTo: phNumberTo }),
327
+			  success: function(groupedperconv) {
328
+
329
+				     $('#listAllMsgsConv').removeClass('icon-loading');
330
+
331
+				     let fromtoNmbrsData = [];
332
+
333
+				     for (let i = 0; i < groupedperconv.length; i++) {
334
+
335
+					     if (groupedperconv[i].author_displayname) {
336
+						 var authordnm = groupedperconv[i].author_displayname;
337
+					     } else { 
338
+						 var authordnm = '';
339
+					     }
340
+
341
+					     var sentfromnmbrarr = groupedperconv[i].from.split("+");
342
+				             if (sentfromnmbrarr[1]) {
343
+						 var groupednbfrom = "+"+ sentfromnmbrarr[1];
344
+				             } else {
345
+						 var groupednbfrom = sentfromnmbrarr[0];
346
+				             }
347
+
348
+				             var modmessagerec = '';
349
+				             if (groupedperconv[i].author_displayname) {
350
+						 modmessagerec = "<span class='msgAuthorNameGrp'>"+ groupedperconv[i].author_displayname + ":</span>" + groupedperconv[i].message;
351
+				             } else {
352
+			                         modmessagerec = groupedperconv[i].message;
353
+                                             }
354
+
355
+				             if (groupedperconv[i].to.indexOf(": ") > -1) {
356
+				                 var groupednmbrtopre = groupedperconv[i].to.split(": ");
357
+				                 var groupednmbrto = groupednmbrtopre[1];
358
+				             } else { 
359
+				                 var groupednmbrto = groupedperconv[i].to;
360
+				             }
361
+
362
+				             fromtoNmbrsData.push({
363
+				                       'author_displayname': authordnm,
364
+				                       'from': groupednbfrom,
365
+				                       'to': groupednmbrto,
366
+				                       'message': modmessagerec,
367
+				                       'date': groupedperconv[i].date,
368
+				                       'status': groupedperconv[i].deliveryreceipt,
369
+				                       'table': groupedperconv[i].table
370
+				             });
371
+				     }
372
+
373
+
374
+				     // Remove the duplicates
375
+				     let noDupMsgData = [];
376
+				     $.each(fromtoNmbrsData, function(i, e) {
377
+					    let matchingData = $.grep(noDupMsgData, function(item) {
378
+				                    return item.from == e.from && item.to == e.to && item.message == e.message && item.table == 'received' && e.table == 'sent';
379
+					    });
380
+					    if (matchingData.length === 0) {
381
+						noDupMsgData.push(e);
382
+					    }
383
+				     });
384
+
385
+				     let messagesPerNmbr = {};
386
+				     let msgsNamesPerNmbr = {};
387
+				     let msgsNmbrsNames = {};
388
+
389
+			             let displayNamesarr = [];
390
+			             let convData = [];
391
+
392
+			             for (let n = 0; n < noDupMsgData.length; n++) {
393
+
394
+			                  if (noDupMsgData[n]['from'] == phNumberFrom && noDupMsgData[n]['table'] == 'sent') {
395
+
396
+			                      convData.push({
397
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
398
+			                                     'message': noDupMsgData[n]['message'],
399
+			                                     'from': noDupMsgData[n]['from'],
400
+			                                     'to': noDupMsgData[n]['to'],
401
+			                                     'date': noDupMsgData[n]['date'],
402
+			                                     'direction': 'sent_from',
403
+			                                     'status': noDupMsgData[n]['status'],
404
+			                                     'table': noDupMsgData[n]['table']
405
+			                      });
406
+
407
+			                  } else if (noDupMsgData[n]['to'] == phNumberFrom && noDupMsgData[n]['table'] == 'sent') {
408
+
409
+			                      convData.push({
410
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
411
+			                                     'message': noDupMsgData[n]['message'],
412
+			                                     'from': noDupMsgData[n]['from'],
413
+			                                     'to': noDupMsgData[n]['to'],
414
+			                                     'date': noDupMsgData[n]['date'],
415
+			                                     'direction': 'sent_to',
416
+			                                     'status': noDupMsgData[n]['status'],
417
+			                                     'table': noDupMsgData[n]['table']
418
+			                      });
419
+
420
+
421
+			                  } else if (noDupMsgData[n]['from'] == phNumberFrom && noDupMsgData[n]['table'] == 'received') {
422
+
423
+			                      convData.push({
424
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
425
+			                                     'message': noDupMsgData[n]['message'],
426
+			                                     'from': noDupMsgData[n]['from'],
427
+			                                     'to': noDupMsgData[n]['to'],
428
+			                                     'date': noDupMsgData[n]['date'],
429
+			                                     'direction': 'received_from',
430
+			                                     'status': noDupMsgData[n]['status'],
431
+			                                     'table': noDupMsgData[n]['table']
432
+			                      });
433
+
434
+			                  } else if (noDupMsgData[n]['to'] == phNumberFrom && noDupMsgData[n]['table'] == 'received') {
435
+
436
+			                      convData.push({
437
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
438
+			                                     'message': noDupMsgData[n]['message'],
439
+			                                     'from': noDupMsgData[n]['from'],
440
+			                                     'to': noDupMsgData[n]['to'],
441
+			                                     'date': noDupMsgData[n]['date'],
442
+			                                     'direction': 'received_on',
443
+			                                     'status': noDupMsgData[n]['status'],
444
+			                                     'table': noDupMsgData[n]['table']
445
+			                      });
446
+			                  }
447
+			             }
448
+
449
+			             // Sort messages by date
450
+				     convData.sort(function(a, b) {
451
+					let c = new Date(a.date);
452
+					let d = new Date(b.date);
453
+					return c-d;
454
+				     });
455
+                                     convData.reverse();
456
+
457
+			             // Collect the display names of the users that sent messages from the current number
458
+			             let selectedNames = [];
459
+			             let displayNames = '';
460
+			             for (let v = 0; v < convData.length; v++) {
461
+			                  if (selectedNames.indexOf(convData[v]['author_displayname']) == -1) { 
462
+			                      selectedNames.push(convData[v]['author_displayname']);
463
+			                      displayNames += "<div id='diplNm_"+ phNumberFrom +"_"+ v +"' class='dispNameList' name='"+ convData[v]['author_displayname'] +"'>"+ convData[v]['author_displayname'] +"</div>";
464
+			                  }
465
+			             }
466
+			             displayNames += "<div id='diplNmAllMsg' class='dispNameListAll' title='Show all the messages for this number.'>"+ phNumberFrom +"</div>";
467
+
468
+			             // Store the display names for the current number, to be able to see them later
469
+			             let ctPhNumber = phNumberFrom;
470
+			             msgsNamesPerNmbr[ctPhNumber] = displayNames;
471
+
472
+			             // Store the messages sent by each user, to be able to see them later when clicking on the user's name
473
+			             for (let h = 0; h < selectedNames.length; h++) {
474
+
475
+			                  let rowMessageArrpn = [];
476
+			                  for (let b = 0; b < convData.length; b++) {
477
+
478
+			                       if (selectedNames[h] == convData[b]['author_displayname']) {
479
+
480
+					           if (convData[b]['direction'] == 'sent_from') {
481
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
482
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
483
+					               } else {
484
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
485
+					               }
486
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
487
+					           } else if (convData[b]['direction'] == 'sent_to') {
488
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
489
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
490
+					               } else {
491
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
492
+					               }
493
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
494
+					           } else if (convData[b]['direction'] == 'received_from') {
495
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
496
+					           } else if (convData[b]['direction'] == 'received_on') {
497
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
498
+			                           }
499
+			                       }
500
+			                  }
501
+			                  let crtNmber = phNumberFrom;
502
+			                  let crtName = selectedNames[h];
503
+			                  msgsNmbrsNames[crtNmber] = msgsNmbrsNames[crtNmber] || {};
504
+                                          msgsNmbrsNames[crtNmber][crtName] = rowMessageArrpn;
505
+			             }
506
+
507
+                                     // The number of messages to be loaded by default
508
+                                     let nmbTblDefault = 50;
509
+
510
+                                     // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
511
+                                     if (convData.length > nmbTblDefault) {
512
+                                         $("#loadMoreMsgs").css("display", "block");
513
+                                         var nmbToBeLoaded = nmbTblDefault;
514
+                                     } else { var nmbToBeLoaded = convData.length; }
515
+
516
+			             let rowMessageArr = [];
517
+			             for (var m = nmbToBeLoaded - 1; m >= 0; m--) {
518
+
519
+			                  if (convData[m]['direction'] == 'sent_from') {
520
+
521
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
522
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
523
+			                      } else {
524
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
525
+			                      }
526
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
527
+
528
+			                  } else if (convData[m]['direction'] == 'sent_to') {
529
+
530
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
531
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
532
+			                      } else {
533
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
534
+			                      }
535
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
536
+
537
+			                  } else if (convData[m]['direction'] == 'received_from') {
538
+
539
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
540
+
541
+			                  } else if (convData[m]['direction'] == 'received_on') {
542
+
543
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
544
+			                  }
545
+			             }
546
+
547
+			             let convDataPerNmbr = rowMessageArr.join("");
548
+
549
+                                     $("#grpdbynamelst").append(displayNames);
550
+                                     $("#msgListRowCell").append(convDataPerNmbr);
551
+
552
+			             // Store the messages for the current number, to be able to see them later, when clicking on the number
553
+			             let rowMessageArrcpt = [];
554
+			             for (let m = 0; m < convData.length; m++) {
555
+
556
+			                  if (convData[m]['direction'] == 'sent_from') {
557
+
558
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
559
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
560
+			                      } else {
561
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
562
+			                      }
563
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
564
+
565
+			                  } else if (convData[m]['direction'] == 'sent_to') {
566
+
567
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
568
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
569
+			                      } else {
570
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
571
+			                      }
572
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
573
+
574
+			                  } else if (convData[m]['direction'] == 'received_from') {
575
+
576
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
577
+
578
+			                  } else if (convData[m]['direction'] == 'received_on') {
579
+
580
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
581
+			                  }
582
+			             }
583
+
584
+			             messagesPerNmbr[phNumberFrom] = rowMessageArrcpt;
585
+
586
+                                     // Scroll down to the bottom of the window
587
+                                     $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
588
+
589
+                                     // Load more messages
590
+                                     let clickNmb = 0;
591
+                                     $("#loadMoreMsgs").click(function() {
592
+
593
+                                         clickNmb++;
594
+
595
+                                         var crefnb = (clickNmb + 1) * nmbToBeLoaded;
596
+
597
+                                         if (crefnb > convData.length) {
598
+                                             var nmbmsg = convData.length - 1;
599
+                                             $("#loadMoreMsgs").css("display", "none");
600
+                                         } else { 
601
+                                             var nmbmsg = crefnb - 1;
602
+                                         }
603
+
604
+                                         var rowMessageArrAdd = [];
605
+
606
+                                         for (let m = nmbmsg; m >= clickNmb * nmbToBeLoaded; m--) {
607
+
608
+			                      if (convData[m]['direction'] == 'sent_from') {
609
+
610
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
611
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
612
+			                          } else {
613
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
614
+			                          }
615
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
616
+
617
+			                      } else if (convData[m]['direction'] == 'sent_to') {
618
+
619
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
620
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
621
+			                          } else {
622
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
623
+			                          }
624
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
625
+
626
+			                      } else if (convData[m]['direction'] == 'received_from') {
627
+
628
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
629
+
630
+			                      } else if (convData[m]['direction'] == 'received_on') {
631
+
632
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
633
+			                      }
634
+                                         }
635
+
636
+			                 let convDataPerNmbrad = rowMessageArrAdd.join("");
637
+
638
+                                         let scrlheight = $("#msgListRowCell").height();
639
+                                         $("#msgListRowCell").prepend(convDataPerNmbrad);
640
+
641
+                                         $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
642
+                                     });
643
+
644
+
645
+			             // Show the messages sent by each user whose name is clicked
646
+			             $('[id*="diplNm_"]').click(function() {
647
+
648
+			                 let crntNmbr = $(this).attr("id").split("_")[1];
649
+			                 let crntDisName = $(this).attr("name");                               
650
+                                         $("#loadMoreMsgs").css("display", "none");
651
+
652
+                                         let convDataprn = [];
653
+                                         $.each(msgsNmbrsNames[crntNmbr][crntDisName], function(index, item) {
654
+                                                convDataprn.push(item);
655
+                                         });
656
+
657
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
658
+                                         if (convDataprn.length > nmbTblDefault) {
659
+                                             $("#loadMoreMsgsusr").css("display", "block");
660
+                                             let nmbToBeLoaded = nmbTblDefault;
661
+                                         } else {
662
+                                             $("#loadMoreMsgsusr").css("display", "none");
663
+                                             let nmbToBeLoaded = convDataprn.length;
664
+                                         }
665
+
666
+			                 let rowMessageArrprnst = [];
667
+
668
+			                 for (let n = nmbToBeLoaded - 1; n >= 0; n--) {
669
+                                              rowMessageArrprnst.push(convDataprn[n]);
670
+			                 }
671
+
672
+			                 let convDataPerNmbrprnst = rowMessageArrprnst.join("");
673
+
674
+                                         $("#msgListRowCell").empty();
675
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
676
+
677
+                                         // Scroll down to the bottom of the window
678
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
679
+
680
+                                         // Load more messages
681
+                                         let clckNb = 0;
682
+                                         $("#loadMoreMsgsusr").unbind("click");
683
+                                         $("#loadMoreMsgsusr").click(function() {
684
+
685
+                                             clckNb++;
686
+                                             let crefnb = (clckNb + 1) * nmbToBeLoaded;
687
+
688
+                                             $("#loadMoreMsgs").css("display", "none");
689
+
690
+                                             if (crefnb > convDataprn.length) {
691
+                                                 let nmbmsg = convDataprn.length - 1;
692
+                                                 $("#loadMoreMsgsusr").css("display", "none");
693
+                                             } else { 
694
+                                                 let nmbmsg = crefnb - 1;
695
+                                                 $("#loadMoreMsgsusr").css("display", "block");
696
+                                             }
697
+
698
+                                             let rowMessageArrAddst = [];
699
+
700
+                                             for (let q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
701
+
702
+                                                  rowMessageArrAddst.push(convDataprn[q]);
703
+                                             }
704
+
705
+			                     let convDataPerNmbradst = rowMessageArrAddst.join("");
706
+
707
+                                             let scrlheight = $("#msgListRowCell").height();
708
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
709
+
710
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
711
+                                         });
712
+
713
+
714
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
715
+			                 $("#diplNmAllMsg").css("color", "#04957b");
716
+			                 $(this).css("color", "#1b8efe");
717
+			             });
718
+
719
+
720
+			             // Show again all the messages sent/received to/from the clicked number
721
+			             $("#diplNmAllMsg").click(function() {
722
+
723
+                                         $("#loadMoreMsgsusr").css("display", "none");
724
+
725
+                                         let convDataprn = [];
726
+                                         $.each(messagesPerNmbr[phNumberFrom], function(index, item) {
727
+                                                convDataprn.push(item);
728
+                                         });
729
+
730
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
731
+                                         if (convDataprn.length > nmbTblDefault) {
732
+                                             $("#loadMoreMsgs").css("display", "block");
733
+                                             let nmbToBeLoaded = nmbTblDefault;
734
+                                         } else {
735
+                                             $("#loadMoreMsgs").css("display", "none");
736
+                                             let nmbToBeLoaded = convDataprn.length;
737
+                                         }
738
+
739
+
740
+			                 let rowMessageArrprnst = [];
741
+
742
+			                 for (let n = nmbToBeLoaded - 1; n >= 0; n--) {
743
+                                              rowMessageArrprnst.push(convDataprn[n]);
744
+			                 }
745
+
746
+			                 let convDataPerNmbrprnst = rowMessageArrprnst.join("");
747
+
748
+                                         $("#msgListRowCell").empty();
749
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
750
+
751
+                                         // Scroll down to the bottom of the window
752
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
753
+
754
+
755
+                                         // Load more messages
756
+                                         let clckNb = 0;
757
+                                         $("#loadMoreMsgsusr").unbind("click");
758
+                                         $("#loadMoreMsgsusr").click(function() {
759
+
760
+                                             clckNb++;
761
+                                             let crefnb = (clckNb + 1) * nmbToBeLoaded;
762
+
763
+                                             $("#loadMoreMsgs").css("display", "none");
764
+
765
+                                             if (crefnb > convDataprn.length) {
766
+                                                 let nmbmsg = convDataprn.length - 1;
767
+                                                 $("#loadMoreMsgsusr").css("display", "none");
768
+                                             } else { 
769
+                                                 let nmbmsg = crefnb - 1;
770
+                                                 $("#loadMoreMsgsusr").css("display", "block");
771
+                                             }
772
+
773
+                                             let rowMessageArrAddst = [];
774
+
775
+                                             for (let q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
776
+
777
+                                                  rowMessageArrAddst.push(convDataprn[q]);
778
+                                             }
779
+
780
+			                     let convDataPerNmbradst = rowMessageArrAddst.join("");
781
+
782
+                                             let scrlheight = $("#msgListRowCell").height();
783
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
784
+
785
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
786
+                                         });
787
+
788
+
789
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
790
+			                 $("#diplNmAllMsg").css("color", "#04957b");
791
+			                 $(this).css("color", "#04c6a4");
792
+
793
+			             });
794
+
795
+
796
+				     // Show the scroll-up arrow
797
+				     $("#frmMsgLstWrap").scroll(function() {
798
+					if ($(this).scrollTop() > 900) {
799
+					      $('#upArrowSmall').fadeIn();
800
+					} else {
801
+					      $('#upArrowSmall').fadeOut();
802
+					}
803
+				     });
804
+
805
+				     $("#upArrowSmall").click(function() {
806
+					$("#frmMsgLstWrap").animate({scrollTop : 0},400);
807
+				     });
808
+
809
+			  },
810
+			  error: function() {
811
+                                     showAlert("Error while attempting to get message data from the database!");
812
+				     $('#listAllMsgsConv').removeClass('icon-loading');
813
+			  }
814
+		   });
815
+
816
+                }
817
+
818
+                $('[id^="showMsgConv-"]').click(function() {
819
+
820
+                   let ctrwnmbr = $(this).attr("id").replace("showMsgConv-", "");
821
+                   let phNumberFrom = $("#frmNmbr-"+ ctrwnmbr).text();
822
+                   let phNumberTo = $("#toNmbr-"+ ctrwnmbr).text().split(": ")[1];
823
+
824
+                   showRecMsgPerConv(phNumberFrom, phNumberTo);
825
+                });
826
+
827
+
828
+
829
+                // Show the pop-up window that lists all the messages sent/received to/from a phone number
830
+                function showMsgPerNmbr(clckPhNumber) {
831
+
832
+                   var allfrmtomsg = "<div id='listAllMsgsFromTo'>";
833
+                   allfrmtomsg += "<div id='draglstMsgmWindow'><img src='/apps/sms_relentless/img/dots.svg'></div>";
834
+                   allfrmtomsg += "<a id='closeFrmMsgWindow' title='Close this window'></a>";
835
+                   allfrmtomsg += "<div class='showByNmbrTitle'>Messages sent/received to/from  <span style='color:#04957b'>"+ clckPhNumber +"</span></div>";
836
+                   allfrmtomsg += "<div id='frmMsgLstWrap'>";
837
+                   allfrmtomsg += "<table id='frmMsgLstTbl'>";
838
+                   allfrmtomsg += "<tr class='groupedrowsbody'><td><div id='grpdbynamelst' class='groupedLstNamespn'></div></td><td><div id='loadMoreMsgs' title='Click to load older messages.'>Load more messages</div><div id='loadMoreMsgsusr' title='Click to load older messages.'>Load more messages</div><div id='msgListRowCell' class='groupedLstMsgspn'></div><div id='arrowupWrap'><div id='upArrowSmall' title='Scroll to the top'></div></div></td></tr>";
839
+                   allfrmtomsg += "</table></div>";
840
+                   allfrmtomsg += "<div id='sendMsgReply'><table id='sendMsgConv'><tr><td><div id='fromPhoneNmbrConv'>From: <select id='selectFromNbConv'></select></div><div id='toPhoneNmbrConv'>To: <span id='toNmbrConv' style='color:#04957b'>"+ clckPhNumber +"</span></div></td></tr>";
841
+                   allfrmtomsg += "<tr><td><textarea id='sendMsgConvText' placeholder='Enter a message here, then press Send SMS'></textarea></td></tr></table>";
842
+                   allfrmtomsg += "<div id='sendMsgConvBtn'>Send SMS</div></div>";
843
+                   allfrmtomsg += "<div style='display:block;width:100%;height:14px;'><img id='expandWindowRpl' src='/apps/sms_relentless/img/arrowDown.svg' title='Expand to send a message'></div>";
844
+                   allfrmtomsg += "<div id='draglstMsgmWindowsc'><img src='/apps/sms_relentless/img/dots.svg' style='padding:4px;vertical-align:top;'></div>";
845
+                   allfrmtomsg += "</div>";
846
+
847
+                   $("#content").append("<div id='recTblOverlay'></div>");
848
+                   $("#content").append(allfrmtomsg);
849
+
850
+                   var topDist = parseInt((window.innerHeight / 2).toFixed(2) - 340) +"px";
851
+                   var leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 300) +"px";
852
+                   $("#listAllMsgsFromTo").css({ "top" : topDist, "left" : leftDist });
853
+
854
+                   $("#closeFrmMsgWindow").click(function() { $("#listAllMsgsFromTo").remove(); $("#recTblOverlay").remove(); });
855
+                   $("#recTblOverlay").click(function() { $("#listAllMsgsFromTo").remove(); $("#recTblOverlay").remove(); });
856
+
857
+
858
+	           // Expand the window when clicking on the arrow, to be able to send a reply message
859
+	           $("#expandWindowRpl").click(function() {
860
+
861
+	              if ($(this).attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
862
+                          $("#sendMsgReply").css("display", "block");
863
+                          $("#listAllMsgsFromTo").css("height", "618px");
864
+	                  $(this).attr('src', '/apps/sms_relentless/img/arrowUp.svg');
865
+                          $(this).attr('title', 'Collapse');
866
+	              } else {
867
+                          $("#sendMsgReply").css("display", "none");
868
+                          $("#listAllMsgsFromTo").css("height", "490px");
869
+                          $(this).attr('src', '/apps/sms_relentless/img/arrowDown.svg');
870
+                          $(this).attr('title', 'Expand to send a reply');
871
+	              }
872
+	           });
873
+
874
+                   // Send a message from the 'conversation' window
875
+                   $("#sendMsgConvBtn").click(function() {
876
+
877
+                      $("#sendMsgConv,#sendMsgConvBtn").addClass('icon-loading');
878
+                      var msgToSend = $("#sendMsgConvText").val();
879
+                      var selectedid = $("#selectFromNbConv").val();
880
+                      var toNumber = $("#toNmbrConv").text();
881
+                      var receiversNumbers = [toNumber];
882
+
883
+		      if (selectedid != '') { 
884
+
885
+			  var sendersplit = selectedid.split(":");
886
+			  var providercap = sendersplit[0];
887
+			  var provsec = sendersplit[1];
888
+
889
+			  if (/[a-zA-Z]/.test(provsec)) {
890
+			      var alphanumcheck = true;
891
+			  } else { var alphanumcheck = false; }
892
+
893
+			  if (providercap == 'Tx' && alphanumcheck == false) {  
894
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
895
+			      var selectedsender = "+" + senderproc;
896
+			      var providerUsed = "telnyx";
897
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
898
+			  } else if (providercap == 'Pl' && alphanumcheck == false) {
899
+			      var selectedsender = selectedid.replace(/[^0-9]/g, "");
900
+			      var providerUsed = "plivo";
901
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
902
+			  } else if (providercap == 'Tw' && alphanumcheck == false) {  
903
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
904
+			      var selectedsender = "+" + senderproc;
905
+			      var providerUsed = "twilio";
906
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
907
+			  } else if (providercap == 'Fl' && alphanumcheck == false) {  
908
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
909
+			      var selectedsender = "+" + senderproc;
910
+			      var providerUsed = "flowroute";
911
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
912
+			  } else if (providercap == 'Tx' && alphanumcheck == true) {
913
+			      var selectedsender = provsec;
914
+			      var providerUsed = "telnyx";
915
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
916
+			  } else if (providercap == 'Pl' && alphanumcheck == true) {
917
+			      var selectedsender = provsec;
918
+			      var providerUsed = "plivo";
919
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
920
+			  } else if (providercap == 'Tw' && alphanumcheck == true) {
921
+			      var selectedsender = provsec;
922
+			      var providerUsed = "twilio";
923
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
924
+			  } else if (providercap == 'Fl' && alphanumcheck == true) {
925
+			      var selectedsender = provsec;
926
+			      var providerUsed = "flowroute";
927
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
928
+			  }
929
+
930
+                          var uploadedtomms = [];
931
+
932
+	                  if (msgToSend != '') {
933
+
934
+				  $.ajax({
935
+				     url: relbaseUrl + '/' + userid,
936
+				     type: "POST",
937
+				     data: {
938
+				           receiversPhoneNbs: receiversNumbers,
939
+				           fromsender: selectedsender,
940
+				           waitinterval: 1000,
941
+				           sentsmstext: msgToSend,
942
+				           ismms: 0,
943
+				           mmsfiles: uploadedtomms
944
+				         },
945
+				     success: function(displayname) {
946
+
947
+                                           var tzdate = new Date();
948
+                                           var presDatest = new Date(tzdate.getTime() - (tzdate.getTimezoneOffset() * 60000)).toJSON();
949
+                                           var presDatedb = presDatest.split(".")[0];
950
+                                           var presDatesc = presDatedb.split("T");
951
+                                           var presDate = presDatesc[0] +" "+ presDatesc[1];
952
+                                           var sentMessageStatus = '';
953
+
954
+                                           if (displayname) {
955
+                                               var msgToSendproc = "<span class='msgAuthorNameGrp'>"+ displayname + ":</span>" + msgToSend; 
956
+                                           } else { var msgToSendproc = ''; }
957
+
958
+                                           $("#msgListRowCell").append("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ selectedsender +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ receiversNumbers[0] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ msgToSendproc +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ presDate +"</div><div class='sentMssgStatus'>"+ sentMessageStatus +"</div></div>");
959
+
960
+                                           // Scroll down to the bottom of the window
961
+                                           $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
962
+
963
+                                           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
964
+				     },
965
+				     error: function() {
966
+                                           showAlert("Error while sending the message. You can check your Nextcloud log to find out more about this issue.");
967
+				           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
968
+				     }
969
+				  });
970
+			  } else {
971
+                                  showAlert("Please enter a message in the text box!");
972
+				  $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
973
+			  }
974
+		      } else {
975
+                              showAlert("Please choose a Sender ID from the 'From' drop-down list!");
976
+			      $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
977
+		      }
978
+
979
+                   });
980
+
981
+
982
+
983
+	           // Make the window draggable
984
+	           function makeMgrWndDraggable(e) {
985
+
986
+			   window.pmdragging = {};
987
+			   pmdragging.pageX0 = e.pageX;
988
+			   pmdragging.pageY0 = e.pageY;
989
+			   pmdragging.elem = $("#listAllMsgsFromTo");
990
+			   pmdragging.offset0 = $("#listAllMsgsFromTo").offset();
991
+
992
+			   function handle_dragging(e) {
993
+			       var left = pmdragging.offset0.left + (e.pageX - pmdragging.pageX0);
994
+			       var top = pmdragging.offset0.top + (e.pageY - pmdragging.pageY0);
995
+			       $(pmdragging.elem).offset({top: top, left: left});
996
+			   }
997
+
998
+			   function handle_mouseup(e) {
999
+			       $('body').off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
1000
+			   }
1001
+
1002
+			   $('body').on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
1003
+	           }
1004
+	           $("#draglstMsgmWindow").mousedown(makeMgrWndDraggable);
1005
+	           $("#draglstMsgmWindowsc").mousedown(makeMgrWndDraggable);
1006
+
1007
+
1008
+                   // Append the available phone numbers to the From drop-down list
1009
+                   var availPhoneNmbrs = [];
1010
+                   $("#currentsmsnmbrs .optselectsmsnb").each(function() {
1011
+                      var crtphnmbr = $(this).attr("value");
1012
+                      if (crtphnmbr != "") { availPhoneNmbrs.push(crtphnmbr); }
1013
+                   });
1014
+
1015
+                   if (availPhoneNmbrs.length > 0) {
1016
+                       var avphopt = "";
1017
+                       for (let d = 0; d < availPhoneNmbrs.length; d++) {
1018
+                            avphopt += "<option value='"+ availPhoneNmbrs[d] +"'>"+ availPhoneNmbrs[d] +"</option>";
1019
+                       }
1020
+                       $("#selectFromNbConv").append(avphopt);
1021
+
1022
+                   } else { $("#selectFromNbConv").append("<option value='' selected>No IDs</option>"); }
1023
+
1024
+
1025
+                   // Get the sent/received messages for the current phone number, from the database
1026
+		   var getGroupedPnUrl = OC.generateUrl("/apps/sms_relentless/user/getgroupedpernumber");
1027
+
1028
+		   $('#listAllMsgsFromTo').addClass('icon-loading');
1029
+		   var totalPhNmbrs = 0;
1030
+
1031
+		   $.ajax({
1032
+			  method: 'POST',
1033
+			  url: getGroupedPnUrl + '/' + userid,
1034
+			  contentType: 'application/json',
1035
+                          data: JSON.stringify({ phoneNumber: clckPhNumber }),
1036
+			  success: function(groupedpernb) {
1037
+
1038
+				     $('#listAllMsgsFromTo').removeClass('icon-loading');
1039
+
1040
+				     var fromtoNmbrsData = [];
1041
+
1042
+				     for (var i = 0; i < groupedpernb.length; i++) {
1043
+
1044
+					     if (groupedpernb[i].author_displayname) {
1045
+						 var authordnm = groupedpernb[i].author_displayname;
1046
+					     } else { 
1047
+						 var authordnm = '';
1048
+					     }
1049
+
1050
+					     var sentfromnmbrarr = groupedpernb[i].from.split("+");
1051
+				             if (sentfromnmbrarr[1]) {
1052
+						 var groupednbfrom = "+"+ sentfromnmbrarr[1];
1053
+				             } else {
1054
+						 var groupednbfrom = sentfromnmbrarr[0];
1055
+				             }
1056
+
1057
+				             var modmessagerec = '';
1058
+				             if (groupedpernb[i].author_displayname) {
1059
+						 modmessagerec = "<span class='msgAuthorNameGrp'>"+ groupedpernb[i].author_displayname + ":</span>" + groupedpernb[i].message;
1060
+				             } else {
1061
+			                         modmessagerec = groupedpernb[i].message;
1062
+                                             }
1063
+
1064
+				             if (groupedpernb[i].to.indexOf(": ") > -1) {
1065
+				                 var groupednmbrtopre = groupedpernb[i].to.split(": ");
1066
+				                 var groupednmbrto = groupednmbrtopre[1];
1067
+				             } else { 
1068
+				                 var groupednmbrto = groupedpernb[i].to;
1069
+				             }
1070
+
1071
+				             fromtoNmbrsData.push({
1072
+				                       'author_displayname': authordnm,
1073
+				                       'from': groupednbfrom,
1074
+				                       'to': groupednmbrto,
1075
+				                       'message': modmessagerec,
1076
+				                       'date': groupedpernb[i].date,
1077
+				                       'status': groupedpernb[i].deliveryreceipt,
1078
+				                       'table': groupedpernb[i].table
1079
+				             });
1080
+				     }
1081
+
1082
+
1083
+				     // Remove the duplicates
1084
+				     var noDupMsgData = [];
1085
+				     $.each(fromtoNmbrsData, function(i, e) {
1086
+					    var matchingData = $.grep(noDupMsgData, function(item) {
1087
+				                    return item.from == e.from && item.to == e.to && item.message == e.message && item.table == 'received' && e.table == 'sent';
1088
+					    });
1089
+					    if (matchingData.length === 0) {
1090
+						noDupMsgData.push(e);
1091
+					    }
1092
+				     });
1093
+
1094
+				     var messagesPerNmbr = {};
1095
+				     var msgsNamesPerNmbr = {};
1096
+				     var msgsNmbrsNames = {};
1097
+
1098
+			             var displayNamesarr = [];
1099
+			             var convData = [];
1100
+
1101
+			             for (var n = 0; n < noDupMsgData.length; n++) {
1102
+
1103
+			                  if (noDupMsgData[n]['from'] == clckPhNumber && noDupMsgData[n]['table'] == 'sent') {
1104
+
1105
+			                      convData.push({
1106
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
1107
+			                                     'message': noDupMsgData[n]['message'],
1108
+			                                     'from': noDupMsgData[n]['from'],
1109
+			                                     'to': noDupMsgData[n]['to'],
1110
+			                                     'date': noDupMsgData[n]['date'],
1111
+			                                     'direction': 'sent_from',
1112
+			                                     'status': noDupMsgData[n]['status'],
1113
+			                                     'table': noDupMsgData[n]['table']
1114
+			                      });
1115
+
1116
+			                  } else if (noDupMsgData[n]['to'] == clckPhNumber && noDupMsgData[n]['table'] == 'sent') {
1117
+
1118
+			                      convData.push({
1119
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
1120
+			                                     'message': noDupMsgData[n]['message'],
1121
+			                                     'from': noDupMsgData[n]['from'],
1122
+			                                     'to': noDupMsgData[n]['to'],
1123
+			                                     'date': noDupMsgData[n]['date'],
1124
+			                                     'direction': 'sent_to',
1125
+			                                     'status': noDupMsgData[n]['status'],
1126
+			                                     'table': noDupMsgData[n]['table']
1127
+			                      });
1128
+
1129
+
1130
+			                  } else if (noDupMsgData[n]['from'] == clckPhNumber && noDupMsgData[n]['table'] == 'received') {
1131
+
1132
+			                      convData.push({
1133
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
1134
+			                                     'message': noDupMsgData[n]['message'],
1135
+			                                     'from': noDupMsgData[n]['from'],
1136
+			                                     'to': noDupMsgData[n]['to'],
1137
+			                                     'date': noDupMsgData[n]['date'],
1138
+			                                     'direction': 'received_from',
1139
+			                                     'status': noDupMsgData[n]['status'],
1140
+			                                     'table': noDupMsgData[n]['table']
1141
+			                      });
1142
+
1143
+			                  } else if (noDupMsgData[n]['to'] == clckPhNumber && noDupMsgData[n]['table'] == 'received') {
1144
+
1145
+			                      convData.push({
1146
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
1147
+			                                     'message': noDupMsgData[n]['message'],
1148
+			                                     'from': noDupMsgData[n]['from'],
1149
+			                                     'to': noDupMsgData[n]['to'],
1150
+			                                     'date': noDupMsgData[n]['date'],
1151
+			                                     'direction': 'received_on',
1152
+			                                     'status': noDupMsgData[n]['status'],
1153
+			                                     'table': noDupMsgData[n]['table']
1154
+			                      });
1155
+			                  }
1156
+			             }
1157
+
1158
+			             // Sort messages by date
1159
+				     convData.sort(function(a, b) {
1160
+					var c = new Date(a.date);
1161
+					var d = new Date(b.date);
1162
+					return c-d;
1163
+				     });
1164
+                                     convData.reverse();
1165
+
1166
+			             // Collect the display names of the users that sent messages from the current number
1167
+			             var selectedNames = [];
1168
+			             var displayNames = '';
1169
+			             for (var v = 0; v < convData.length; v++) {
1170
+			                  if (selectedNames.indexOf(convData[v]['author_displayname']) == -1) { 
1171
+			                      selectedNames.push(convData[v]['author_displayname']);
1172
+			                      displayNames += "<div id='diplNm_"+ clckPhNumber +"_"+ v +"' class='dispNameList' name='"+ convData[v]['author_displayname'] +"'>"+ convData[v]['author_displayname'] +"</div>";
1173
+			                  }
1174
+			             }
1175
+			             displayNames += "<div id='diplNmAllMsg' class='dispNameListAll' title='Show all the messages for this number.'>"+ clckPhNumber +"</div>";
1176
+
1177
+			             // Store the display names for the current number, to be able to see them later
1178
+			             var ctPhNumber = clckPhNumber;
1179
+			             msgsNamesPerNmbr[ctPhNumber] = displayNames;
1180
+
1181
+			             // Store the messages sent by each user, to be able to see them later when clicking on the user's name
1182
+			             for (var h = 0; h < selectedNames.length; h++) {
1183
+
1184
+			                  var rowMessageArrpn = [];
1185
+			                  for (var b = 0; b < convData.length; b++) {
1186
+
1187
+			                       if (selectedNames[h] == convData[b]['author_displayname']) {
1188
+
1189
+					           if (convData[b]['direction'] == 'sent_from') {
1190
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
1191
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1192
+					               } else {
1193
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1194
+					               }
1195
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1196
+					           } else if (convData[b]['direction'] == 'sent_to') {
1197
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
1198
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1199
+					               } else {
1200
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1201
+					               }
1202
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1203
+					           } else if (convData[b]['direction'] == 'received_from') {
1204
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
1205
+					           } else if (convData[b]['direction'] == 'received_on') {
1206
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
1207
+			                           }
1208
+			                       }
1209
+			                  }
1210
+			                  var crtNmber = clckPhNumber;
1211
+			                  var crtName = selectedNames[h];
1212
+			                  msgsNmbrsNames[crtNmber] = msgsNmbrsNames[crtNmber] || {};
1213
+                                          msgsNmbrsNames[crtNmber][crtName] = rowMessageArrpn;
1214
+			             }
1215
+
1216
+                                     // The number of messages to be loaded by default
1217
+                                     var nmbTblDefault = 50;
1218
+
1219
+                                     // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
1220
+                                     if (convData.length > nmbTblDefault) {
1221
+                                         $("#loadMoreMsgs").css("display", "block");
1222
+                                         var nmbToBeLoaded = nmbTblDefault;
1223
+                                     } else { var nmbToBeLoaded = convData.length; }
1224
+
1225
+			             var rowMessageArr = [];
1226
+			             for (var m = nmbToBeLoaded - 1; m >= 0; m--) {
1227
+
1228
+			                  if (convData[m]['direction'] == 'sent_from') {
1229
+
1230
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1231
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1232
+			                      } else {
1233
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1234
+			                      }
1235
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1236
+
1237
+			                  } else if (convData[m]['direction'] == 'sent_to') {
1238
+
1239
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1240
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1241
+			                      } else {
1242
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1243
+			                      }
1244
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1245
+
1246
+			                  } else if (convData[m]['direction'] == 'received_from') {
1247
+
1248
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1249
+
1250
+			                  } else if (convData[m]['direction'] == 'received_on') {
1251
+
1252
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1253
+			                  }
1254
+			             }
1255
+
1256
+			             var convDataPerNmbr = rowMessageArr.join("");
1257
+
1258
+                                     $("#grpdbynamelst").append(displayNames);
1259
+                                     $("#msgListRowCell").append(convDataPerNmbr);
1260
+
1261
+			             // Store the messages for the current number, to be able to see them later, when clicking on the number
1262
+			             var rowMessageArrcpt = [];
1263
+			             for (var m = 0; m < convData.length; m++) {
1264
+
1265
+			                  if (convData[m]['direction'] == 'sent_from') {
1266
+
1267
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1268
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1269
+			                      } else {
1270
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1271
+			                      }
1272
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1273
+
1274
+			                  } else if (convData[m]['direction'] == 'sent_to') {
1275
+
1276
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1277
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1278
+			                      } else {
1279
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1280
+			                      }
1281
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1282
+
1283
+			                  } else if (convData[m]['direction'] == 'received_from') {
1284
+
1285
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1286
+
1287
+			                  } else if (convData[m]['direction'] == 'received_on') {
1288
+
1289
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1290
+			                  }
1291
+			             }
1292
+
1293
+			             messagesPerNmbr[clckPhNumber] = rowMessageArrcpt;
1294
+
1295
+                                     // Scroll down to the bottom of the window
1296
+                                     $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
1297
+
1298
+                                     // Load more messages
1299
+                                     var clickNmb = 0;
1300
+                                     $("#loadMoreMsgs").click(function() {
1301
+
1302
+                                         clickNmb++;
1303
+
1304
+                                         var crefnb = (clickNmb + 1) * nmbToBeLoaded;
1305
+
1306
+                                         if (crefnb > convData.length) {
1307
+                                             var nmbmsg = convData.length - 1;
1308
+                                             $("#loadMoreMsgs").css("display", "none");
1309
+                                         } else { 
1310
+                                             var nmbmsg = crefnb - 1;
1311
+                                         }
1312
+
1313
+                                         var rowMessageArrAdd = [];
1314
+
1315
+                                         for (var m = nmbmsg; m >= clickNmb * nmbToBeLoaded; m--) {
1316
+
1317
+			                      if (convData[m]['direction'] == 'sent_from') {
1318
+
1319
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1320
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1321
+			                          } else {
1322
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1323
+			                          }
1324
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1325
+
1326
+			                      } else if (convData[m]['direction'] == 'sent_to') {
1327
+
1328
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
1329
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
1330
+			                          } else {
1331
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
1332
+			                          }
1333
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
1334
+
1335
+			                      } else if (convData[m]['direction'] == 'received_from') {
1336
+
1337
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1338
+
1339
+			                      } else if (convData[m]['direction'] == 'received_on') {
1340
+
1341
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
1342
+			                      }
1343
+                                         }
1344
+
1345
+			                 var convDataPerNmbrad = rowMessageArrAdd.join("");
1346
+
1347
+                                         var scrlheight = $("#msgListRowCell").height();
1348
+                                         $("#msgListRowCell").prepend(convDataPerNmbrad);
1349
+
1350
+                                         $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
1351
+                                     });
1352
+
1353
+
1354
+			             // Show the messages sent by each user whose name is clicked
1355
+			             $('[id*="diplNm_"]').click(function() {
1356
+
1357
+			                 var crntNmbr = $(this).attr("id").split("_")[1];
1358
+			                 var crntDisName = $(this).attr("name");                               
1359
+                                         $("#loadMoreMsgs").css("display", "none");
1360
+
1361
+                                         var convDataprn = [];
1362
+                                         $.each(msgsNmbrsNames[crntNmbr][crntDisName], function(index, item) {
1363
+                                                convDataprn.push(item);
1364
+                                         });
1365
+
1366
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
1367
+                                         if (convDataprn.length > nmbTblDefault) {
1368
+                                             $("#loadMoreMsgsusr").css("display", "block");
1369
+                                             var nmbToBeLoaded = nmbTblDefault;
1370
+                                         } else {
1371
+                                             $("#loadMoreMsgsusr").css("display", "none");
1372
+                                             var nmbToBeLoaded = convDataprn.length;
1373
+                                         }
1374
+
1375
+			                 var rowMessageArrprnst = [];
1376
+
1377
+			                 for (var n = nmbToBeLoaded - 1; n >= 0; n--) {
1378
+                                              rowMessageArrprnst.push(convDataprn[n]);
1379
+			                 }
1380
+
1381
+			                 var convDataPerNmbrprnst = rowMessageArrprnst.join("");
1382
+
1383
+                                         $("#msgListRowCell").empty();
1384
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
1385
+
1386
+                                         // Scroll down to the bottom of the window
1387
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
1388
+
1389
+                                         // Load more messages
1390
+                                         var clckNb = 0;
1391
+                                         $("#loadMoreMsgsusr").unbind("click");
1392
+                                         $("#loadMoreMsgsusr").click(function() {
1393
+
1394
+                                             clckNb++;
1395
+                                             var crefnb = (clckNb + 1) * nmbToBeLoaded;
1396
+
1397
+                                             $("#loadMoreMsgs").css("display", "none");
1398
+
1399
+                                             if (crefnb > convDataprn.length) {
1400
+                                                 var nmbmsg = convDataprn.length - 1;
1401
+                                                 $("#loadMoreMsgsusr").css("display", "none");
1402
+                                             } else { 
1403
+                                                 var nmbmsg = crefnb - 1;
1404
+                                                 $("#loadMoreMsgsusr").css("display", "block");
1405
+                                             }
1406
+
1407
+                                             var rowMessageArrAddst = [];
1408
+
1409
+                                             for (var q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
1410
+
1411
+                                                  rowMessageArrAddst.push(convDataprn[q]);
1412
+                                             }
1413
+
1414
+			                     var convDataPerNmbradst = rowMessageArrAddst.join("");
1415
+
1416
+                                             var scrlheight = $("#msgListRowCell").height();
1417
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
1418
+
1419
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
1420
+                                         });
1421
+
1422
+
1423
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
1424
+			                 $("#diplNmAllMsg").css("color", "#04957b");
1425
+			                 $(this).css("color", "#1b8efe");
1426
+			             });
1427
+
1428
+
1429
+			             // Show again all the messages sent/received to/from the clicked number
1430
+			             $("#diplNmAllMsg").click(function() {
1431
+
1432
+                                         $("#loadMoreMsgsusr").css("display", "none");
1433
+
1434
+                                         var convDataprn = [];
1435
+                                         $.each(messagesPerNmbr[clckPhNumber], function(index, item) {
1436
+                                                convDataprn.push(item);
1437
+                                         });
1438
+
1439
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
1440
+                                         if (convDataprn.length > nmbTblDefault) {
1441
+                                             $("#loadMoreMsgs").css("display", "block");
1442
+                                             var nmbToBeLoaded = nmbTblDefault;
1443
+                                         } else {
1444
+                                             $("#loadMoreMsgs").css("display", "none");
1445
+                                             var nmbToBeLoaded = convDataprn.length;
1446
+                                         }
1447
+
1448
+
1449
+			                 var rowMessageArrprnst = [];
1450
+
1451
+			                 for (var n = nmbToBeLoaded - 1; n >= 0; n--) {
1452
+                                              rowMessageArrprnst.push(convDataprn[n]);
1453
+			                 }
1454
+
1455
+			                 var convDataPerNmbrprnst = rowMessageArrprnst.join("");
1456
+
1457
+                                         $("#msgListRowCell").empty();
1458
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
1459
+
1460
+                                         // Scroll down to the bottom of the window
1461
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
1462
+
1463
+
1464
+                                         // Load more messages
1465
+                                         var clckNb = 0;
1466
+                                         $("#loadMoreMsgsusr").unbind("click");
1467
+                                         $("#loadMoreMsgsusr").click(function() {
1468
+
1469
+                                             clckNb++;
1470
+                                             var crefnb = (clckNb + 1) * nmbToBeLoaded;
1471
+
1472
+                                             $("#loadMoreMsgs").css("display", "none");
1473
+
1474
+                                             if (crefnb > convDataprn.length) {
1475
+                                                 var nmbmsg = convDataprn.length - 1;
1476
+                                                 $("#loadMoreMsgsusr").css("display", "none");
1477
+                                             } else { 
1478
+                                                 var nmbmsg = crefnb - 1;
1479
+                                                 $("#loadMoreMsgsusr").css("display", "block");
1480
+                                             }
1481
+
1482
+                                             var rowMessageArrAddst = [];
1483
+
1484
+                                             for (var q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
1485
+
1486
+                                                  rowMessageArrAddst.push(convDataprn[q]);
1487
+                                             }
1488
+
1489
+			                     var convDataPerNmbradst = rowMessageArrAddst.join("");
1490
+
1491
+                                             var scrlheight = $("#msgListRowCell").height();
1492
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
1493
+
1494
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
1495
+                                         });
1496
+
1497
+
1498
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
1499
+			                 $("#diplNmAllMsg").css("color", "#04957b");
1500
+			                 $(this).css("color", "#04c6a4");
1501
+
1502
+			             });
1503
+
1504
+
1505
+				     // Show the scroll-up arrow
1506
+				     $("#frmMsgLstWrap").scroll(function() {
1507
+					if ($(this).scrollTop() > 900) {
1508
+					      $('#upArrowSmall').fadeIn();
1509
+					} else {
1510
+					      $('#upArrowSmall').fadeOut();
1511
+					}
1512
+				     });
1513
+
1514
+				     $("#upArrowSmall").click(function() {
1515
+					$("#frmMsgLstWrap").animate({scrollTop : 0},400);
1516
+				     });
1517
+
1518
+			  },
1519
+			  error: function() {
1520
+                                     showAlert("Error while attempting to get message data from the database!");
1521
+				     $('#listAllMsgsFromTo').removeClass('icon-loading');
1522
+			  }
1523
+		   });
1524
+                }
1525
+
1526
+                $('[id^="showMsgFrom-"]').click(function() {
1527
+
1528
+                   var ctrwnb = $(this).attr("id").replace("showMsgFrom-", "");
1529
+                   var clckPhNumber = $("#frmNmbr-"+ ctrwnb).text();
1530
+
1531
+                   showMsgPerNmbr(clckPhNumber);
1532
+                })
1533
+
1534
+                $('[id^="showMsgTo-"]').click(function() {
1535
+                   var ctrwnbTo = $(this).attr("id").replace("showMsgTo-", "");
1536
+                   if ($("#toNmbr-"+ ctrwnbTo).text().indexOf(":") > -1) {
1537
+                       var clckPhNbTo = $("#toNmbr-"+ ctrwnbTo).text().split(": ")[1];
1538
+                   } else { var clckPhNbTo = $("#toNmbr-"+ ctrwnbTo).text(); };
1539
+
1540
+                   showMsgPerNmbr(clckPhNbTo);
1541
+                })
1542
+
1543
+                // Show the pop-up window for adding a Display Name to the 'From' numbers of unknown senders
1544
+                $('[id^="addDispName-"]').click(function() {
1545
+
1546
+                   var crrownb = $(this).attr("id").replace("addDispName-", "");
1547
+                   var slctPhoneNb = $("#frmNmbr-"+ crrownb).text();
1548
+
1549
+                   var addDNameWindow = "<div id='disNameWindow'>";
1550
+                   addDNameWindow += "<div id='dragDispNmWindow'><img src='/apps/sms_relentless/img/dots.svg'></div>";
1551
+                   addDNameWindow += "<a id='closeDisNmWindow' title='Close this window'></a>";
1552
+                   addDNameWindow += "<div style='display:block;text-align:left;font-size:16px;margin:14px 22px 0px 22px;color:#353535;'>This phone number was not mentioned on the 'Profile info' page of any Nextcloud user. If it's an external number (the number of a person that doesn't have a Nextcloud account), you can save a Display Name for this number, so that all the messages coming from it will be preceded by the specified Display Name:</div>";
1553
+                   addDNameWindow += "<div style='display:block;text-align:center;color:#49B382;font-size:16px;font-weight:500;margin:6px 0px 10px 0px;'>"+ slctPhoneNb +"</div>";
1554
+                   addDNameWindow += "<input type='text' id='saveDispNmText' placeholder='Eg: John Smith' style='display:block;width:80%;height:30px;margin:10px auto;padding:0px 12px;border-radius: 20px;'>";
1555
+                   addDNameWindow += "<input type='submit' id='saveDispName' value='Save'>";
1556
+                   addDNameWindow += "</div>";
1557
+
1558
+                   $("#content").append("<div id='recTblOverlay'></div>");
1559
+                   $("#content").append(addDNameWindow);
1560
+
1561
+                   var topNmDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
1562
+                   var leftNmDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
1563
+                   $("#disNameWindow").css({ "top" : topNmDist, "left" : leftNmDist });
1564
+
1565
+                   $("#closeDisNmWindow").click(function() { $("#disNameWindow").remove(); $("#recTblOverlay").remove(); });
1566
+                   $("#recTblOverlay").click(function() { $("#disNameWindow").remove(); $("#recTblOverlay").remove(); });
1567
+
1568
+
1569
+	           // Make the window draggable
1570
+	           function makeMgrWndDraggable(e) {
1571
+
1572
+			   window.pmdragging = {};
1573
+			   pmdragging.pageX0 = e.pageX;
1574
+			   pmdragging.pageY0 = e.pageY;
1575
+			   pmdragging.elem = $("#disNameWindow");
1576
+			   pmdragging.offset0 = $("#disNameWindow").offset();
1577
+
1578
+			   function handle_dragging(e) {
1579
+			       var left = pmdragging.offset0.left + (e.pageX - pmdragging.pageX0);
1580
+			       var top = pmdragging.offset0.top + (e.pageY - pmdragging.pageY0);
1581
+			       $(pmdragging.elem).offset({top: top, left: left});
1582
+			   }
1583
+
1584
+			   function handle_mouseup(e) {
1585
+			       $('body').off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
1586
+			   }
1587
+
1588
+			   $('body').on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
1589
+	           }
1590
+	           $("#dragDispNmWindow").mousedown(makeMgrWndDraggable);
1591
+
1592
+                   // Save the Display Name
1593
+                   $("#saveDispName").click(function() {
1594
+
1595
+                      var dispNmText = $("#saveDispNmText").val();
1596
+
1597
+                      if (/^[a-zA-Z0-9\s\-\/\.\)\(\']+$/.test(dispNmText) && dispNmText.length < 256) {
1598
+
1599
+                             var saveDispNameUrl = OC.generateUrl("/apps/sms_relentless/user/savedisplayname");
1600
+
1601
+			     $.ajax({
1602
+				  url: saveDispNameUrl + '/' + userid,
1603
+				  method: 'POST',
1604
+				  dataType:'text',
1605
+                                  data: { 
1606
+                                          authorDisplayname: dispNmText,
1607
+                                          from: slctPhoneNb
1608
+                                         },
1609
+				  success: function(respupdname) {
1610
+                                               showAlert(respupdname);
1611
+                                               $("#disNameWindow").remove();
1612
+                                               $("#recTblOverlay").remove();
1613
+                                  },
1614
+				  error: function() {
1615
+                                               showAlert("Error while attempting to save the new Display Name to the database.");
1616
+                                               $("#disNameWindow").remove();
1617
+                                               $("#recTblOverlay").remove();
1618
+                                  }
1619
+			     });
1620
+
1621
+                      } else {
1622
+                              showAlert("The Display Name should contain only letters, numbers, spaces, hyphens (-), slashes (/), periods (.), round brackets ()() and single quotation marks ('), it should not be empty and should have less than 256 characters.");
1623
+                      }
1624
+                   });
1625
+
1626
+                });
1627
+
1628
+
1629
+                // Add pagination
1630
+                var rowsShown = messagesperpage;
1631
+                var rowsTotal = $("#recSmsTable tr").length;
1632
+
1633
+                var numPages = (rowsTotal - 2) / rowsShown;
1634
+
1635
+                for (i = 0; i < numPages; i++) {
1636
+                     var pageNum = i + 1;
1637
+                     $('#paginationrec').append('<a href="#" rel="' + i + '" class="pagenumbersrec">' + pageNum + '</a> ');
1638
+                }
1639
+
1640
+                $('#paginationrec').children(":first").addClass('active');
1641
+
1642
+                $('#paginationrec a:first').addClass('active');
1643
+
1644
+                // Show table page when clicking a page number
1645
+                $('.recpages a').bind('click', function() {
1646
+
1647
+                   $('#paginationrec').children().removeClass('active');
1648
+
1649
+                   $(this).addClass('active');
1650
+
1651
+                   var currentPageNo = $(this).text();
1652
+
1653
+                   $('#paginationrec a').each(function() {
1654
+                       if ($(this).text() == currentPageNo) {
1655
+                           $(this).addClass('active');
1656
+                       }
1657
+                   });
1658
+
1659
+                   // Sort table rows
1660
+		   var rows = $('#recSmsTable tr').get();
1661
+
1662
+		   rows.sort(function(a, b) {
1663
+
1664
+		        var A = parseInt($('td.dbidcolumnrec', a).text());
1665
+		        var B = parseInt($('td.dbidcolumnrec', b).text());
1666
+
1667
+		        if (A < B) {
1668
+		            return -1;
1669
+		        }
1670
+
1671
+		        if (A > B) {
1672
+		            return 1;
1673
+		        }
1674
+
1675
+		        return 0;
1676
+		   });
1677
+
1678
+		   $.each(rows, function(index, row) {
1679
+		      $('#recSmsTable').append(row);
1680
+		   });
1681
+
1682
+                   var currPage = $(this).attr('rel');
1683
+                   var startItem = currPage * rowsShown;
1684
+                   var endItem = startItem + rowsShown;
1685
+
1686
+                   $(".receivedrowsbody").hide().slice(startItem, endItem).css('display', 'table-row');
1687
+
1688
+                   $('#totalrecmessages').remove();
1689
+                   $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
1690
+                });
1691
+
1692
+                $('#paginationrec').children(":last").trigger('click');
1693
+
1694
+                // Select all records
1695
+                $('#selectAllChckbx').change(function() {
1696
+                  if ($(this).is(':checked')) {
1697
+                       $(".indivchckbx").prop("checked", true);
1698
+                  } else {
1699
+                       $(".indivchckbx").prop("checked", false);
1700
+                  }
1701
+                });
1702
+
1703
+                function reorderRecRows() {
1704
+                   var currenttext = $(".filterbuttonsrec").closest('[class="filterbuttonsrec"]').find('[class="indivfilterrec"]').text();
1705
+                   if (currenttext == '') {
1706
+                       $('tr').sort(function (a, b) {
1707
+                          return parseInt($('td.dbidcolumnrec', b).text()) < parseInt($('td.dbidcolumnrec', a).text());
1708
+                       }).appendTo("#recSmsTable");
1709
+                   }
1710
+                }
1711
+
1712
+                // Filter rows
1713
+                $("#databaseidfilter").on("click", function(event) {
1714
+
1715
+                      var databaseId = $("#dbidtextrec").val();
1716
+                      var msgrowsNo = 0;
1717
+
1718
+                      $(".receivedrowsbody").each(function() {
1719
+
1720
+                          var checkrecEmpty1 = 0;
1721
+                          $(".indivfilterrec").not("#dbidtextrec").each(function() {
1722
+                              if ($(this).val() != '') {
1723
+                                  checkrecEmpty1 = 1;
1724
+                              }
1725
+                          });
1726
+
1727
+                          if (checkrecEmpty1 == 0) {
1728
+                              $(this).show();
1729
+                          }
1730
+
1731
+                          if (databaseId != '') {
1732
+                             if ($(this).find('[class="dbidcolumnrec"]').text() == databaseId) {
1733
+                                $("#recSmsTable").append(this);
1734
+                                if ($(this).is(":visible")) { msgrowsNo++; }
1735
+                             } else {
1736
+                                $(this).hide();
1737
+                             }
1738
+                          } else {
1739
+                                $(this).show();
1740
+                                msgrowsNo++;
1741
+                          }
1742
+                      });
1743
+
1744
+                      reorderRecRows();
1745
+                      $('#totalrecmessages').remove();
1746
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1747
+                });
1748
+
1749
+
1750
+                $("#useridfilter").on("click", function(event) {
1751
+
1752
+                      var useridtxt = $("#useridtextrec").val().toLowerCase();
1753
+                      var msgrowsNo = 0;
1754
+
1755
+                      $(".receivedrowsbody").each(function() {
1756
+
1757
+                          var checkrecEmpty2 = 0;
1758
+                          $(".indivfilterrec").not("#useridtextrec").each(function() {
1759
+                              if ($(this).val() != '') {
1760
+                                  checkrecEmpty2 = 1;
1761
+                              }
1762
+                          });
1763
+
1764
+                          if (checkrecEmpty2 == 0) {
1765
+                              $(this).show();
1766
+                          }
1767
+
1768
+                          if (useridtxt != '') {
1769
+                             var useridfound = $(this).find('[class="useridcolrec"]').text().toLowerCase();
1770
+                             if(useridfound.indexOf(useridtxt) != -1) {
1771
+                                $("#recSmsTable").append(this);
1772
+                                if ($(this).is(":visible")) { msgrowsNo++; }
1773
+                             } else {
1774
+                                $(this).hide();
1775
+                             }
1776
+                          } else {
1777
+                                $(this).show();
1778
+                                msgrowsNo++;
1779
+                          }
1780
+                      });
1781
+
1782
+                      reorderRecRows();
1783
+                      $('#totalrecmessages').remove();
1784
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1785
+
1786
+                });
1787
+
1788
+                $("#messageidfilter").on("click", function(event) {
1789
+
1790
+                      var messageidtxt = $("#messageidtextrec").val().toLowerCase();
1791
+                      var msgrowsNo = 0;
1792
+
1793
+                      $(".receivedrowsbody").each(function() {
1794
+
1795
+                          var checkrecEmpty3 = 0;
1796
+                          $(".indivfilterrec").not("#messageidtextrec").each(function() {
1797
+                              if ($(this).val() != '') {
1798
+                                  checkrecEmpty3 = 1;
1799
+                              }
1800
+                          });
1801
+
1802
+                          if (checkrecEmpty3 == 0) {
1803
+                              $(this).show();
1804
+                          }
1805
+
1806
+                          if (messageidtxt != '') {
1807
+                             var foundtdmssgid = $(this).find('[class="messageidcolrec"]').text().toLowerCase();
1808
+                             if (foundtdmssgid.indexOf(messageidtxt) != -1) {
1809
+                                $("#recSmsTable").append(this);
1810
+                                if ($(this).is(":visible")) { msgrowsNo++; }
1811
+                             } else {
1812
+                                $(this).hide();
1813
+                             }
1814
+                          } else {
1815
+                                $(this).show();
1816
+                                msgrowsNo++;
1817
+                          }
1818
+                      });
1819
+
1820
+                      reorderRecRows();
1821
+                      $('#totalrecmessages').remove();
1822
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1823
+                });
1824
+
1825
+                $("#datefilter").on("click", function(event) {
1826
+
1827
+                      var datetxtvr = $("#datetextrec").val().toLowerCase();
1828
+                      var msgrowsNo = 0;
1829
+
1830
+                      $(".receivedrowsbody").each(function() {
1831
+
1832
+                          var checkrecEmpty4 = 0;
1833
+                          $(".indivfilterrec").not("#datetextrec").each(function() {
1834
+                              if ($(this).val() != '') {
1835
+                                  checkrecEmpty4 = 1;
1836
+                              }
1837
+                          });
1838
+
1839
+                          if (checkrecEmpty4 == 0) {
1840
+                              $(this).show();
1841
+                          }
1842
+
1843
+                          if (datetxtvr != '') {
1844
+                              var founddate = $(this).find('[class="datecolrec"]').text().toLowerCase();
1845
+                              if (founddate.indexOf(datetxtvr) != -1) {
1846
+                                  $("#recSmsTable").append(this);
1847
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
1848
+                              } else {
1849
+                                  $(this).hide();
1850
+                              }
1851
+                          } else {
1852
+                                  $(this).show();
1853
+                                  msgrowsNo++;
1854
+                          }
1855
+                      });
1856
+
1857
+                      reorderRecRows();
1858
+                      $('#totalrecmessages').remove();
1859
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1860
+                });
1861
+
1862
+                $("#fromfilter").on("click", function(event) {
1863
+
1864
+                      var fromtxtvr = $("#fromtextrec").val().toLowerCase();
1865
+                      var msgrowsNo = 0;
1866
+
1867
+                      $(".receivedrowsbody").each(function() {
1868
+
1869
+                          var checkrecEmpty5 = 0;
1870
+                          $(".indivfilterrec").not("#fromtextrec").each(function() {
1871
+                              if ($(this).val() != '') {
1872
+                                  checkrecEmpty5 = 1;
1873
+                              }
1874
+                          });
1875
+
1876
+                          if (checkrecEmpty5 == 0) {
1877
+                              $(this).show();
1878
+                          }
1879
+
1880
+                          if (fromtxtvr != '') {
1881
+                             var foundfrom = $(this).find('[class="fromcolumnrec"]').text().toLowerCase();
1882
+                             if (foundfrom.indexOf(fromtxtvr) != -1) {
1883
+                                 $("#recSmsTable").append(this);
1884
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
1885
+                             } else {
1886
+                                 $(this).hide();
1887
+                             }
1888
+                          } else {
1889
+                                 $(this).show();
1890
+                                 msgrowsNo++;
1891
+                          }
1892
+                      });
1893
+
1894
+                      reorderRecRows();
1895
+                      $('#totalrecmessages').remove();
1896
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1897
+                });
1898
+
1899
+                $("#tofilter").on("click", function(event) {
1900
+
1901
+                      var totxtvr = $("#totextrec").val().toLowerCase();
1902
+                      var msgrowsNo = 0;
1903
+
1904
+                      $(".receivedrowsbody").each(function() {
1905
+
1906
+                          var checkrecEmpty6 = 0;
1907
+                          $(".indivfilterrec").not("#totextrec").each(function() {
1908
+                              if ($(this).val() != '') {
1909
+                                  checkrecEmpty6 = 1;
1910
+                              }
1911
+                          });
1912
+
1913
+                          if (checkrecEmpty6 == 0) {
1914
+                              $(this).show();
1915
+                          }
1916
+
1917
+                          if (totxtvr != '') {
1918
+                             var foundto = $(this).find('[class="tocolrec"]').text().toLowerCase();
1919
+                             if (foundto.indexOf(totxtvr) != -1) {
1920
+                                 $("#recSmsTable").append(this);
1921
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
1922
+                             } else {
1923
+                                 $(this).hide();
1924
+                             }
1925
+                          } else {
1926
+                                 $(this).show();
1927
+                                 msgrowsNo++;
1928
+                          }
1929
+                      });
1930
+
1931
+                      reorderRecRows();
1932
+                      $('#totalrecmessages').remove();
1933
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1934
+                });
1935
+
1936
+                $("#messagefilter").on("click", function(event) {
1937
+
1938
+                      var messagetxtvr = $("#messagetextrec").val().toLowerCase();
1939
+                      var msgrowsNo = 0;
1940
+
1941
+                      $(".receivedrowsbody").each(function() {
1942
+
1943
+                          var checkrecEmpty7 = 0;
1944
+                          $(".indivfilterrec").not("#messagetextrec").each(function() {
1945
+                              if ($(this).val() != '') {
1946
+                                  checkrecEmpty7 = 1;
1947
+                              }
1948
+                          });
1949
+
1950
+                          if (checkrecEmpty7 == 0) {
1951
+                              $(this).show();
1952
+                          }
1953
+
1954
+                          if (messagetxtvr != '') {
1955
+                             var foundmessage = $(this).find('[class="messagecolumnrec"]').text().toLowerCase();
1956
+                             if (foundmessage.indexOf(messagetxtvr) != -1) {
1957
+                                $("#recSmsTable").append(this);
1958
+                                if ($(this).is(":visible")) { msgrowsNo++; }
1959
+                             } else {
1960
+                                $(this).hide();
1961
+                             }
1962
+                          } else {
1963
+                                $(this).show();
1964
+                                msgrowsNo++;
1965
+                          }
1966
+                      });
1967
+
1968
+                      reorderRecRows();
1969
+                      $('#totalrecmessages').remove();
1970
+                      $('#smstables').append("<div id='totalrecmessages'>Total filtered messages: " + msgrowsNo + "</div>");
1971
+               });
1972
+
1973
+               // Clear all filters
1974
+               $("#clearrecfilters").on("click", function(event) {
1975
+                      $(".receivedrowsbody").each(function() {
1976
+                          $(this).show();
1977
+                      });
1978
+                      $(".indivfilterrec").val("");
1979
+                      $('#totalrecmessages').remove();
1980
+                      $('#smstables').append("<div id='totalrecmessages'>Total displayed messages: " + parseddata.length + "</div>");
1981
+               });
1982
+
1983
+               // Delete selected rows from the database
1984
+               $("#deleterecrows").on("click", function() {
1985
+                  var checkcheckbx = jQuery("#recSmsTable input[type=checkbox]:checked").length;
1986
+                  if (checkcheckbx == 0) {
1987
+                      showAlert("Please select the row(s) to permanently delete from the database !");
1988
+                  } else {
1989
+                          var checkboxIds = [];
1990
+                          $(".receivedrowsbody").each(function() {
1991
+                             var rowcheckbx = $(this).find('input[type="checkbox"]');
1992
+                             if (rowcheckbx.is(":checked")) {
1993
+                                 var dbrowid = $(this).find('[class="dbidcolumnrec"]').text();
1994
+                                 checkboxIds.push(dbrowid);
1995
+                             }
1996
+                          });
1997
+
1998
+		          confirmAlert("Please note that the row(s) you selected will be permanently deleted from the database, without being saved before removal. This action cannot be undone ! If you really want to permanently delete the selected row(s) press 'OK'.");
1999
+
2000
+		          $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
2001
+
2002
+		          $("#confirmOk").click(function() {
2003
+
2004
+		              $("#alertMsgOverlay").remove();
2005
+		              $("#alertConfMessage").remove();
2006
+
2007
+                              var deleterecRowsUrl = OC.generateUrl("/apps/sms_relentless/user/removerecrows");
2008
+                              $('#smstables').addClass('icon-loading');
2009
+
2010
+                              $.ajax({
2011
+                                   url: deleterecRowsUrl + '/' + userid,
2012
+                                   method: "POST",
2013
+                                   dataType:'text',
2014
+                                   data: {recmessagedbIDs: checkboxIds},
2015
+                                   success: function() {
2016
+                                              showAlert("The row(s) have been deleted successfully !");
2017
+                                              $('#smstables').removeClass('icon-loading');
2018
+                                              $('#receivedsmstableshow').click();
2019
+                                   },
2020
+                                   error: function() {
2021
+                                              showAlert("There was an error while deleting the selected row(s) !");
2022
+                                              $('#smstables').removeClass('icon-loading');
2023
+                                   }
2024
+                              });
2025
+                          });
2026
+
2027
+                  }
2028
+               });
2029
+
2030
+
2031
+               // Show/Hide filter row
2032
+	       $('#recarrow').on('click', function() {
2033
+	          if ($('#recfiltersrow').is(':visible')) {
2034
+		      $('#recfiltersrow').hide();
2035
+                      $('#recheaderrow').css('top', '0px');
2036
+                      $(this).removeClass('arrowUpCl');
2037
+                      $(this).addClass('arrowDownCl');
2038
+		  } else {
2039
+		      $('#recfiltersrow').show();
2040
+                      $('#recheaderrow').css('top', '158px');
2041
+                      $(this).removeClass('arrowDownCl');
2042
+                      $(this).addClass('arrowUpCl');
2043
+                  }
2044
+               });
2045
+
2046
+               $("#app-content").animate({scrollTop:$("#recSmsTable").prop("scrollHeight")},200);
2047
+          },
2048
+          error: function(recdatafromdb) {
2049
+                      showAlert("Error. You can check the Nextcloud log to find more details about this issue.");
2050
+                      $('#smstables').removeClass('icon-loading');
2051
+          }
2052
+     });
2053
+
2054
+  });
2055
+
2056
+
2057
+  // List sent messages
2058
+  $("#sentsmstableshow").on("click", function(event) {
2059
+
2060
+     $('#smstables').empty();
2061
+
2062
+     var getSentUrl = OC.generateUrl("/apps/sms_relentless/user/getsenttable");
2063
+     $('#smstables').addClass('icon-loading');
2064
+
2065
+     $.ajax({
2066
+          url: getSentUrl + '/' + userid,
2067
+          method: "GET",
2068
+          contentType: 'application/json',
2069
+          success: function(sentdatafdb) {
2070
+
2071
+                var sentparseddata = sentdatafdb.datarows;
2072
+
2073
+                $('#smstables').append("<div id='toptablesent'><div class='topbuttonandpage'><span id='sentarrow' title='Show/Hide filters and Delete button'></span></div><div id='paginationsent' class='pages'>Pages </div></div>");
2074
+                $('#smstables').append("<table id='sentSmsTable'></table>");
2075
+                $('#sentSmsTable').append("<tr id='sentfiltersrow'><td class='selectalldvfilter'><button id='clearsentfilters' title='Clear all filters.'></button><button id='deletesentrows' title='Permanently delete the selected row(s) from below from the database.'></button></td><td class='selectalldvfilter'><input type='text' id='dbidtextsent' class='indivfiltersent' title='Enter a database ID number to apply the filter.'><input type='submit' id='databaseidfilter' class='filterbuttonsent' value='' title='Filter rows by the specified database ID.' /></td><td class='selectalldvfilter'><input type='text' id='useridtext' class='indivfiltersent' title='Enter a Nextcloud username to apply the filter.' /><input type='submit' id='useridfilter' class='filterbuttonsent' value='' title='Filter rows by the specified username.' /></td><td class='selectalldvfilter'><input type='text' id='messageidtext' class='indivfiltersent' title='Enter a fragment from a message ID to apply the filter.'  /><input type='submit' id='messageidfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='datetext' class='indivfiltersent' title='Enter a fragment of a date to apply the filter.'/><input type='submit' id='datefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='fromtext' class='indivfiltersent' title='Enter a fragment of a sender&#146s phone number or alphanumeric Sender ID, to apply the filter.' /><input type='submit' id='fromfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='totext' class='indivfiltersent' value='' title='Enter a fragment of a recipient&#146s phone number to apply the filter.'  /><input type='submit' id='tofilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.' /></td><td class='selectalldvfilter'><input type='text' id='networktext' class='indivfiltersent' title='Enter a fragment of a network number to apply the filter.' /><input type='submit' id='networkfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='pricetext' class='indivfiltersent' title='Enter a fragment of a price string to apply the filter.' /><input type='submit' id='pricefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='statustext' class='indivfiltersent' title='Enter a fragment of a status to apply the filter.' /><input type='submit' id='statusfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='deliveryrcpttext' class='indivfiltersent' title='Enter a fragment of a delivery receit to apply the filter.' /><input type='submit' id='deliveryrecfilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td><td class='selectalldvfilter'><input type='text' id='messagetext' class='indivfiltersent' title='Enter a fragment of a message to apply the filter.' /><input type='submit' id='messagefilter' class='filterbuttonsent' value='' title='Filter rows by the specified string.'/></td></tr>");
2076
+                $('#sentSmsTable').append("<tr class='sentrows' id='sentheaderrow'><th id='selectalldv' class='selectsmsdv'><input type='checkbox' id='selectAllChckbx' class ='indivchckbx' title='Select all rows.' /></th><th title='The database ID of each message.'>ID</th><th>User ID</th><th>Message ID</th><th>Date</th><th>From</th><th>To</th><th title='When a 5 or 6 digits code appears in this column, the first 3 digits specify the mobile country code and the last 2 or 3 digits specify the mobile network code of the receiver. You can look up the mobile country code and then the mobile network code on https://en.wikipedia.org/wiki/Mobile_country_code#National_operators'>Network</th><th title=\"The currency is the currency configured in the client account, on the SMS provider's website.\">Price</th><th id='sentstatuscolumn' title=\"This column generally shows the status received from the recipient's carrier, or any errors generated when attempting to send the message.\">Status</th><th title='Not all delivery receipts guarantee that the target received the message. Some delivery receipts represent successful completion of just one step in the delivery process, such as transmitting the message to another telephony operator.'>Delivery<br>Receit</th><th>Sent Message</th></tr>");
2077
+
2078
+                $('#sentfiltersrow').hide();
2079
+
2080
+                if (sentdatafdb.showdispnm == 1) {
2081
+
2082
+                    for (var i = 0; i < sentparseddata.length; i++) {
2083
+
2084
+                         if (sentparseddata[i].author_displayname) {
2085
+                             var procmessage = "<span class='messageAuthorName'>"+ sentparseddata[i].author_displayname + ":</span>" + sentparseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
2086
+                         } else {
2087
+                             var procmessage = sentparseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
2088
+                         }
2089
+
2090
+                         var procsentFrom = "<div id='frmNmbr-"+ i +"'>"+ sentparseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
2091
+
2092
+                         var procsentTo = "<div id='toNmbr-"+ i +"'>"+ sentparseddata[i].to +"<div id='showMsgTo-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
2093
+
2094
+                         $('#sentSmsTable').append("<tr id='singlerow_"+ i +"' class='sentrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+ i +"' class='indivchckbx' /></td><td class='sentdbidcolumn'>"+ sentparseddata[i].id +"</td><td class='useridcolsent'>"+ sentparseddata[i].user_id +"</td><td class='messageidcolsent'>"+ sentparseddata[i].message_id +"</td><td class='datecolsent'>"+ sentparseddata[i].date +"</td><td class='fromcolumnsent'>"+ procsentFrom +"</td><td class='tocolumnsent'>"+ procsentTo +"</td><td class='networkcolumnsent'>"+ sentparseddata[i].network +"</td><td class='pricecolumnsent'>"+ sentparseddata[i].price +"</td><td class='statuscolumnsent'>"+ sentparseddata[i].status +"</td><td class='deliveryrcptcolsent'>"+ sentparseddata[i].deliveryreceipt +"</td><td class='messagecolumnsent'>"+ procmessage +"</td></tr>");
2095
+                    }
2096
+
2097
+                } else {
2098
+
2099
+                    for (var i = 0; i < sentparseddata.length; i++) {
2100
+
2101
+                         var procmessage = sentparseddata[i].message +"<div id='showMsgConv-"+ i +"' class='lstMsgConv'><img class='lstMsgConvImg' src='/apps/sms_relentless/img/reply.svg' title='Show all the messages exchanged between the current 2 phone numbers.'></div>";
2102
+
2103
+                         var procsentFrom = "<div id='frmNmbr-"+ i +"'>"+ sentparseddata[i].from +"<div id='showMsgFrom-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
2104
+
2105
+                         var procsentTo = "<div id='toNmbr-"+ i +"'>"+ sentparseddata[i].to +"<div id='showMsgTo-"+ i +"' class='listToFromMsgs'><img class='lstMsgToFromImg' src='/apps/sms_relentless/img/list.svg' title='Show all the messages sent/received to/from this phone number, that I am allowed to see.'></div></div>";
2106
+
2107
+                         $('#sentSmsTable').append("<tr id='singlerow_"+ i +"' class='sentrowsbody'><td class='selectsmsdv'><input type='checkbox' id='selectspec_"+ i +"' class='indivchckbx' /></td><td class='sentdbidcolumn'>"+ sentparseddata[i].id +"</td><td class='useridcolsent'>"+ sentparseddata[i].user_id +"</td><td class='messageidcolsent'>"+ sentparseddata[i].message_id +"</td><td class='datecolsent'>"+ sentparseddata[i].date +"</td><td class='fromcolumnsent'>"+ procsentFrom +"</td><td class='tocolumnsent'>"+ procsentTo +"</td><td class='networkcolumnsent'>"+ sentparseddata[i].network +"</td><td class='pricecolumnsent'>"+ sentparseddata[i].price +"</td><td class='statuscolumnsent'>"+ sentparseddata[i].status +"</td><td class='deliveryrcptcolsent'>"+ sentparseddata[i].deliveryreceipt +"</td><td class='messagecolumnsent'>"+ procmessage +"</td></tr>");
2108
+                    }
2109
+                }
2110
+
2111
+                $('#smstables').append("<div id='totalsentmessages'><span>Total displayed messages: " + sentparseddata.length + "</span></div>");
2112
+
2113
+                $('#smstables').removeClass('icon-loading');
2114
+
2115
+                $('#sentarrow').removeClass('arrowUpCl');
2116
+                $('#sentarrow').addClass('arrowDownCl');
2117
+
2118
+
2119
+                // Show the pop-up window that lists all the messages exchanged between the current 2 phone numbers
2120
+                function showSentMsgPerConv(phNumberFrom, phNumberTo) {
2121
+
2122
+                   let allfrmtomsg = "<div id='listAllMsgsConv'>";
2123
+                   allfrmtomsg += "<div id='draglstMsgmWindow'><img src='/apps/sms_relentless/img/dots.svg'></div>";
2124
+                   allfrmtomsg += "<a id='closeFrmMsgWindow' title='Close this window'></a>";
2125
+                   allfrmtomsg += "<div class='showByNmbrTitle'>Messages exchanged between <span style='color:#04957b'>"+ phNumberFrom +"</span> and <span style='color:#04957b'>"+ phNumberTo +"</span></div>";
2126
+                   allfrmtomsg += "<div id='frmMsgLstWrap'>";
2127
+                   allfrmtomsg += "<table id='frmMsgLstTbl'>";
2128
+                   allfrmtomsg += "<tr class='groupedrowsbody'><td><div id='grpdbynamelst' class='groupedLstNamespn'></div></td><td><div id='loadMoreMsgs' title='Click to load older messages.'>Load more messages</div><div id='loadMoreMsgsusr' title='Click to load older messages.'>Load more messages</div><div id='msgListRowCell' class='groupedLstMsgspn'></div><div id='arrowupWrap'><div id='upArrowSmall' title='Scroll to the top'></div></div></td></tr>";
2129
+                   allfrmtomsg += "</table></div>";
2130
+                   allfrmtomsg += "<div id='sendMsgReply'><table id='sendMsgConv'><tr><td><div id='fromPhoneNmbrConv'>From: <select id='selectFromNbConv'></select></div><div id='toPhoneNmbrConv'>To: <span id='toNmbrConv' style='color:#04957b'>"+ phNumberTo +"</span></div></td></tr>";
2131
+                   allfrmtomsg += "<tr><td><textarea id='sendMsgConvText' placeholder='Enter a message here, then press Send SMS'></textarea></td></tr></table>";
2132
+                   allfrmtomsg += "<div id='sendMsgConvBtn'>Send SMS</div></div>";
2133
+                   allfrmtomsg += "<div style='display:block;width:100%;height:14px;'><img id='expandWindowRpl' src='/apps/sms_relentless/img/arrowDown.svg' title='Expand to send a reply'></div>";
2134
+                   allfrmtomsg += "<div id='draglstMsgmWindowsc'><img src='/apps/sms_relentless/img/dots.svg' style='padding:4px;vertical-align:top;'></div>";
2135
+                   allfrmtomsg += "</div>";
2136
+
2137
+                   $("#content").append("<div id='recTblOverlay'></div>");
2138
+                   $("#content").append(allfrmtomsg);
2139
+
2140
+                   let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 340) +"px";
2141
+                   let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 300) +"px";
2142
+                   $("#listAllMsgsConv").css({ "top" : topDist, "left" : leftDist });
2143
+
2144
+                   $("#closeFrmMsgWindow").click(function() { $("#listAllMsgsConv").remove(); $("#recTblOverlay").remove(); });
2145
+                   $("#recTblOverlay").click(function() { $("#listAllMsgsConv").remove(); $("#recTblOverlay").remove(); });
2146
+
2147
+	           // Expand the window when clicking on the arrow, to be able to send a reply message
2148
+	           $("#expandWindowRpl").click(function() {
2149
+
2150
+	              if ($(this).attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
2151
+                          $("#sendMsgReply").css("display", "block");
2152
+                          $("#listAllMsgsConv").css("height", "618px");
2153
+	                  $(this).attr('src', '/apps/sms_relentless/img/arrowUp.svg');
2154
+                          $(this).attr('title', 'Collapse');
2155
+	              } else {
2156
+                          $("#sendMsgReply").css("display", "none");
2157
+                          $("#listAllMsgsConv").css("height", "490px");
2158
+                          $(this).attr('src', '/apps/sms_relentless/img/arrowDown.svg');
2159
+                          $(this).attr('title', 'Expand to send a reply');
2160
+	              }
2161
+	           });
2162
+
2163
+                   // Send a message from the 'conversation' window
2164
+                   $("#sendMsgConvBtn").click(function() {
2165
+
2166
+                      $("#sendMsgConv,#sendMsgConvBtn").addClass('icon-loading');
2167
+                      var msgToSend = $("#sendMsgConvText").val();
2168
+                      var selectedid = $("#selectFromNbConv").val();
2169
+                      var toNumber = $("#toNmbrConv").text();
2170
+                      var receiversNumbers = [toNumber];
2171
+
2172
+		      if (selectedid != '') { 
2173
+
2174
+			  var sendersplit = selectedid.split(":");
2175
+			  var providercap = sendersplit[0];
2176
+			  var provsec = sendersplit[1];
2177
+
2178
+			  if (/[a-zA-Z]/.test(provsec)) {
2179
+			      var alphanumcheck = true;
2180
+			  } else { var alphanumcheck = false; }
2181
+
2182
+			  if (providercap == 'Tx' && alphanumcheck == false) {  
2183
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2184
+			      var selectedsender = "+" + senderproc;
2185
+			      var providerUsed = "telnyx";
2186
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
2187
+			  } else if (providercap == 'Pl' && alphanumcheck == false) {
2188
+			      var selectedsender = selectedid.replace(/[^0-9]/g, "");
2189
+			      var providerUsed = "plivo";
2190
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
2191
+			  } else if (providercap == 'Tw' && alphanumcheck == false) {  
2192
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2193
+			      var selectedsender = "+" + senderproc;
2194
+			      var providerUsed = "twilio";
2195
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
2196
+			  } else if (providercap == 'Fl' && alphanumcheck == false) {  
2197
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2198
+			      var selectedsender = "+" + senderproc;
2199
+			      var providerUsed = "flowroute";
2200
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
2201
+			  } else if (providercap == 'Tx' && alphanumcheck == true) {
2202
+			      var selectedsender = provsec;
2203
+			      var providerUsed = "telnyx";
2204
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
2205
+			  } else if (providercap == 'Pl' && alphanumcheck == true) {
2206
+			      var selectedsender = provsec;
2207
+			      var providerUsed = "plivo";
2208
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
2209
+			  } else if (providercap == 'Tw' && alphanumcheck == true) {
2210
+			      var selectedsender = provsec;
2211
+			      var providerUsed = "twilio";
2212
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
2213
+			  } else if (providercap == 'Fl' && alphanumcheck == true) {
2214
+			      var selectedsender = provsec;
2215
+			      var providerUsed = "flowroute";
2216
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
2217
+			  }
2218
+
2219
+                          var uploadedtomms = [];
2220
+
2221
+	                  if (msgToSend != '') {
2222
+
2223
+				  $.ajax({
2224
+				     url: relbaseUrl + '/' + userid,
2225
+				     type: "POST",
2226
+				     data: {
2227
+				           receiversPhoneNbs: receiversNumbers,
2228
+				           fromsender: selectedsender,
2229
+				           waitinterval: 1000,
2230
+				           sentsmstext: msgToSend,
2231
+				           ismms: 0,
2232
+				           mmsfiles: uploadedtomms
2233
+				         },
2234
+				     success: function(displayname) {
2235
+
2236
+                                           var tzdate = new Date();
2237
+                                           var presDatest = new Date(tzdate.getTime() - (tzdate.getTimezoneOffset() * 60000)).toJSON();
2238
+                                           var presDatedb = presDatest.split(".")[0];
2239
+                                           var presDatesc = presDatedb.split("T");
2240
+                                           var presDate = presDatesc[0] +" "+ presDatesc[1];
2241
+                                           var sentMessageStatus = '';
2242
+
2243
+                                           if (displayname) {
2244
+                                               var msgToSendproc = "<span class='msgAuthorNameGrp'>"+ displayname + ":</span>" + msgToSend; 
2245
+                                           } else { var msgToSendproc = ''; }
2246
+
2247
+                                           $("#msgListRowCell").append("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ selectedsender +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ receiversNumbers[0] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ msgToSendproc +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ presDate +"</div><div class='sentMssgStatus'>"+ sentMessageStatus +"</div></div>");
2248
+
2249
+                                           // Scroll down to the bottom of the window
2250
+                                           $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
2251
+
2252
+                                           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2253
+				     },
2254
+				     error: function() {
2255
+				           showAlert("Error while sending the message. You can check your Nextcloud log to find out more about this issue.");
2256
+				           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2257
+				     }
2258
+				  });
2259
+			  } else {
2260
+				  showAlert("Please enter a message in the text box!");
2261
+				  $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2262
+			  }
2263
+		      } else {
2264
+			      showAlert("Please choose a Sender ID from the 'From' drop-down list!");
2265
+			      $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2266
+		      }
2267
+
2268
+                   });
2269
+
2270
+
2271
+	           // Make the window draggable
2272
+	           function makeMgrWndDraggable(e) {
2273
+
2274
+			   window.pmdragging = {};
2275
+			   pmdragging.pageX0 = e.pageX;
2276
+			   pmdragging.pageY0 = e.pageY;
2277
+			   pmdragging.elem = $("#listAllMsgsConv");
2278
+			   pmdragging.offset0 = $("#listAllMsgsConv").offset();
2279
+
2280
+			   function handle_dragging(e) {
2281
+			       let left = pmdragging.offset0.left + (e.pageX - pmdragging.pageX0);
2282
+			       let top = pmdragging.offset0.top + (e.pageY - pmdragging.pageY0);
2283
+			       $(pmdragging.elem).offset({top: top, left: left});
2284
+			   }
2285
+
2286
+			   function handle_mouseup(e) {
2287
+			       $('body').off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
2288
+			   }
2289
+
2290
+			   $('body').on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
2291
+	           }
2292
+	           $("#draglstMsgmWindow").mousedown(makeMgrWndDraggable);
2293
+	           $("#draglstMsgmWindowsc").mousedown(makeMgrWndDraggable);
2294
+
2295
+
2296
+                   // Append the available phone numbers to the From drop-down list
2297
+                   var availPhoneNmbrs = [];
2298
+                   $("#currentsmsnmbrs .optselectsmsnb").each(function() {
2299
+                      var crtphnmbr = $(this).attr("value");
2300
+                      if (crtphnmbr != "") { availPhoneNmbrs.push(crtphnmbr); }
2301
+                   });
2302
+
2303
+                   if (availPhoneNmbrs.length > 0) {
2304
+                       var avphopt = "";
2305
+                       for (let d = 0; d < availPhoneNmbrs.length; d++) {
2306
+                            if (availPhoneNmbrs[d].indexOf(phNumberFrom) === -1) {
2307
+                                avphopt += "<option value='"+ availPhoneNmbrs[d] +"'>"+ availPhoneNmbrs[d] +"</option>";
2308
+                            } else {
2309
+                                avphopt += "<option value='"+ availPhoneNmbrs[d] +"' selected>"+ availPhoneNmbrs[d] +"</option>";
2310
+                            }
2311
+                       }
2312
+                       $("#selectFromNbConv").append(avphopt);
2313
+
2314
+                   } else { $("#selectFromNbConv").append("<option value='' selected>No IDs</option>"); }
2315
+
2316
+
2317
+                   // Get the sent/received messages for the current phone number, from the database
2318
+		   let getGrpConvUrl = OC.generateUrl("/apps/sms_relentless/user/getgroupedforreply");
2319
+
2320
+		   $('#listAllMsgsConv').addClass('icon-loading');
2321
+		   let totalPhNmbrs = 0;
2322
+
2323
+		   $.ajax({
2324
+			  method: 'POST',
2325
+			  url: getGrpConvUrl + '/' + userid,
2326
+			  contentType: 'application/json',
2327
+                          data: JSON.stringify({ phoneNmbrFrom: phNumberFrom, phoneNmbrTo: phNumberTo }),
2328
+			  success: function(groupedperconv) {
2329
+
2330
+				     $('#listAllMsgsConv').removeClass('icon-loading');
2331
+
2332
+				     let fromtoNmbrsData = [];
2333
+
2334
+				     for (let i = 0; i < groupedperconv.length; i++) {
2335
+
2336
+					     if (groupedperconv[i].author_displayname) {
2337
+						 var authordnm = groupedperconv[i].author_displayname;
2338
+					     } else { 
2339
+						 var authordnm = '';
2340
+					     }
2341
+
2342
+					     var sentfromnmbrarr = groupedperconv[i].from.split("+");
2343
+				             if (sentfromnmbrarr[1]) {
2344
+						 var groupednbfrom = "+"+ sentfromnmbrarr[1];
2345
+				             } else {
2346
+						 var groupednbfrom = sentfromnmbrarr[0];
2347
+				             }
2348
+
2349
+				             var modmessagerec = '';
2350
+				             if (groupedperconv[i].author_displayname) {
2351
+						 modmessagerec = "<span class='msgAuthorNameGrp'>"+ groupedperconv[i].author_displayname + ":</span>" + groupedperconv[i].message;
2352
+				             } else {
2353
+			                         modmessagerec = groupedperconv[i].message;
2354
+                                             }
2355
+
2356
+				             if (groupedperconv[i].to.indexOf(": ") > -1) {
2357
+				                 var groupednmbrtopre = groupedperconv[i].to.split(": ");
2358
+				                 var groupednmbrto = groupednmbrtopre[1];
2359
+				             } else { 
2360
+				                 var groupednmbrto = groupedperconv[i].to;
2361
+				             }
2362
+
2363
+				             fromtoNmbrsData.push({
2364
+				                       'author_displayname': authordnm,
2365
+				                       'from': groupednbfrom,
2366
+				                       'to': groupednmbrto,
2367
+				                       'message': modmessagerec,
2368
+				                       'date': groupedperconv[i].date,
2369
+				                       'status': groupedperconv[i].deliveryreceipt,
2370
+				                       'table': groupedperconv[i].table
2371
+				             });
2372
+				     }
2373
+
2374
+
2375
+				     // Remove the duplicates
2376
+				     let noDupMsgData = [];
2377
+				     $.each(fromtoNmbrsData, function(i, e) {
2378
+					    let matchingData = $.grep(noDupMsgData, function(item) {
2379
+				                    return item.from == e.from && item.to == e.to && item.message == e.message && item.table == 'received' && e.table == 'sent';
2380
+					    });
2381
+					    if (matchingData.length === 0) {
2382
+						noDupMsgData.push(e);
2383
+					    }
2384
+				     });
2385
+
2386
+				     let messagesPerNmbr = {};
2387
+				     let msgsNamesPerNmbr = {};
2388
+				     let msgsNmbrsNames = {};
2389
+
2390
+			             let displayNamesarr = [];
2391
+			             let convData = [];
2392
+
2393
+			             for (let n = 0; n < noDupMsgData.length; n++) {
2394
+
2395
+			                  if (noDupMsgData[n]['from'] == phNumberTo && noDupMsgData[n]['table'] == 'sent') {
2396
+
2397
+			                      convData.push({
2398
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
2399
+			                                     'message': noDupMsgData[n]['message'],
2400
+			                                     'from': noDupMsgData[n]['from'],
2401
+			                                     'to': noDupMsgData[n]['to'],
2402
+			                                     'date': noDupMsgData[n]['date'],
2403
+			                                     'direction': 'sent_from',
2404
+			                                     'status': noDupMsgData[n]['status'],
2405
+			                                     'table': noDupMsgData[n]['table']
2406
+			                      });
2407
+
2408
+			                  } else if (noDupMsgData[n]['to'] == phNumberTo && noDupMsgData[n]['table'] == 'sent') {
2409
+
2410
+			                      convData.push({
2411
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
2412
+			                                     'message': noDupMsgData[n]['message'],
2413
+			                                     'from': noDupMsgData[n]['from'],
2414
+			                                     'to': noDupMsgData[n]['to'],
2415
+			                                     'date': noDupMsgData[n]['date'],
2416
+			                                     'direction': 'sent_to',
2417
+			                                     'status': noDupMsgData[n]['status'],
2418
+			                                     'table': noDupMsgData[n]['table']
2419
+			                      });
2420
+
2421
+
2422
+			                  } else if (noDupMsgData[n]['from'] == phNumberTo && noDupMsgData[n]['table'] == 'received') {
2423
+
2424
+			                      convData.push({
2425
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
2426
+			                                     'message': noDupMsgData[n]['message'],
2427
+			                                     'from': noDupMsgData[n]['from'],
2428
+			                                     'to': noDupMsgData[n]['to'],
2429
+			                                     'date': noDupMsgData[n]['date'],
2430
+			                                     'direction': 'received_from',
2431
+			                                     'status': noDupMsgData[n]['status'],
2432
+			                                     'table': noDupMsgData[n]['table']
2433
+			                      });
2434
+
2435
+			                  } else if (noDupMsgData[n]['to'] == phNumberTo && noDupMsgData[n]['table'] == 'received') {
2436
+
2437
+			                      convData.push({
2438
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
2439
+			                                     'message': noDupMsgData[n]['message'],
2440
+			                                     'from': noDupMsgData[n]['from'],
2441
+			                                     'to': noDupMsgData[n]['to'],
2442
+			                                     'date': noDupMsgData[n]['date'],
2443
+			                                     'direction': 'received_on',
2444
+			                                     'status': noDupMsgData[n]['status'],
2445
+			                                     'table': noDupMsgData[n]['table']
2446
+			                      });
2447
+			                  }
2448
+			             }
2449
+
2450
+			             // Sort messages by date
2451
+				     convData.sort(function(a, b) {
2452
+					let c = new Date(a.date);
2453
+					let d = new Date(b.date);
2454
+					return c-d;
2455
+				     });
2456
+                                     convData.reverse();
2457
+
2458
+			             // Collect the display names of the users that sent messages from the current number
2459
+			             let selectedNames = [];
2460
+			             let displayNames = '';
2461
+			             for (let v = 0; v < convData.length; v++) {
2462
+			                  if (selectedNames.indexOf(convData[v]['author_displayname']) == -1) {
2463
+			                      selectedNames.push(convData[v]['author_displayname']);
2464
+			                      displayNames += "<div id='diplNm_"+ phNumberTo +"_"+ v +"' class='dispNameList' name='"+ convData[v]['author_displayname'] +"'>"+ convData[v]['author_displayname'] +"</div>";
2465
+			                  }
2466
+			             }
2467
+			             displayNames += "<div id='diplNmAllMsg' class='dispNameListAll' title='Show all the messages for this number.'>"+ phNumberTo +"</div>";
2468
+
2469
+			             // Store the display names for the current number, to be able to see them later
2470
+			             let ctPhNumber = phNumberTo;
2471
+			             msgsNamesPerNmbr[ctPhNumber] = displayNames;
2472
+
2473
+			             // Store the messages sent by each user, to be able to see them later when clicking on the user's name
2474
+			             for (let h = 0; h < selectedNames.length; h++) {
2475
+
2476
+			                  let rowMessageArrpn = [];
2477
+			                  for (let b = 0; b < convData.length; b++) {
2478
+
2479
+			                       if (selectedNames[h] == convData[b]['author_displayname']) {
2480
+
2481
+					           if (convData[b]['direction'] == 'sent_from') {
2482
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
2483
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2484
+					               } else {
2485
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2486
+					               }
2487
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2488
+					           } else if (convData[b]['direction'] == 'sent_to') {
2489
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
2490
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2491
+					               } else {
2492
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2493
+					               }
2494
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2495
+					           } else if (convData[b]['direction'] == 'received_from') {
2496
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
2497
+					           } else if (convData[b]['direction'] == 'received_on') {
2498
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
2499
+			                           }
2500
+			                       }
2501
+			                  }
2502
+			                  let crtNmber = phNumberTo;
2503
+			                  let crtName = selectedNames[h];
2504
+			                  msgsNmbrsNames[crtNmber] = msgsNmbrsNames[crtNmber] || {};
2505
+                                          msgsNmbrsNames[crtNmber][crtName] = rowMessageArrpn;
2506
+			             }
2507
+
2508
+                                     // The number of messages to be loaded by default
2509
+                                     let nmbTblDefault = 50;
2510
+
2511
+                                     // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
2512
+                                     if (convData.length > nmbTblDefault) {
2513
+                                         $("#loadMoreMsgs").css("display", "block");
2514
+                                         var nmbToBeLoaded = nmbTblDefault;
2515
+                                     } else { var nmbToBeLoaded = convData.length; }
2516
+
2517
+			             let rowMessageArr = [];
2518
+			             for (var m = nmbToBeLoaded - 1; m >= 0; m--) {
2519
+
2520
+			                  if (convData[m]['direction'] == 'sent_from') {
2521
+
2522
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2523
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2524
+			                      } else {
2525
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2526
+			                      }
2527
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2528
+
2529
+			                  } else if (convData[m]['direction'] == 'sent_to') {
2530
+
2531
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2532
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2533
+			                      } else {
2534
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2535
+			                      }
2536
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2537
+
2538
+			                  } else if (convData[m]['direction'] == 'received_from') {
2539
+
2540
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2541
+
2542
+			                  } else if (convData[m]['direction'] == 'received_on') {
2543
+
2544
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2545
+			                  }
2546
+			             }
2547
+
2548
+			             let convDataPerNmbr = rowMessageArr.join("");
2549
+
2550
+                                     $("#grpdbynamelst").append(displayNames);
2551
+                                     $("#msgListRowCell").append(convDataPerNmbr);
2552
+
2553
+			             // Store the messages for the current number, to be able to see them later, when clicking on the number
2554
+			             let rowMessageArrcpt = [];
2555
+			             for (let m = 0; m < convData.length; m++) {
2556
+
2557
+			                  if (convData[m]['direction'] == 'sent_from') {
2558
+
2559
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2560
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2561
+			                      } else {
2562
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2563
+			                      }
2564
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2565
+
2566
+			                  } else if (convData[m]['direction'] == 'sent_to') {
2567
+
2568
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2569
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2570
+			                      } else {
2571
+			                          let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2572
+			                      }
2573
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2574
+
2575
+			                  } else if (convData[m]['direction'] == 'received_from') {
2576
+
2577
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2578
+
2579
+			                  } else if (convData[m]['direction'] == 'received_on') {
2580
+
2581
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2582
+			                  }
2583
+			             }
2584
+
2585
+			             messagesPerNmbr[phNumberTo] = rowMessageArrcpt;
2586
+
2587
+                                     // Scroll down to the bottom of the window
2588
+                                     $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
2589
+
2590
+                                     // Load more messages
2591
+                                     let clickNmb = 0;
2592
+                                     $("#loadMoreMsgs").click(function() {
2593
+
2594
+                                         clickNmb++;
2595
+
2596
+                                         var crefnb = (clickNmb + 1) * nmbToBeLoaded;
2597
+
2598
+                                         if (crefnb > convData.length) {
2599
+                                             var nmbmsg = convData.length - 1;
2600
+                                             $("#loadMoreMsgs").css("display", "none");
2601
+                                         } else { 
2602
+                                             var nmbmsg = crefnb - 1;
2603
+                                         }
2604
+
2605
+                                         var rowMessageArrAdd = [];
2606
+
2607
+                                         for (let m = nmbmsg; m >= clickNmb * nmbToBeLoaded; m--) {
2608
+
2609
+			                      if (convData[m]['direction'] == 'sent_from') {
2610
+
2611
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2612
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2613
+			                          } else {
2614
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2615
+			                          }
2616
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2617
+
2618
+			                      } else if (convData[m]['direction'] == 'sent_to') {
2619
+
2620
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
2621
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
2622
+			                          } else {
2623
+			                              let sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
2624
+			                          }
2625
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
2626
+
2627
+			                      } else if (convData[m]['direction'] == 'received_from') {
2628
+
2629
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2630
+
2631
+			                      } else if (convData[m]['direction'] == 'received_on') {
2632
+
2633
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
2634
+			                      }
2635
+                                         }
2636
+
2637
+			                 let convDataPerNmbrad = rowMessageArrAdd.join("");
2638
+
2639
+                                         let scrlheight = $("#msgListRowCell").height();
2640
+                                         $("#msgListRowCell").prepend(convDataPerNmbrad);
2641
+
2642
+                                         $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
2643
+                                     });
2644
+
2645
+
2646
+			             // Show the messages sent by each user whose name is clicked
2647
+			             $('[id*="diplNm_"]').click(function() {
2648
+
2649
+			                 let crntNmbr = $(this).attr("id").split("_")[1];
2650
+			                 let crntDisName = $(this).attr("name");                               
2651
+                                         $("#loadMoreMsgs").css("display", "none");
2652
+
2653
+                                         let convDataprn = [];
2654
+                                         $.each(msgsNmbrsNames[crntNmbr][crntDisName], function(index, item) {
2655
+                                                convDataprn.push(item);
2656
+                                         });
2657
+
2658
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
2659
+                                         if (convDataprn.length > nmbTblDefault) {
2660
+                                             $("#loadMoreMsgsusr").css("display", "block");
2661
+                                             let nmbToBeLoaded = nmbTblDefault;
2662
+                                         } else {
2663
+                                             $("#loadMoreMsgsusr").css("display", "none");
2664
+                                             let nmbToBeLoaded = convDataprn.length;
2665
+                                         }
2666
+
2667
+			                 let rowMessageArrprnst = [];
2668
+
2669
+			                 for (let n = nmbToBeLoaded - 1; n >= 0; n--) {
2670
+                                              rowMessageArrprnst.push(convDataprn[n]);
2671
+			                 }
2672
+
2673
+			                 let convDataPerNmbrprnst = rowMessageArrprnst.join("");
2674
+
2675
+                                         $("#msgListRowCell").empty();
2676
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
2677
+
2678
+                                         // Scroll down to the bottom of the window
2679
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
2680
+
2681
+                                         // Load more messages
2682
+                                         let clckNb = 0;
2683
+                                         $("#loadMoreMsgsusr").unbind("click");
2684
+                                         $("#loadMoreMsgsusr").click(function() {
2685
+
2686
+                                             clckNb++;
2687
+                                             let crefnb = (clckNb + 1) * nmbToBeLoaded;
2688
+
2689
+                                             $("#loadMoreMsgs").css("display", "none");
2690
+
2691
+                                             if (crefnb > convDataprn.length) {
2692
+                                                 let nmbmsg = convDataprn.length - 1;
2693
+                                                 $("#loadMoreMsgsusr").css("display", "none");
2694
+                                             } else { 
2695
+                                                 let nmbmsg = crefnb - 1;
2696
+                                                 $("#loadMoreMsgsusr").css("display", "block");
2697
+                                             }
2698
+
2699
+                                             let rowMessageArrAddst = [];
2700
+
2701
+                                             for (let q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
2702
+
2703
+                                                  rowMessageArrAddst.push(convDataprn[q]);
2704
+                                             }
2705
+
2706
+			                     let convDataPerNmbradst = rowMessageArrAddst.join("");
2707
+
2708
+                                             let scrlheight = $("#msgListRowCell").height();
2709
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
2710
+
2711
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
2712
+                                         });
2713
+
2714
+
2715
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
2716
+			                 $("#diplNmAllMsg").css("color", "#04957b");
2717
+			                 $(this).css("color", "#1b8efe");
2718
+			             });
2719
+
2720
+
2721
+			             // Show again all the messages sent/received to/from the clicked number
2722
+			             $("#diplNmAllMsg").click(function() {
2723
+
2724
+                                         $("#loadMoreMsgsusr").css("display", "none");
2725
+
2726
+                                         let convDataprn = [];
2727
+                                         $.each(messagesPerNmbr[phNumberTo], function(index, item) {
2728
+                                                convDataprn.push(item);
2729
+                                         });
2730
+
2731
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
2732
+                                         if (convDataprn.length > nmbTblDefault) {
2733
+                                             $("#loadMoreMsgs").css("display", "block");
2734
+                                             let nmbToBeLoaded = nmbTblDefault;
2735
+                                         } else {
2736
+                                             $("#loadMoreMsgs").css("display", "none");
2737
+                                             let nmbToBeLoaded = convDataprn.length;
2738
+                                         }
2739
+
2740
+
2741
+			                 let rowMessageArrprnst = [];
2742
+
2743
+			                 for (let n = nmbToBeLoaded - 1; n >= 0; n--) {
2744
+                                              rowMessageArrprnst.push(convDataprn[n]);
2745
+			                 }
2746
+
2747
+			                 let convDataPerNmbrprnst = rowMessageArrprnst.join("");
2748
+
2749
+                                         $("#msgListRowCell").empty();
2750
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
2751
+
2752
+                                         // Scroll down to the bottom of the window
2753
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
2754
+
2755
+
2756
+                                         // Load more messages
2757
+                                         let clckNb = 0;
2758
+                                         $("#loadMoreMsgsusr").unbind("click");
2759
+                                         $("#loadMoreMsgsusr").click(function() {
2760
+
2761
+                                             clckNb++;
2762
+                                             let crefnb = (clckNb + 1) * nmbToBeLoaded;
2763
+
2764
+                                             $("#loadMoreMsgs").css("display", "none");
2765
+
2766
+                                             if (crefnb > convDataprn.length) {
2767
+                                                 let nmbmsg = convDataprn.length - 1;
2768
+                                                 $("#loadMoreMsgsusr").css("display", "none");
2769
+                                             } else { 
2770
+                                                 let nmbmsg = crefnb - 1;
2771
+                                                 $("#loadMoreMsgsusr").css("display", "block");
2772
+                                             }
2773
+
2774
+                                             let rowMessageArrAddst = [];
2775
+
2776
+                                             for (let q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
2777
+
2778
+                                                  rowMessageArrAddst.push(convDataprn[q]);
2779
+                                             }
2780
+
2781
+			                     let convDataPerNmbradst = rowMessageArrAddst.join("");
2782
+
2783
+                                             let scrlheight = $("#msgListRowCell").height();
2784
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
2785
+
2786
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
2787
+                                         });
2788
+
2789
+
2790
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
2791
+			                 $("#diplNmAllMsg").css("color", "#04957b");
2792
+			                 $(this).css("color", "#04c6a4");
2793
+
2794
+			             });
2795
+
2796
+
2797
+				     // Show the scroll-up arrow
2798
+				     $("#frmMsgLstWrap").scroll(function() {
2799
+					if ($(this).scrollTop() > 900) {
2800
+					      $('#upArrowSmall').fadeIn();
2801
+					} else {
2802
+					      $('#upArrowSmall').fadeOut();
2803
+					}
2804
+				     });
2805
+
2806
+				     $("#upArrowSmall").click(function() {
2807
+					$("#frmMsgLstWrap").animate({scrollTop : 0},400);
2808
+				     });
2809
+
2810
+			  },
2811
+			  error: function() {
2812
+				     showAlert("Error while attempting to get message data from the database!");
2813
+				     $('#listAllMsgsConv').removeClass('icon-loading');
2814
+			  }
2815
+		   });
2816
+
2817
+                }
2818
+
2819
+                $('[id^="showMsgConv-"]').click(function() {
2820
+
2821
+                   let ctrwnmbr = $(this).attr("id").replace("showMsgConv-", "");
2822
+                   let phNumberFrom = $("#frmNmbr-"+ ctrwnmbr).text().split(": ")[1];
2823
+                   let phNumberTo = $("#toNmbr-"+ ctrwnmbr).text();
2824
+
2825
+                   showSentMsgPerConv(phNumberFrom, phNumberTo);
2826
+                });
2827
+
2828
+
2829
+                // Show the pop-up window that lists all the messages sent/received to/from a phone number
2830
+                function showMsgPerNmbr(clckPhNumber) {
2831
+
2832
+                   var allfrmtomsg = "<div id='listAllMsgsFromTo'>";
2833
+                   allfrmtomsg += "<div id='draglstMsgmWindow'><img src='/apps/sms_relentless/img/dots.svg'></div>";
2834
+                   allfrmtomsg += "<a id='closeFrmMsgWindow' title='Close this window'></a>";
2835
+                   allfrmtomsg += "<div class='showByNmbrTitle'>Messages sent/received to/from  <span style='color:#04957b'>"+ clckPhNumber +"</span></div>";
2836
+                   allfrmtomsg += "<div id='frmMsgLstWrap'>";
2837
+                   allfrmtomsg += "<table id='frmMsgLstTbl'>";
2838
+                   allfrmtomsg += "<tr class='groupedrowsbody'><td><div id='grpdbynamelst' class='groupedLstNamespn'></div></td><td><div id='loadMoreMsgs' title='Click to load older messages.'>Load more messages</div><div id='loadMoreMsgsusr' title='Click to load older messages.'>Load more messages</div><div id='msgListRowCell' class='groupedLstMsgspn'></div><div id='arrowupWrap'><div id='upArrowSmall' title='Scroll to the top'></div></div></td></tr>";
2839
+                   allfrmtomsg += "</table></div>";
2840
+                   allfrmtomsg += "<div id='sendMsgReply'><table id='sendMsgConv'><tr><td><div id='fromPhoneNmbrConv'>From: <select id='selectFromNbConv'></select></div><div id='toPhoneNmbrConv'>To: <span id='toNmbrConv' style='color:#04957b'>"+ clckPhNumber +"</span></div></td></tr>";
2841
+                   allfrmtomsg += "<tr><td><textarea id='sendMsgConvText' placeholder='Enter a message here, then press Send SMS'></textarea></td></tr></table>";
2842
+                   allfrmtomsg += "<div id='sendMsgConvBtn'>Send SMS</div></div>";
2843
+                   allfrmtomsg += "<div style='display:block;width:100%;height:14px;'><img id='expandWindowRpl' src='/apps/sms_relentless/img/arrowDown.svg' title='Expand to send a message'></div>";
2844
+                   allfrmtomsg += "<div id='draglstMsgmWindowsc'><img src='/apps/sms_relentless/img/dots.svg' style='padding:4px;vertical-align:top;'></div>";
2845
+                   allfrmtomsg += "</div>";
2846
+
2847
+                   $("#content").append("<div id='recTblOverlay'></div>");
2848
+                   $("#content").append(allfrmtomsg);
2849
+
2850
+                   var topDist = parseInt((window.innerHeight / 2).toFixed(2) - 340) +"px";
2851
+                   var leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 300) +"px";
2852
+                   $("#listAllMsgsFromTo").css({ "top" : topDist, "left" : leftDist });
2853
+
2854
+                   $("#closeFrmMsgWindow").click(function() { $("#listAllMsgsFromTo").remove(); $("#recTblOverlay").remove(); });
2855
+                   $("#recTblOverlay").click(function() { $("#listAllMsgsFromTo").remove(); $("#recTblOverlay").remove(); });
2856
+
2857
+
2858
+	           // Expand the window when clicking on the arrow, to be able to send a reply message
2859
+	           $("#expandWindowRpl").click(function() {
2860
+
2861
+	              if ($(this).attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
2862
+                          $("#sendMsgReply").css("display", "block");
2863
+                          $("#listAllMsgsFromTo").css("height", "618px");
2864
+	                  $(this).attr('src', '/apps/sms_relentless/img/arrowUp.svg');
2865
+                          $(this).attr('title', 'Collapse');
2866
+	              } else {
2867
+                          $("#sendMsgReply").css("display", "none");
2868
+                          $("#listAllMsgsFromTo").css("height", "490px");
2869
+                          $(this).attr('src', '/apps/sms_relentless/img/arrowDown.svg');
2870
+                          $(this).attr('title', 'Expand to send a reply');
2871
+	              }
2872
+	           });
2873
+
2874
+                   // Send a message from the 'conversation' window
2875
+                   $("#sendMsgConvBtn").click(function() {
2876
+
2877
+                      $("#sendMsgConv,#sendMsgConvBtn").addClass('icon-loading');
2878
+                      var msgToSend = $("#sendMsgConvText").val();
2879
+                      var selectedid = $("#selectFromNbConv").val();
2880
+                      var toNumber = $("#toNmbrConv").text();
2881
+                      var receiversNumbers = [toNumber];
2882
+
2883
+		      if (selectedid != '') {
2884
+
2885
+			  var sendersplit = selectedid.split(":");
2886
+			  var providercap = sendersplit[0];
2887
+			  var provsec = sendersplit[1];
2888
+
2889
+			  if (/[a-zA-Z]/.test(provsec)) {
2890
+			      var alphanumcheck = true;
2891
+			  } else { var alphanumcheck = false; }
2892
+
2893
+			  if (providercap == 'Tx' && alphanumcheck == false) {  
2894
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2895
+			      var selectedsender = "+" + senderproc;
2896
+			      var providerUsed = "telnyx";
2897
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
2898
+			  } else if (providercap == 'Pl' && alphanumcheck == false) {
2899
+			      var selectedsender = selectedid.replace(/[^0-9]/g, "");
2900
+			      var providerUsed = "plivo";
2901
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
2902
+			  } else if (providercap == 'Tw' && alphanumcheck == false) {  
2903
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2904
+			      var selectedsender = "+" + senderproc;
2905
+			      var providerUsed = "twilio";
2906
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
2907
+			  } else if (providercap == 'Fl' && alphanumcheck == false) {  
2908
+			      var senderproc = selectedid.replace(/[^0-9]/g, "");
2909
+			      var selectedsender = "+" + senderproc;
2910
+			      var providerUsed = "flowroute";
2911
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
2912
+			  } else if (providercap == 'Tx' && alphanumcheck == true) {
2913
+			      var selectedsender = provsec;
2914
+			      var providerUsed = "telnyx";
2915
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstel");
2916
+			  } else if (providercap == 'Pl' && alphanumcheck == true) {
2917
+			      var selectedsender = provsec;
2918
+			      var providerUsed = "plivo";
2919
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsnex");
2920
+			  } else if (providercap == 'Tw' && alphanumcheck == true) {
2921
+			      var selectedsender = provsec;
2922
+			      var providerUsed = "twilio";
2923
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmstwil");
2924
+			  } else if (providercap == 'Fl' && alphanumcheck == true) {
2925
+			      var selectedsender = provsec;
2926
+			      var providerUsed = "flowroute";
2927
+			      var relbaseUrl = OC.generateUrl("/apps/sms_relentless/user/sendsmsflow");
2928
+			  }
2929
+
2930
+                          var uploadedtomms = [];
2931
+
2932
+	                  if (msgToSend != '') {
2933
+
2934
+				  $.ajax({
2935
+				     url: relbaseUrl + '/' + userid,
2936
+				     type: "POST",
2937
+				     data: {
2938
+				           receiversPhoneNbs: receiversNumbers,
2939
+				           fromsender: selectedsender,
2940
+				           waitinterval: 1000,
2941
+				           sentsmstext: msgToSend,
2942
+				           ismms: 0,
2943
+				           mmsfiles: uploadedtomms
2944
+				         },
2945
+				     success: function(displayname) {
2946
+
2947
+                                           var tzdate = new Date();
2948
+                                           var presDatest = new Date(tzdate.getTime() - (tzdate.getTimezoneOffset() * 60000)).toJSON();
2949
+                                           var presDatedb = presDatest.split(".")[0];
2950
+                                           var presDatesc = presDatedb.split("T");
2951
+                                           var presDate = presDatesc[0] +" "+ presDatesc[1];
2952
+                                           var sentMessageStatus = '';
2953
+
2954
+                                           if (displayname) {
2955
+                                               var msgToSendproc = "<span class='msgAuthorNameGrp'>"+ displayname + ":</span>" + msgToSend; 
2956
+                                           } else { var msgToSendproc = ''; }
2957
+
2958
+                                           $("#msgListRowCell").append("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ selectedsender +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ receiversNumbers[0] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ msgToSendproc +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ presDate +"</div><div class='sentMssgStatus'>"+ sentMessageStatus +"</div></div>");
2959
+
2960
+                                           // Scroll down to the bottom of the window
2961
+                                           $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
2962
+
2963
+                                           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2964
+				     },
2965
+				     error: function() {
2966
+				           showAlert("Error while sending the message. You can check your Nextcloud log to find out more about this issue.");
2967
+				           $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2968
+				     }
2969
+				  });
2970
+			  } else {
2971
+				  showAlert("Please enter a message in the text box!");
2972
+				  $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2973
+			  }
2974
+		      } else {
2975
+			      showAlert("Please choose a Sender ID from the 'From' drop-down list!");
2976
+			      $("#sendMsgConv,#sendMsgConvBtn").removeClass('icon-loading');
2977
+		      }
2978
+
2979
+                   });
2980
+
2981
+
2982
+	           // Make the window draggable
2983
+	           function makeMgrWndDraggable(e) {
2984
+
2985
+			   window.pmdragging = {};
2986
+			   pmdragging.pageX0 = e.pageX;
2987
+			   pmdragging.pageY0 = e.pageY;
2988
+			   pmdragging.elem = $("#listAllMsgsFromTo");
2989
+			   pmdragging.offset0 = $("#listAllMsgsFromTo").offset();
2990
+
2991
+			   function handle_dragging(e) {
2992
+			       var left = pmdragging.offset0.left + (e.pageX - pmdragging.pageX0);
2993
+			       var top = pmdragging.offset0.top + (e.pageY - pmdragging.pageY0);
2994
+			       $(pmdragging.elem).offset({top: top, left: left});
2995
+			   }
2996
+
2997
+			   function handle_mouseup(e) {
2998
+			       $('body').off('mousemove', handle_dragging).off('mouseup', handle_mouseup);
2999
+			   }
3000
+
3001
+			   $('body').on('mouseup', handle_mouseup).on('mousemove', handle_dragging);
3002
+	           }
3003
+	           $("#draglstMsgmWindow").mousedown(makeMgrWndDraggable);
3004
+	           $("#draglstMsgmWindowsc").mousedown(makeMgrWndDraggable);
3005
+
3006
+
3007
+                   // Append the available phone numbers to the From drop-down list
3008
+                   var availPhoneNmbrs = [];
3009
+                   $("#currentsmsnmbrs .optselectsmsnb").each(function() {
3010
+                      var crtphnmbr = $(this).attr("value");
3011
+                      if (crtphnmbr != "") { availPhoneNmbrs.push(crtphnmbr); }
3012
+                   });
3013
+
3014
+                   if (availPhoneNmbrs.length > 0) {
3015
+                       var avphopt = "";
3016
+                       for (let d = 0; d < availPhoneNmbrs.length; d++) {
3017
+                            avphopt += "<option value='"+ availPhoneNmbrs[d] +"'>"+ availPhoneNmbrs[d] +"</option>";
3018
+                       }
3019
+                       $("#selectFromNbConv").append(avphopt);
3020
+
3021
+                   } else { $("#selectFromNbConv").append("<option value='' selected>No IDs</option>"); }
3022
+
3023
+
3024
+                   // Get the sent/received messages for the current phone number, from the database
3025
+		   var getGroupedPnUrl = OC.generateUrl("/apps/sms_relentless/user/getgroupedpernumber");
3026
+
3027
+		   $('#listAllMsgsFromTo').addClass('icon-loading');
3028
+		   var totalPhNmbrs = 0;
3029
+
3030
+		   $.ajax({
3031
+			  method: 'POST',
3032
+			  url: getGroupedPnUrl + '/' + userid,
3033
+			  contentType: 'application/json',
3034
+                          data: JSON.stringify({ phoneNumber: clckPhNumber }),
3035
+			  success: function(groupedpernb) {
3036
+
3037
+				     $('#listAllMsgsFromTo').removeClass('icon-loading');
3038
+
3039
+				     var fromtoNmbrsData = [];
3040
+
3041
+				     for (var i = 0; i < groupedpernb.length; i++) {
3042
+
3043
+					     if (groupedpernb[i].author_displayname) {
3044
+						 var authordnm = groupedpernb[i].author_displayname;
3045
+					     } else { 
3046
+						 var authordnm = '';
3047
+					     }
3048
+
3049
+					     var sentfromnmbrarr = groupedpernb[i].from.split("+");
3050
+				             if (sentfromnmbrarr[1]) {
3051
+						 var groupednbfrom = "+"+ sentfromnmbrarr[1];
3052
+				             } else {
3053
+						 var groupednbfrom = sentfromnmbrarr[0];
3054
+				             }
3055
+
3056
+				             var modmessagesent = '';
3057
+				             if (groupedpernb[i].author_displayname) {
3058
+						 modmessagesent = "<span class='msgAuthorNameGrp'>"+ groupedpernb[i].author_displayname + ":</span>" + groupedpernb[i].message;
3059
+				             } else {
3060
+			                         modmessagesent = groupedpernb[i].message;
3061
+                                             }
3062
+
3063
+				             if (groupedpernb[i].to.indexOf(": ") > -1) {
3064
+				                 var groupednmbrtopre = groupedpernb[i].to.split(": ");
3065
+				                 var groupednmbrto = groupednmbrtopre[1];
3066
+				             } else { 
3067
+				                 var groupednmbrto = groupedpernb[i].to;
3068
+				             }
3069
+
3070
+				             fromtoNmbrsData.push({
3071
+				                       'author_displayname': authordnm,
3072
+				                       'from': groupednbfrom,
3073
+				                       'to': groupednmbrto,
3074
+				                       'message': modmessagesent,
3075
+				                       'date': groupedpernb[i].date,
3076
+				                       'status': groupedpernb[i].deliveryreceipt,
3077
+				                       'table': groupedpernb[i].table
3078
+				             });
3079
+				     }
3080
+
3081
+
3082
+				     // Remove the duplicates
3083
+				     var noDupMsgData = [];
3084
+				     $.each(fromtoNmbrsData, function(i, e) {
3085
+					    var matchingData = $.grep(noDupMsgData, function(item) {
3086
+				                    return item.from == e.from && item.to == e.to && item.message == e.message && item.table == 'received' && e.table == 'sent';
3087
+					    });
3088
+					    if (matchingData.length === 0) {
3089
+						noDupMsgData.push(e);
3090
+					    }
3091
+				     });
3092
+
3093
+				     var messagesPerNmbr = {};
3094
+				     var msgsNamesPerNmbr = {};
3095
+				     var msgsNmbrsNames = {};
3096
+
3097
+			             var displayNamesarr = [];
3098
+			             var convData = [];
3099
+
3100
+			             for (var n = 0; n < noDupMsgData.length; n++) {
3101
+
3102
+			                  if (noDupMsgData[n]['from'] == clckPhNumber && noDupMsgData[n]['table'] == 'sent') {
3103
+
3104
+			                      convData.push({
3105
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
3106
+			                                     'message': noDupMsgData[n]['message'],
3107
+			                                     'from': noDupMsgData[n]['from'],
3108
+			                                     'to': noDupMsgData[n]['to'],
3109
+			                                     'date': noDupMsgData[n]['date'],
3110
+			                                     'direction': 'sent_from',
3111
+			                                     'status': noDupMsgData[n]['status'],
3112
+			                                     'table': noDupMsgData[n]['table']
3113
+			                      });
3114
+
3115
+			                  } else if (noDupMsgData[n]['to'] == clckPhNumber && noDupMsgData[n]['table'] == 'sent') {
3116
+
3117
+			                      convData.push({
3118
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
3119
+			                                     'message': noDupMsgData[n]['message'],
3120
+			                                     'from': noDupMsgData[n]['from'],
3121
+			                                     'to': noDupMsgData[n]['to'],
3122
+			                                     'date': noDupMsgData[n]['date'],
3123
+			                                     'direction': 'sent_to',
3124
+			                                     'status': noDupMsgData[n]['status'],
3125
+			                                     'table': noDupMsgData[n]['table']
3126
+			                      });
3127
+
3128
+
3129
+			                  } else if (noDupMsgData[n]['from'] == clckPhNumber && noDupMsgData[n]['table'] == 'received') {
3130
+
3131
+			                      convData.push({
3132
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
3133
+			                                     'message': noDupMsgData[n]['message'],
3134
+			                                     'from': noDupMsgData[n]['from'],
3135
+			                                     'to': noDupMsgData[n]['to'],
3136
+			                                     'date': noDupMsgData[n]['date'],
3137
+			                                     'direction': 'received_from',
3138
+			                                     'status': noDupMsgData[n]['status'],
3139
+			                                     'table': noDupMsgData[n]['table']
3140
+			                      });
3141
+
3142
+			                  } else if (noDupMsgData[n]['to'] == clckPhNumber && noDupMsgData[n]['table'] == 'received') {
3143
+
3144
+			                      convData.push({
3145
+			                                     'author_displayname': noDupMsgData[n]['author_displayname'],
3146
+			                                     'message': noDupMsgData[n]['message'],
3147
+			                                     'from': noDupMsgData[n]['from'],
3148
+			                                     'to': noDupMsgData[n]['to'],
3149
+			                                     'date': noDupMsgData[n]['date'],
3150
+			                                     'direction': 'received_on',
3151
+			                                     'status': noDupMsgData[n]['status'],
3152
+			                                     'table': noDupMsgData[n]['table']
3153
+			                      });
3154
+			                  }
3155
+			             }
3156
+
3157
+			             // Sort messages by date
3158
+				     convData.sort(function(a, b) {
3159
+					var c = new Date(a.date);
3160
+					var d = new Date(b.date);
3161
+					return c-d;
3162
+				     });
3163
+                                     convData.reverse();
3164
+
3165
+			             // Collect the display names of the users that sent messages from the current number
3166
+			             var selectedNames = [];
3167
+			             var displayNames = '';
3168
+			             for (var v = 0; v < convData.length; v++) {
3169
+			                  if (selectedNames.indexOf(convData[v]['author_displayname']) == -1) { 
3170
+			                      selectedNames.push(convData[v]['author_displayname']);
3171
+			                      displayNames += "<div id='diplNm_"+ clckPhNumber +"_"+ v +"' class='dispNameList' name='"+ convData[v]['author_displayname'] +"'>"+ convData[v]['author_displayname'] +"</div>";
3172
+			                  }
3173
+			             }
3174
+			             displayNames += "<div id='diplNmAllMsg' class='dispNameListAll' title='Show all the messages for this number.'>"+ clckPhNumber +"</div>";
3175
+
3176
+			             // Store the display names for the current number, to be able to see them later
3177
+			             var ctPhNumber = clckPhNumber;
3178
+			             msgsNamesPerNmbr[ctPhNumber] = displayNames;
3179
+
3180
+			             // Store the messages sent by each user, to be able to see them later when clicking on the user's name
3181
+			             for (var h = 0; h < selectedNames.length; h++) {
3182
+
3183
+			                  var rowMessageArrpn = [];
3184
+			                  for (var b = 0; b < convData.length; b++) {
3185
+
3186
+			                       if (selectedNames[h] == convData[b]['author_displayname']) {
3187
+
3188
+					           if (convData[b]['direction'] == 'sent_from') {
3189
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
3190
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3191
+					               } else {
3192
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3193
+					               }
3194
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3195
+					           } else if (convData[b]['direction'] == 'sent_to') {
3196
+					               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
3197
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3198
+					               } else {
3199
+					                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3200
+					               }
3201
+					               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3202
+					           } else if (convData[b]['direction'] == 'received_from') {
3203
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
3204
+					           } else if (convData[b]['direction'] == 'received_on') {
3205
+					               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
3206
+			                           }
3207
+			                       }
3208
+			                  }
3209
+			                  var crtNmber = clckPhNumber;
3210
+			                  var crtName = selectedNames[h];
3211
+			                  msgsNmbrsNames[crtNmber] = msgsNmbrsNames[crtNmber] || {};
3212
+                                          msgsNmbrsNames[crtNmber][crtName] = rowMessageArrpn;
3213
+			             }
3214
+
3215
+                                     // The number of messages to be loaded by default
3216
+                                     var nmbTblDefault = 50;
3217
+
3218
+                                     // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
3219
+                                     if (convData.length > nmbTblDefault) {
3220
+                                         $("#loadMoreMsgs").css("display", "block");
3221
+                                         var nmbToBeLoaded = nmbTblDefault;
3222
+                                     } else { var nmbToBeLoaded = convData.length; }
3223
+
3224
+			             var rowMessageArr = [];
3225
+			             for (var m = nmbToBeLoaded - 1; m >= 0; m--) {
3226
+
3227
+			                  if (convData[m]['direction'] == 'sent_from') {
3228
+
3229
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3230
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3231
+			                      } else {
3232
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3233
+			                      }
3234
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3235
+
3236
+			                  } else if (convData[m]['direction'] == 'sent_to') {
3237
+
3238
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3239
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3240
+			                      } else {
3241
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3242
+			                      }
3243
+			                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3244
+
3245
+			                  } else if (convData[m]['direction'] == 'received_from') {
3246
+
3247
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3248
+
3249
+			                  } else if (convData[m]['direction'] == 'received_on') {
3250
+
3251
+					      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3252
+			                  }
3253
+			             }
3254
+
3255
+			             var convDataPerNmbr = rowMessageArr.join("");
3256
+
3257
+                                     $("#grpdbynamelst").append(displayNames);
3258
+                                     $("#msgListRowCell").append(convDataPerNmbr);
3259
+
3260
+			             // Store the messages for the current number, to be able to see them later, when clicking on the number
3261
+			             var rowMessageArrcpt = [];
3262
+			             for (var m = 0; m < convData.length; m++) {
3263
+
3264
+			                  if (convData[m]['direction'] == 'sent_from') {
3265
+
3266
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3267
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3268
+			                      } else {
3269
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3270
+			                      }
3271
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3272
+
3273
+			                  } else if (convData[m]['direction'] == 'sent_to') {
3274
+
3275
+			                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3276
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3277
+			                      } else {
3278
+			                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3279
+			                      }
3280
+			                      rowMessageArrcpt.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3281
+
3282
+			                  } else if (convData[m]['direction'] == 'received_from') {
3283
+
3284
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3285
+
3286
+			                  } else if (convData[m]['direction'] == 'received_on') {
3287
+
3288
+					      rowMessageArrcpt.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3289
+			                  }
3290
+			             }
3291
+
3292
+			             messagesPerNmbr[clckPhNumber] = rowMessageArrcpt;
3293
+
3294
+                                     // Scroll down to the bottom of the window
3295
+                                     $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
3296
+
3297
+                                     // Load more messages
3298
+                                     var clickNmb = 0;
3299
+                                     $("#loadMoreMsgs").click(function() {
3300
+
3301
+                                         clickNmb++;
3302
+
3303
+                                         var crefnb = (clickNmb + 1) * nmbToBeLoaded;
3304
+
3305
+                                         if (crefnb > convData.length) {
3306
+                                             var nmbmsg = convData.length - 1;
3307
+                                             $("#loadMoreMsgs").css("display", "none");
3308
+                                         } else { 
3309
+                                             var nmbmsg = crefnb - 1;
3310
+                                         }
3311
+
3312
+                                         var rowMessageArrAdd = [];
3313
+
3314
+                                         for (var m = nmbmsg; m >= clickNmb * nmbToBeLoaded; m--) {
3315
+
3316
+			                      if (convData[m]['direction'] == 'sent_from') {
3317
+
3318
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3319
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3320
+			                          } else {
3321
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3322
+			                          }
3323
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3324
+
3325
+			                      } else if (convData[m]['direction'] == 'sent_to') {
3326
+
3327
+			                          if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
3328
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
3329
+			                          } else {
3330
+			                              var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
3331
+			                          }
3332
+			                          rowMessageArrAdd.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
3333
+
3334
+			                      } else if (convData[m]['direction'] == 'received_from') {
3335
+
3336
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3337
+
3338
+			                      } else if (convData[m]['direction'] == 'received_on') {
3339
+
3340
+					          rowMessageArrAdd.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
3341
+			                      }
3342
+                                         }
3343
+
3344
+			                 var convDataPerNmbrad = rowMessageArrAdd.join("");
3345
+
3346
+                                         var scrlheight = $("#msgListRowCell").height();
3347
+                                         $("#msgListRowCell").prepend(convDataPerNmbrad);
3348
+
3349
+                                         $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
3350
+                                     });
3351
+
3352
+
3353
+			             // Show the messages sent by each user whose name is clicked
3354
+			             $('[id*="diplNm_"]').click(function() {
3355
+
3356
+			                 var crntNmbr = $(this).attr("id").split("_")[1];
3357
+			                 var crntDisName = $(this).attr("name");                               
3358
+                                         $("#loadMoreMsgs").css("display", "none");
3359
+
3360
+                                         var convDataprn = [];
3361
+                                         $.each(msgsNmbrsNames[crntNmbr][crntDisName], function(index, item) {
3362
+                                                convDataprn.push(item);
3363
+                                         });
3364
+
3365
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
3366
+                                         if (convDataprn.length > nmbTblDefault) {
3367
+                                             $("#loadMoreMsgsusr").css("display", "block");
3368
+                                             var nmbToBeLoaded = nmbTblDefault;
3369
+                                         } else {
3370
+                                             $("#loadMoreMsgsusr").css("display", "none");
3371
+                                             var nmbToBeLoaded = convDataprn.length;
3372
+                                         }
3373
+
3374
+
3375
+			                 var rowMessageArrprnst = [];
3376
+
3377
+			                 for (var n = nmbToBeLoaded - 1; n >= 0; n--) {
3378
+                                              rowMessageArrprnst.push(convDataprn[n]);
3379
+			                 }
3380
+
3381
+			                 var convDataPerNmbrprnst = rowMessageArrprnst.join("");
3382
+
3383
+                                         $("#msgListRowCell").empty();
3384
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
3385
+
3386
+                                         // Scroll down to the bottom of the window
3387
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
3388
+
3389
+                                         // Load more messages
3390
+                                         var clckNb = 0;
3391
+                                         $("#loadMoreMsgsusr").unbind("click");
3392
+                                         $("#loadMoreMsgsusr").click(function() {
3393
+
3394
+                                             clckNb++;
3395
+                                             var crefnb = (clckNb + 1) * nmbToBeLoaded;
3396
+
3397
+                                             $("#loadMoreMsgs").css("display", "none");
3398
+
3399
+                                             if (crefnb > convDataprn.length) {
3400
+                                                 var nmbmsg = convDataprn.length - 1;
3401
+                                                 $("#loadMoreMsgsusr").css("display", "none");
3402
+                                             } else { 
3403
+                                                 var nmbmsg = crefnb - 1;
3404
+                                                 $("#loadMoreMsgsusr").css("display", "block");
3405
+                                             }
3406
+
3407
+                                             var rowMessageArrAddst = [];
3408
+
3409
+                                             for (var q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
3410
+
3411
+                                                  rowMessageArrAddst.push(convDataprn[q]);
3412
+                                             }
3413
+
3414
+			                     var convDataPerNmbradst = rowMessageArrAddst.join("");
3415
+
3416
+                                             var scrlheight = $("#msgListRowCell").height();
3417
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
3418
+
3419
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
3420
+                                         });
3421
+
3422
+
3423
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
3424
+			                 $("#diplNmAllMsg").css("color", "#04957b");
3425
+			                 $(this).css("color", "#1b8efe");
3426
+			             });
3427
+
3428
+
3429
+			             // Show again all the messages sent/received to/from the clicked number
3430
+			             $("#diplNmAllMsg").click(function() {
3431
+
3432
+                                         $("#loadMoreMsgsusr").css("display", "none");
3433
+
3434
+                                         var convDataprn = [];
3435
+                                         $.each(messagesPerNmbr[clckPhNumber], function(index, item) {
3436
+                                                convDataprn.push(item);
3437
+                                         });
3438
+
3439
+                                         // If the total number of messages is greater than the default number of messages to display, show the 'Load more messages' button
3440
+                                         if (convDataprn.length > nmbTblDefault) {
3441
+                                             $("#loadMoreMsgs").css("display", "block");
3442
+                                             var nmbToBeLoaded = nmbTblDefault;
3443
+                                         } else {
3444
+                                             $("#loadMoreMsgs").css("display", "none");
3445
+                                             var nmbToBeLoaded = convDataprn.length;
3446
+                                         }
3447
+
3448
+
3449
+			                 var rowMessageArrprnst = [];
3450
+
3451
+			                 for (var n = nmbToBeLoaded - 1; n >= 0; n--) {
3452
+                                              rowMessageArrprnst.push(convDataprn[n]);
3453
+			                 }
3454
+
3455
+			                 var convDataPerNmbrprnst = rowMessageArrprnst.join("");
3456
+
3457
+                                         $("#msgListRowCell").empty();
3458
+                                         $("#msgListRowCell").append(convDataPerNmbrprnst);
3459
+
3460
+                                         // Scroll down to the bottom of the window
3461
+                                         $("#frmMsgLstWrap").animate({scrollTop:$("#frmMsgLstTbl").prop("scrollHeight")},200);
3462
+
3463
+
3464
+                                         // Load more messages
3465
+                                         var clckNb = 0;
3466
+                                         $("#loadMoreMsgsusr").unbind("click");
3467
+                                         $("#loadMoreMsgsusr").click(function() {
3468
+
3469
+                                             clckNb++;
3470
+                                             var crefnb = (clckNb + 1) * nmbToBeLoaded;
3471
+
3472
+                                             $("#loadMoreMsgs").css("display", "none");
3473
+
3474
+                                             if (crefnb > convDataprn.length) {
3475
+                                                 var nmbmsg = convDataprn.length - 1;
3476
+                                                 $("#loadMoreMsgsusr").css("display", "none");
3477
+                                             } else { 
3478
+                                                 var nmbmsg = crefnb - 1;
3479
+                                                 $("#loadMoreMsgsusr").css("display", "block");
3480
+                                             }
3481
+
3482
+                                             var rowMessageArrAddst = [];
3483
+
3484
+                                             for (var q = nmbmsg; q >= clckNb * nmbToBeLoaded; q--) {
3485
+
3486
+                                                  rowMessageArrAddst.push(convDataprn[q]);
3487
+                                             }
3488
+
3489
+			                     var convDataPerNmbradst = rowMessageArrAddst.join("");
3490
+
3491
+                                             var scrlheight = $("#msgListRowCell").height();
3492
+                                             $("#msgListRowCell").prepend(convDataPerNmbradst);
3493
+
3494
+                                             $("#frmMsgLstWrap").scrollTop($("#msgListRowCell").height() - scrlheight);
3495
+                                         });
3496
+
3497
+
3498
+			                 $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
3499
+			                 $("#diplNmAllMsg").css("color", "#04957b");
3500
+			                 $(this).css("color", "#04c6a4");
3501
+
3502
+			             });
3503
+
3504
+
3505
+				     // Show the scroll-up arrow
3506
+				     $("#frmMsgLstWrap").scroll(function() {
3507
+					if ($(this).scrollTop() > 900) {
3508
+					      $('#upArrowSmall').fadeIn();
3509
+					} else {
3510
+					      $('#upArrowSmall').fadeOut();
3511
+					}
3512
+				     });
3513
+
3514
+				     $("#upArrowSmall").click(function() {
3515
+					$("#frmMsgLstWrap").animate({scrollTop : 0},400);
3516
+				     });
3517
+
3518
+			  },
3519
+			  error: function() {
3520
+				     showAlert("Error while attempting to get message data from the database!");
3521
+				     $('#listAllMsgsFromTo').removeClass('icon-loading');
3522
+			  }
3523
+		   });
3524
+                }
3525
+
3526
+
3527
+                $('[id^="showMsgFrom-"]').click(function() {
3528
+
3529
+                   var ctrwnb = $(this).attr("id").replace("showMsgFrom-", "");
3530
+                   if ($("#frmNmbr-"+ ctrwnb).text().indexOf(":") > -1) {
3531
+                       var clckPhNumber = $("#frmNmbr-"+ ctrwnb).text().split(": ")[1];
3532
+                   } else { var clckPhNumber = $("#frmNmbr-"+ ctrwnb).text(); }
3533
+
3534
+                   showMsgPerNmbr(clckPhNumber);
3535
+                })
3536
+
3537
+                $('[id^="showMsgTo-"]').click(function() {
3538
+                   var ctrwnbTo = $(this).attr("id").replace("showMsgTo-", "");
3539
+                   var clckPhNbTo = $("#toNmbr-"+ ctrwnbTo).text();
3540
+
3541
+                   showMsgPerNmbr(clckPhNbTo);
3542
+                })
3543
+
3544
+
3545
+                // Add pagination
3546
+                var rowsShown = messagesperpage;
3547
+                var rowsTotal = $("#sentSmsTable tr").length;
3548
+                var numPages = (rowsTotal - 2) / rowsShown;
3549
+
3550
+                for (i = 0; i < numPages; i++) {
3551
+                     var pageNum = i + 1;
3552
+                     $('#paginationsent').append('<a href="#" rel="' + i + '" class="pagenumbers">' + pageNum + '</a> ');
3553
+                }
3554
+
3555
+                $('#paginationsent').children(":first").addClass('active');
3556
+
3557
+                $('#paginationsent a:first').addClass('active');
3558
+
3559
+                // Show table page when clicking on page number
3560
+                $('.pages a').bind('click', function () {
3561
+
3562
+                      $('#paginationsent').children().removeClass('active');
3563
+
3564
+                      $(this).addClass('active');
3565
+
3566
+                      var currentsentPgNo = $(this).text();
3567
+
3568
+                      $('#paginationsent a').each(function() {
3569
+                         if ($(this).text() == currentsentPgNo) {
3570
+                             $(this).addClass('active');
3571
+                         }
3572
+                      });
3573
+
3574
+                      // Sort table rows
3575
+		      var rows = $('#sentSmsTable tr').get();
3576
+
3577
+		      rows.sort(function(a, b) {
3578
+
3579
+		           var A = parseInt($('td.sentdbidcolumn', a).text());
3580
+		           var B = parseInt($('td.sentdbidcolumn', b).text());
3581
+
3582
+		           if (A < B) {
3583
+		               return -1;
3584
+		           }
3585
+
3586
+		           if (A > B) {
3587
+		               return 1;
3588
+		           }
3589
+
3590
+		           return 0;
3591
+		      });
3592
+
3593
+		      $.each(rows, function(index, row) {
3594
+		         $('#sentSmsTable').append(row);
3595
+		      });
3596
+
3597
+                      var currPage = $(this).attr('rel');
3598
+                      var startItem = currPage * rowsShown;
3599
+                      var endItem = startItem + rowsShown;
3600
+
3601
+                      $('.sentrowsbody').hide().slice(startItem, endItem).css('display', 'table-row');
3602
+
3603
+                      $('#totalsentmessages').remove();
3604
+                      $('#smstables').append("<div id='totalsentmessages'>Total displayed messages: " + sentparseddata.length + "</div>");
3605
+                });
3606
+
3607
+                $('#paginationsent').children(":last").trigger('click');
3608
+
3609
+                // Select all records
3610
+                $('#selectAllChckbx').change(function() {
3611
+                   if ($(this).is(':checked')) {
3612
+                       $(".indivchckbx").prop("checked", true);
3613
+                   } else {
3614
+                       $(".indivchckbx").prop("checked", false);
3615
+                   }
3616
+                });
3617
+
3618
+                function reorderSentRows() {
3619
+                    var currenttext = $(".filterbuttonsent").closest('[class="filterbuttonsent"]').find('[class="indivfiltersent"]').text();
3620
+                    if (currenttext == '') {
3621
+                        $('tr').sort(function (a, b) {
3622
+                           return parseInt($('td.sentdbidcolumn', b).text()) < parseInt($('td.sentdbidcolumn', a).text());
3623
+                        }).appendTo("#sentSmsTable");
3624
+                    }
3625
+                }
3626
+
3627
+                // Filter rows
3628
+                $("#databaseidfilter").on("click", function(event) {
3629
+
3630
+                       var databaseId = $("#dbidtextsent").val();
3631
+                       var msgrowsNo = 0;
3632
+
3633
+                       $(".sentrowsbody").each(function() {
3634
+
3635
+                          var checkEmpty = 0;
3636
+                          $(".indivfiltersent").not("#dbidtextsent").each(function() {
3637
+                              if ($(this).val() != '') {
3638
+                                  checkEmpty = 1;
3639
+                              }
3640
+                          });
3641
+
3642
+                          if (checkEmpty == 0) {
3643
+                              $(this).show();
3644
+                          }
3645
+
3646
+                          if (databaseId != '') {
3647
+                             if ($(this).find('[class="sentdbidcolumn"]').text() == databaseId) {
3648
+                                 $("#sentSmsTable").append(this);
3649
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
3650
+                             } else {
3651
+                                 $(this).hide();
3652
+                             }
3653
+                          } else {
3654
+                                 $(this).show();
3655
+                                 msgrowsNo++;
3656
+                          }
3657
+                       });
3658
+
3659
+                       reorderSentRows();
3660
+                       $('#totalsentmessages').remove();
3661
+                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3662
+                });
3663
+
3664
+                $("#useridfilter").on("click", function(event) {
3665
+
3666
+                       var useridtxt = $("#useridtext").val().toLowerCase();
3667
+                       var msgrowsNo = 0;
3668
+
3669
+                       $(".sentrowsbody").each(function() {
3670
+
3671
+                          var checkEmpty1 = 0;
3672
+                          $(".indivfiltersent").not("#useridtext").each(function() {
3673
+                              if ($(this).val() != '') {
3674
+                                  checkEmpty1 = 1;
3675
+                              }
3676
+                          });
3677
+
3678
+                          if (checkEmpty1 == 0) {
3679
+                              $(this).show();
3680
+                          }
3681
+
3682
+                          if (useridtxt != '') {
3683
+                              var founduserid = $(this).find('[class="useridcolsent"]').text().toLowerCase();
3684
+                              if (founduserid.indexOf(useridtxt) != -1) {
3685
+                                  $("#sentSmsTable").append(this);
3686
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3687
+                             } else {
3688
+                                  $(this).hide();
3689
+                             }
3690
+                          } else {
3691
+                                  $(this).show();
3692
+                                  msgrowsNo++;
3693
+                          }
3694
+                       });
3695
+
3696
+                       reorderSentRows();
3697
+                       $('#totalsentmessages').remove();
3698
+                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3699
+                });
3700
+
3701
+                $("#messageidfilter").on("click", function(event) {
3702
+
3703
+                       var messageidtxt = $("#messageidtext").val().toLowerCase();
3704
+                       var msgrowsNo = 0;
3705
+
3706
+                       $(".sentrowsbody").each(function() {
3707
+
3708
+                          var checkEmpty2 = 0;
3709
+                          $(".indivfiltersent").not("#messageidtext").each(function() {
3710
+                              if ($(this).val() != '') {
3711
+                                  checkEmpty2 = 1;
3712
+                              }
3713
+                          });
3714
+
3715
+                          if (checkEmpty2 == 0) {
3716
+                              $(this).show();
3717
+                          }
3718
+
3719
+                          if (messageidtxt != '') {
3720
+                              var foundtdmssgid = $(this).find('[class="messageidcolsent"]').text().toLowerCase();
3721
+                              if (foundtdmssgid.indexOf(messageidtxt) != -1) {
3722
+                                  $("#sentSmsTable").append(this);
3723
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3724
+                              } else {
3725
+                                  $(this).hide();
3726
+                              }
3727
+                          } else {
3728
+                                  $(this).show();
3729
+                                  msgrowsNo++;
3730
+                          }
3731
+                       });
3732
+
3733
+                       reorderSentRows();
3734
+                       $('#totalsentmessages').remove();
3735
+                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3736
+                });
3737
+
3738
+                $("#datefilter").on("click", function(event) {
3739
+
3740
+                       var datetxtvr = $("#datetext").val().toLowerCase();
3741
+                       var msgrowsNo = 0;
3742
+
3743
+                       $(".sentrowsbody").each(function() {
3744
+
3745
+                          var checkEmpty3 = 0;
3746
+                          $(".indivfiltersent").not("#datetext").each(function() {
3747
+                              if ($(this).val() != '') {
3748
+                                  checkEmpty3 = 1;
3749
+                              }
3750
+                          });
3751
+
3752
+                          if (checkEmpty3 == 0) {
3753
+                              $(this).show();
3754
+                          }
3755
+
3756
+                          if (datetxtvr != '') {
3757
+                             var founddate = $(this).find('[class="datecolsent"]').text().toLowerCase();
3758
+                             if (founddate.indexOf(datetxtvr) != -1) {
3759
+                                 $("#sentSmsTable").append(this);
3760
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
3761
+                             } else {
3762
+                                 $(this).hide();
3763
+                             }
3764
+                          } else {
3765
+                                 $(this).show();
3766
+                                 msgrowsNo++;
3767
+                          }
3768
+                       });
3769
+
3770
+                       reorderSentRows();
3771
+                       $('#totalsentmessages').remove();
3772
+                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3773
+                });
3774
+
3775
+                $("#fromfilter").on("click", function(event) {
3776
+
3777
+                       var fromtxtvr = $("#fromtext").val().toLowerCase();
3778
+                       var msgrowsNo = 0;
3779
+
3780
+                       $(".sentrowsbody").each(function() {
3781
+
3782
+                          var checkEmpty4 = 0;
3783
+                          $(".indivfiltersent").not("#fromtext").each(function() {
3784
+                              if ($(this).val() != '') {
3785
+                                  checkEmpty4 = 1;
3786
+                              }
3787
+                          });
3788
+
3789
+                          if (checkEmpty4 == 0) {
3790
+                              $(this).show();
3791
+                          }
3792
+
3793
+                          if (fromtxtvr != '') {
3794
+                             var foundfrom = $(this).find('[class="fromcolumnsent"]').text().toLowerCase();
3795
+                             if (foundfrom.indexOf(fromtxtvr) != -1) {
3796
+                                 $("#sentSmsTable").append(this);
3797
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
3798
+                             } else {
3799
+                                 $(this).hide();
3800
+                             }
3801
+                          } else {
3802
+                                 $(this).show();
3803
+                                 msgrowsNo++;
3804
+                          }
3805
+                       });
3806
+
3807
+                       reorderSentRows();
3808
+                       $('#totalsentmessages').remove();
3809
+                       $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3810
+                });
3811
+
3812
+                $("#tofilter").on("click", function(event) {
3813
+
3814
+                      var totxtvr = $("#totext").val().toLowerCase();
3815
+                      var msgrowsNo = 0;
3816
+
3817
+                      $(".sentrowsbody").each(function() {
3818
+
3819
+                          var checkEmpty5 = 0;
3820
+                          $(".indivfiltersent").not("#totext").each(function() {
3821
+                              if ($(this).val() != '') {
3822
+                                  checkEmpty5 = 1;
3823
+                              }
3824
+                          });
3825
+
3826
+                          if (checkEmpty5 == 0) {
3827
+                              $(this).show();
3828
+                          }
3829
+
3830
+                          if (totxtvr != '') {
3831
+                             var foundto = $(this).find('[class="tocolumnsent"]').text().toLowerCase();
3832
+                             if (foundto.indexOf(totxtvr) != -1) {
3833
+                                 $("#sentSmsTable").append(this);
3834
+                                 if ($(this).is(":visible")) { msgrowsNo++; }
3835
+                             } else {
3836
+                                 $(this).hide();
3837
+                             }
3838
+                          } else {
3839
+                                 $(this).show();
3840
+                                 msgrowsNo++;
3841
+                          }
3842
+                      });
3843
+
3844
+                      reorderSentRows();
3845
+                      $('#totalsentmessages').remove();
3846
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3847
+                });
3848
+
3849
+                $("#networkfilter").on("click", function(event) {
3850
+
3851
+                      var networktxtvr = $("#networktext").val().toLowerCase();
3852
+                      var msgrowsNo = 0;
3853
+
3854
+                      $(".sentrowsbody").each(function() {
3855
+
3856
+                          var checkEmpty6 = 0;
3857
+                          $(".indivfiltersent").not("#networktext").each(function() {
3858
+                              if ($(this).val() != '') {
3859
+                                  checkEmpty6 = 1;
3860
+                              }
3861
+                          });
3862
+
3863
+                          if (checkEmpty6 == 0) {
3864
+                              $(this).show();
3865
+                          }
3866
+
3867
+                          if (networktxtvr != '') {
3868
+                              var foundnetwork = $(this).find('[class="networkcolumnsent"]').text().toLowerCase();
3869
+                              if (foundnetwork.indexOf(networktxtvr) != -1) {
3870
+                                  $("#sentSmsTable").append(this);
3871
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3872
+                              } else {
3873
+                                  $(this).hide();
3874
+                              }
3875
+                          } else {
3876
+                                  $(this).show();
3877
+                                  msgrowsNo++;
3878
+                          }
3879
+                      });
3880
+
3881
+                      reorderSentRows();
3882
+                      $('#totalsentmessages').remove();
3883
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3884
+                });
3885
+
3886
+                $("#pricefilter").on("click", function(event) {
3887
+
3888
+                      var pricetxtvr = $("#pricetext").val().toLowerCase();
3889
+                      var msgrowsNo = 0;
3890
+
3891
+                      $(".sentrowsbody").each(function() {
3892
+
3893
+                          var checkEmpty7 = 0;
3894
+                          $(".indivfiltersent").not("#pricetext").each(function() {
3895
+                              if ($(this).val() != '') {
3896
+                                  checkEmpty7 = 1;
3897
+                              }
3898
+                          });
3899
+
3900
+                          if (checkEmpty7 == 0) {
3901
+                              $(this).show();
3902
+                          }
3903
+
3904
+                          if (pricetxtvr != '') {
3905
+                              var foundprice = $(this).find('[class="pricecolumnsent"]').text().toLowerCase();
3906
+                              if (foundprice.indexOf(pricetxtvr) != -1) {
3907
+                                  $("#sentSmsTable").append(this);
3908
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3909
+                              } else {
3910
+                                  $(this).hide();
3911
+                              }
3912
+                          } else {
3913
+                                  $(this).show();
3914
+                                  msgrowsNo++;
3915
+                          }
3916
+                      });
3917
+
3918
+                      reorderSentRows();
3919
+                      $('#totalsentmessages').remove();
3920
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3921
+                });
3922
+
3923
+                $("#statusfilter").on("click", function(event) {
3924
+
3925
+                      var statustxtvr = $("#statustext").val().toLowerCase();
3926
+                      var msgrowsNo = 0;
3927
+
3928
+                      $(".sentrowsbody").each(function() {
3929
+
3930
+                          var checkEmpty8 = 0;
3931
+                          $(".indivfiltersent").not("#statustext").each(function() {
3932
+                              if ($(this).val() != '') {
3933
+                                  checkEmpty8 = 1;
3934
+                              }
3935
+                          });
3936
+
3937
+                          if (checkEmpty8 == 0) {
3938
+                              $(this).show();
3939
+                          }
3940
+
3941
+                          if (statustxtvr != '') {
3942
+                              var foundstatus = $(this).find('[class="statuscolumnsent"]').text().toLowerCase();
3943
+                              if (foundstatus.indexOf(statustxtvr) != -1) {
3944
+                                  $("#sentSmsTable").append(this);
3945
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3946
+                              } else {
3947
+                                  $(this).hide();
3948
+                              }
3949
+                          } else {
3950
+                                  $(this).show();
3951
+                                  msgrowsNo++;
3952
+                          }
3953
+                      });
3954
+
3955
+                      reorderSentRows();
3956
+                      $('#totalsentmessages').remove();
3957
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3958
+                });
3959
+
3960
+                $("#deliveryrecfilter").on("click", function(event) {
3961
+
3962
+                      var deliverytxtvr = $("#deliveryrcpttext").val().toLowerCase();
3963
+                      var msgrowsNo = 0;
3964
+
3965
+                      $(".sentrowsbody").each(function() {
3966
+
3967
+                          var checkEmpty9 = 0;
3968
+                          $(".indivfiltersent").not("#deliveryrcpttext").each(function() {
3969
+                              if ($(this).val() != '') {
3970
+                                  checkEmpty9 = 1;
3971
+                              }
3972
+                          });
3973
+
3974
+                          if (checkEmpty9 == 0) {
3975
+                              $(this).show();
3976
+                          }
3977
+
3978
+                          if (deliverytxtvr != '') {
3979
+                              var founddeliveryrcpt = $(this).find('[class="deliveryrcptcolsent"]').text().toLowerCase();
3980
+                              if (founddeliveryrcpt.indexOf(deliverytxtvr) != -1) {
3981
+                                  $("#sentSmsTable").append(this);
3982
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
3983
+                              } else {
3984
+                                  $(this).hide();
3985
+                              }
3986
+                          } else {
3987
+                                  $(this).show();
3988
+                                  msgrowsNo++;
3989
+                          }
3990
+                      });
3991
+
3992
+                      reorderSentRows();
3993
+                      $('#totalsentmessages').remove();
3994
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
3995
+                });
3996
+
3997
+                $("#messagefilter").on("click", function(event) {
3998
+
3999
+                      var messagetxtvr = $("#messagetext").val().toLowerCase();
4000
+                      var msgrowsNo = 0;
4001
+
4002
+                      $(".sentrowsbody").each(function() {
4003
+
4004
+                          var checkEmpty10 = 0;
4005
+                          $(".indivfiltersent").not("#messagetext").each(function() {
4006
+                              if ($(this).val() != '') {
4007
+                                  checkEmpty10 = 1;
4008
+                              }
4009
+                          });
4010
+
4011
+                          if (checkEmpty10 == 0) {
4012
+                              $(this).show();
4013
+                          }
4014
+
4015
+                          if (messagetxtvr != '') {
4016
+                              var foundmessage = $(this).find('[class="messagecolumnsent"]').text().toLowerCase();
4017
+                              if (foundmessage.indexOf(messagetxtvr) != -1) {
4018
+                                  $("#sentSmsTable").append(this);
4019
+                                  if ($(this).is(":visible")) { msgrowsNo++; }
4020
+                              } else {
4021
+                                  $(this).hide();
4022
+                              }
4023
+                          } else {
4024
+                                  $(this).show();
4025
+                                  msgrowsNo++;
4026
+                          }
4027
+                      });
4028
+
4029
+                      reorderSentRows();
4030
+                      $('#totalsentmessages').remove();
4031
+                      $('#smstables').append("<div id='totalsentmessages'>Total filtered messages: " + msgrowsNo + "</div>");
4032
+                });
4033
+
4034
+                // Clear all filters
4035
+                $("#clearsentfilters").on("click", function(event) {
4036
+                       $(".sentrowsbody").each(function() {
4037
+                          $(this).show();
4038
+                       });
4039
+                       $(".indivfiltersent").val("");
4040
+                       $('#totalsentmessages').remove();
4041
+                       $('#smstables').append("<div id='totalsentmessages'>Total displayed messages: " + sentparseddata.length + "</div>");
4042
+                });
4043
+
4044
+                // Delete selected rows from the database
4045
+                $("#deletesentrows").on("click", function() {
4046
+
4047
+                   var checkcheckbx = jQuery("#sentSmsTable input[type=checkbox]:checked").length;
4048
+                   if (checkcheckbx == 0) {
4049
+                       showAlert("Please select the row(s) to permanently delete from the database !");
4050
+                   } else {
4051
+                          var sentcheckboxIds = [];
4052
+                          $(".sentrowsbody").each(function() {
4053
+                             var sentrowcheckbx = $(this).find('input[type="checkbox"]');
4054
+                             if (sentrowcheckbx.is(":checked")) {
4055
+                                 var dbrowid = $(this).find('[class="sentdbidcolumn"]').text();
4056
+                                 sentcheckboxIds.push(dbrowid);
4057
+                             }
4058
+                          });
4059
+
4060
+		          confirmAlert("Please note that the row(s) you selected will be permanently deleted from the database, without being saved before removal. This action cannot be undone ! If you really want to permanently delete the selected row(s) press 'OK'.");
4061
+
4062
+		          $("#confirmCancel").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
4063
+
4064
+		          $("#confirmOk").click(function() {
4065
+
4066
+		              $("#alertMsgOverlay").remove();
4067
+		              $("#alertConfMessage").remove();
4068
+
4069
+                              var deletesentRowsUrl = OC.generateUrl("/apps/sms_relentless/user/removesentrows");
4070
+                              $('#smstables').addClass('icon-loading');
4071
+
4072
+                              $.ajax({
4073
+                                   url: deletesentRowsUrl + '/' + userid,
4074
+                                   method: "POST",
4075
+                                   dataType:'text',
4076
+                                   data: {sentmessagedbIDs: sentcheckboxIds},
4077
+                                   success: function() {
4078
+                                            showAlert("The row(s) have been deleted successfully !");
4079
+                                            $('#smstables').removeClass('icon-loading');
4080
+                                            $('#sentsmstableshow').click();
4081
+                                   },
4082
+                                   error: function() {
4083
+                                            showAlert("There was an error while deleting the selected row(s) !");
4084
+                                            $('#smstables').removeClass('icon-loading');
4085
+                                   }
4086
+                              });
4087
+                          });
4088
+                    }
4089
+                });
4090
+
4091
+                // Show/Hide filter row
4092
+	        $('#sentarrow').on('click', function() {
4093
+	           if ($('#sentfiltersrow').is(':visible')) {
4094
+		       $('#sentfiltersrow').hide();
4095
+                       $('#sentheaderrow').css('top', '0px');
4096
+                       $(this).removeClass('arrowUpCl');
4097
+                       $(this).addClass('arrowDownCl');
4098
+		   } else {
4099
+		       $('#sentfiltersrow').show();
4100
+                       $('#sentheaderrow').css('top', '158px');
4101
+                       $(this).removeClass('arrowDownCl');
4102
+                       $(this).addClass('arrowUpCl');
4103
+                   }
4104
+                });
4105
+
4106
+                $("#app-content").animate({scrollTop:$("#sentSmsTable").prop("scrollHeight")},200);
4107
+          },
4108
+          error: function(sentdatafromdb) {
4109
+                showAlert("Error! You can check the Nextcloud log to find more details about this issue.");
4110
+                $('#smstables').removeClass('icon-loading');
4111
+          }
4112
+     });
4113
+
4114
+  });
4115
+
4116
+  // List grouped messages
4117
+  $("#groupedtableshow").on("click", function(event) {
4118
+
4119
+     $('#smstables').empty();
4120
+     var getGroupedUrl = OC.generateUrl("/apps/sms_relentless/user/getgroupedtable");
4121
+
4122
+     $('#smstables').addClass('icon-loading');
4123
+     var totalPhNmbrs = 0;
4124
+
4125
+     $.ajax({
4126
+          method: 'GET',
4127
+          url: getGroupedUrl + '/' + userid,
4128
+          contentType: 'application/json',
4129
+          success: function(groupedparsed) {
4130
+
4131
+		        $('#smstables').append("<div id='toptablegrp'><div class='topbuttonandpage'><span id='recarrow' title='Show/Hide filters'></span></div><div id='paginationgrp' class='grppages'>Pages </div></div>");
4132
+		        $('#smstables').append("<table id='groupedSmsTable'></table>");
4133
+
4134
+                        $('#groupedSmsTable').append("<tr id='grpfiltersrow'><td colspan='2'><div id='filterByNumber'></div></td><td><button id='cleargrpfilter' title='Clear the filter'></button></td></tr>");
4135
+                        $('#groupedSmsTable').append("<tr class='groupedmsgrows' id='grpheaderrow'><th>Phone Number</th><th>Senders / Receivers</th><th>Messages</th></tr>");
4136
+
4137
+                        $('#grpfiltersrow').hide();
4138
+
4139
+                        var fromtoNmbrsData = [];
4140
+                        var fromtoNumberArr = [];
4141
+
4142
+		        for (var i = 0; i < groupedparsed.length; i++) {
4143
+
4144
+			     if (groupedparsed[i].author_displayname) {
4145
+			         var authordnm = groupedparsed[i].author_displayname;
4146
+			     } else { 
4147
+			         var authordnm = '';
4148
+			     }
4149
+
4150
+			     var sentfromnmbrarr = groupedparsed[i].from.split("+");
4151
+                             if (sentfromnmbrarr[1]) {
4152
+			         var groupednbfrom = "+"+ sentfromnmbrarr[1];
4153
+                             } else {
4154
+			         var groupednbfrom = sentfromnmbrarr[0];
4155
+                             }
4156
+
4157
+                             var modmessage = '';
4158
+                             if (groupedparsed[i].author_displayname) {
4159
+			         modmessage = "<span class='msgAuthorNameGrp'>"+ groupedparsed[i].author_displayname + ":</span>" + groupedparsed[i].message;
4160
+                             } else {
4161
+			         modmessage = groupedparsed[i].message;
4162
+                             }
4163
+
4164
+                             if (groupedparsed[i].to.indexOf(": ") > -1) {
4165
+                                 var groupednmbrtopre = groupedparsed[i].to.split(": ");
4166
+                                 var groupednmbrto = groupednmbrtopre[1];
4167
+                             } else { 
4168
+                                 var groupednmbrto = groupedparsed[i].to;
4169
+                             }
4170
+
4171
+                             fromtoNmbrsData.push({
4172
+                                       'author_displayname': authordnm,
4173
+                                       'from': groupednbfrom,
4174
+                                       'to': groupednmbrto,
4175
+                                       'message': modmessage,
4176
+                                       'date': groupedparsed[i].date,
4177
+                                       'status': groupedparsed[i].deliveryreceipt,
4178
+                                       'table': groupedparsed[i].table
4179
+                             });
4180
+
4181
+                             if (fromtoNumberArr.indexOf(groupednbfrom) == -1) { fromtoNumberArr.push(groupednbfrom); }
4182
+                             if (fromtoNumberArr.indexOf(groupednmbrto) == -1) { fromtoNumberArr.push(groupednmbrto); }
4183
+		        }
4184
+
4185
+                        totalPhNmbrs = fromtoNumberArr.length;
4186
+
4187
+                        // Remove the duplicates
4188
+			var noDupMsgData = [];
4189
+			$.each(fromtoNmbrsData, function(i, e) {
4190
+			    var matchingData = $.grep(noDupMsgData, function(item) {
4191
+                                return item.from == e.from && item.to == e.to && item.message == e.message && item.table == 'received' && e.table == 'sent'
4192
+			    });
4193
+			    if (matchingData.length === 0) {
4194
+				noDupMsgData.push(e);
4195
+			    }
4196
+			});
4197
+
4198
+                        var messagesPerNmbr = {};
4199
+                        var msgsNamesPerNmbr = {};
4200
+                        var msgsNmbrsNames = {};
4201
+
4202
+                        for (var k = 0; k < fromtoNumberArr.length; k++) {
4203
+
4204
+                             var displayNamesarr = [];
4205
+                             var convData = [];
4206
+
4207
+                             for (var n = 0; n < noDupMsgData.length; n++) {
4208
+
4209
+                                  if (noDupMsgData[n]['from'] == fromtoNumberArr[k] && noDupMsgData[n]['table'] == 'sent') {
4210
+
4211
+                                      convData.push({
4212
+                                                     'author_displayname': noDupMsgData[n]['author_displayname'],
4213
+                                                     'message': noDupMsgData[n]['message'],
4214
+                                                     'from': noDupMsgData[n]['from'],
4215
+                                                     'to': noDupMsgData[n]['to'],
4216
+                                                     'date': noDupMsgData[n]['date'],
4217
+                                                     'direction': 'sent_from',
4218
+                                                     'status': noDupMsgData[n]['status'],
4219
+                                                     'table': noDupMsgData[n]['table']
4220
+                                      });
4221
+
4222
+                                  } else if (noDupMsgData[n]['to'] == fromtoNumberArr[k] && noDupMsgData[n]['table'] == 'sent') {
4223
+
4224
+                                      convData.push({
4225
+                                                     'author_displayname': noDupMsgData[n]['author_displayname'],
4226
+                                                     'message': noDupMsgData[n]['message'],
4227
+                                                     'from': noDupMsgData[n]['from'],
4228
+                                                     'to': noDupMsgData[n]['to'],
4229
+                                                     'date': noDupMsgData[n]['date'],
4230
+                                                     'direction': 'sent_to',
4231
+                                                     'status': noDupMsgData[n]['status'],
4232
+                                                     'table': noDupMsgData[n]['table']
4233
+                                      });
4234
+
4235
+
4236
+                                  } else if (noDupMsgData[n]['from'] == fromtoNumberArr[k] && noDupMsgData[n]['table'] == 'received') {
4237
+
4238
+                                      convData.push({
4239
+                                                     'author_displayname': noDupMsgData[n]['author_displayname'],
4240
+                                                     'message': noDupMsgData[n]['message'],
4241
+                                                     'from': noDupMsgData[n]['from'],
4242
+                                                     'to': noDupMsgData[n]['to'],
4243
+                                                     'date': noDupMsgData[n]['date'],
4244
+                                                     'direction': 'received_from',
4245
+                                                     'status': noDupMsgData[n]['status'],
4246
+                                                     'table': noDupMsgData[n]['table']
4247
+                                      });
4248
+
4249
+                                  } else if (noDupMsgData[n]['to'] == fromtoNumberArr[k] && noDupMsgData[n]['table'] == 'received') {
4250
+
4251
+                                      convData.push({
4252
+                                                     'author_displayname': noDupMsgData[n]['author_displayname'],
4253
+                                                     'message': noDupMsgData[n]['message'],
4254
+                                                     'from': noDupMsgData[n]['from'],
4255
+                                                     'to': noDupMsgData[n]['to'],
4256
+                                                     'date': noDupMsgData[n]['date'],
4257
+                                                     'direction': 'received_on',
4258
+                                                     'status': noDupMsgData[n]['status'],
4259
+                                                     'table': noDupMsgData[n]['table']
4260
+                                      });
4261
+                                  }
4262
+                             }
4263
+
4264
+                             // Sort messages by date
4265
+		             convData.sort(function(a, b) {
4266
+			        var c = new Date(a.date);
4267
+			        var d = new Date(b.date);
4268
+			        return c-d;
4269
+		             });
4270
+
4271
+                             // Collect the display names of the users that sent messages from the current number
4272
+                             var selectedNames = [];
4273
+                             var displayNames = '';
4274
+                             for (var v = 0; v < convData.length; v++) {
4275
+                                  if (selectedNames.indexOf(convData[v]['author_displayname']) == -1) { 
4276
+                                      selectedNames.push(convData[v]['author_displayname']);
4277
+                                      displayNames += "<div id='diplNm_"+ fromtoNumberArr[k] +"_"+ v +"' class='dispNameList' name='"+ convData[v]['author_displayname'] +"'>"+ convData[v]['author_displayname'] +"</div>";
4278
+                                  }
4279
+                             }
4280
+
4281
+                             // Store the display names for the current number, to be able to see them later when selecting the number from the drop-down list
4282
+                             var ctPhNumber = fromtoNumberArr[k];
4283
+                             msgsNamesPerNmbr[ctPhNumber] = displayNames;
4284
+
4285
+                             // Store the messages sent by each user, to be able to see them later when clicking on the user's name
4286
+                             for (var h = 0; h < selectedNames.length; h++) {
4287
+
4288
+                                  var rowMessageArrpn = [];
4289
+                                  for (var b = 0; b < convData.length; b++) {
4290
+
4291
+                                       if (selectedNames[h] == convData[b]['author_displayname']) {
4292
+
4293
+		                           if (convData[b]['direction'] == 'sent_from') {
4294
+		                               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
4295
+		                                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
4296
+		                               } else {
4297
+		                                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
4298
+		                               }
4299
+		                               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
4300
+		                           } else if (convData[b]['direction'] == 'sent_to') {
4301
+		                               if (convData[b]['status'].indexOf("delivered") > -1 || convData[b]['status'].indexOf("delivery success") > -1) {
4302
+		                                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
4303
+		                               } else {
4304
+		                                   var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
4305
+		                               }
4306
+		                               rowMessageArrpn.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
4307
+		                           } else if (convData[b]['direction'] == 'received_from') {
4308
+		                               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
4309
+		                           } else if (convData[b]['direction'] == 'received_on') {
4310
+		                               rowMessageArrpn.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[b]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[b]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[b]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[b]['date'] +"</div></div>");
4311
+                                           }
4312
+                                       }
4313
+                                  }
4314
+                                  var convDataPerNmbrpn = rowMessageArrpn.join("<br>");
4315
+                                  var crtNmber = fromtoNumberArr[k];
4316
+                                  var crtName = selectedNames[h];
4317
+                                  msgsNmbrsNames[crtNmber] = msgsNmbrsNames[crtNmber] || {};
4318
+                                  msgsNmbrsNames[crtNmber][crtName] = convDataPerNmbrpn;
4319
+                             }
4320
+
4321
+                             var rowMessageArr = [];
4322
+                             for (var m = 0; m < convData.length; m++) {
4323
+
4324
+                                  if (convData[m]['direction'] == 'sent_from') {
4325
+
4326
+                                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
4327
+                                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
4328
+                                      } else {
4329
+                                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
4330
+                                      }
4331
+                                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 6px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
4332
+
4333
+                                  } else if (convData[m]['direction'] == 'sent_to') {
4334
+
4335
+                                      if (convData[m]['status'].indexOf("delivered") > -1 || convData[m]['status'].indexOf("delivery success") > -1) {
4336
+                                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/check.svg' title='`delivery success` received.'>";
4337
+                                      } else {
4338
+                                          var sentMsgStatus = "<img src='/apps/sms_relentless/img/question.svg' title='This message did not receive a `delivery success` receipt. However, it is possible that it reached its destination.'>";
4339
+                                      }
4340
+                                      rowMessageArr.push("<div class='groupedSentMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;color:#06866f;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/outgoing.svg' title='Message sent to current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:inline-block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div><div class='sentMssgStatus'>"+ sentMsgStatus +"</div></div>");
4341
+
4342
+                                  } else if (convData[m]['direction'] == 'received_from') {
4343
+
4344
+		                      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received from current number.'></div><div style='display:inline-block;color:#06866f;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#353535;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
4345
+
4346
+                                  } else if (convData[m]['direction'] == 'received_on') {
4347
+
4348
+		                      rowMessageArr.push("<div class='groupedRecMsg'><div style='display:block;margin:0px 0px 6px 0px;'><div style='display:inline-block;margin:0px 12px 0px 3px;'><img src='/apps/sms_relentless/img/incoming.svg' title='Message received on current number.'></div><div style='display:inline-block;color:#353535;'>From: "+ convData[m]['from'] +"</div><div style='display:inline-block;margin:0px 0px 0px 12px;color:#06866f;'>To: "+ convData[m]['to'] +"</div></div><div style='display:block;font-size:15px;color:#353535;font-weight:500;white-space:normal;'>"+ convData[m]['message'] +"</div><div style='display:block;margin:6px 0px 0px 4px;font-size:12.5px;color:#353535;'>"+ convData[m]['date'] +"</div></div>");
4349
+                                  }
4350
+                             }
4351
+
4352
+                             var convDataPerNmbr = rowMessageArr.join("");
4353
+
4354
+                             var rowPhoneNumber = "<div id='nmbrow_"+ fromtoNumberArr[k] +"' class='phoneNmbrRow'>"+ fromtoNumberArr[k] +"</div>";
4355
+
4356
+		             $("#groupedSmsTable").append("<tr id='singlerow_"+ k +"' class='groupedrowsbody'><td><div class='groupedLstNmbr fixedRowHeight'>"+ rowPhoneNumber +"</div></td><td><div class='groupedLstNames fixedRowHeight'>"+ displayNames +"</div></td><td style='width:100%'><div class='groupedLstMsgs fixedRowHeight'>"+ convDataPerNmbr +"</div></td></tr>");
4357
+                             $("#groupedSmsTable").append("<tr id='expandRow_"+ k +"' class='groupedrowsexp'><td colspan='3'><div style='display:block;width:100%;height:14px;cursor:pointer;'><img class='expandGrpRow' src='/apps/sms_relentless/img/arrowDown.svg'></div><td></tr>");
4358
+
4359
+                             // Store the messages for the current number, to be able to see them later, when clicking on the number
4360
+                             var ctNmbr = fromtoNumberArr[k];
4361
+                             messagesPerNmbr[ctNmbr] = convDataPerNmbr;
4362
+                        }
4363
+
4364
+
4365
+                        // Add the 'filter by number' drop-down list
4366
+                        var nmbrslst = "<option value='title'>Filter messages by number</option>";
4367
+                        for (var p = 0; p < fromtoNumberArr.length; p++) {
4368
+                             nmbrslst += "<option value='"+ fromtoNumberArr[p] +"'>"+ fromtoNumberArr[p] +"</option>";
4369
+                        }
4370
+                        $("#filterByNumber").append("<select id='selectListedNmbrs'>"+ nmbrslst +"</select>");
4371
+
4372
+
4373
+                        $("#selectListedNmbrs").change(function() {
4374
+
4375
+                          var selectedNmbr = $(this).val();
4376
+
4377
+                          if (selectedNmbr != "title") {
4378
+
4379
+                              $(".groupedrowsbody,.groupedrowsexp").each(function() { $(this).hide(); });
4380
+		              $("#groupedSmsTable").append("<tr id='singlerowfl_"+ fromtoNumberArr.indexOf(selectedNmbr) +"' class='groupedrowsbody'><td><div class='groupedLstNmbr fixedRowHeight'><div id='nmbrow_"+ selectedNmbr +"' style='font-size:15px;font-weight:500;color:#06866f;cursor:pointer;'>"+ selectedNmbr +"</div></div></td><td><div class='groupedLstNames fixedRowHeight'>"+ msgsNamesPerNmbr[selectedNmbr] +"</div></td><td style='width:100%'><div class='groupedLstMsgs fixedRowHeight'>"+ messagesPerNmbr[selectedNmbr] +"</div></td></tr>");
4381
+                              $("#groupedSmsTable").append("<tr id='expandRowfl_"+ fromtoNumberArr.indexOf(selectedNmbr) +"' class='groupedrowsexp'><td colspan='3'><div style='display:block;width:100%;height:14px;cursor:pointer;'><img class='expandGrpRow' src='/apps/sms_relentless/img/arrowDown.svg'></div><td></tr>");
4382
+
4383
+
4384
+                               // Show the messages sent by each user whose name is listed for the phone number of the current row
4385
+                               $('[id*="diplNm_"]').click(function() {
4386
+
4387
+                                  var crntNmbr = $(this).attr("id").split("_")[1];
4388
+                                  var crntDisName = $(this).attr("name");                        
4389
+                                  var clsmsgcell = $(this).closest(".groupedrowsbody").find(".groupedLstMsgs");
4390
+                                  clsmsgcell.empty();
4391
+                                  clsmsgcell.html(msgsNmbrsNames[crntNmbr][crntDisName]);
4392
+
4393
+                                  $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
4394
+                                  $(this).css("color", "#1483f0");
4395
+                                  $("#nmbrow_"+ selectedNmbr).css("color", "#06866f");
4396
+                                  $(".groupedLstNmbr").each(function () { $(this).css("color", "#06866f"); });
4397
+                               });
4398
+
4399
+
4400
+		               // Show all the messages sent to/from the clicked number
4401
+		               $('[id*="nmbrow_"]').click(function() {
4402
+		                  var rwNmbr = $(this).attr("id").replace("nmbrow_", "");
4403
+		                  var rowmsgcell = $(this).closest(".groupedrowsbody").find(".groupedLstMsgs");
4404
+		                  rowmsgcell.empty();
4405
+		                  rowmsgcell.html(messagesPerNmbr[rwNmbr]);
4406
+
4407
+		                  $(".phoneNmbrRow").each(function() { $(this).css("color", "#06866f"); });
4408
+		                  $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
4409
+		                  $(this).css("color", "#08b899");
4410
+		               });
4411
+
4412
+
4413
+		               // Expand the rows to see all the messages
4414
+		               $('[id^="expandRowfl_"]').click(function() {
4415
+		                   var idnumbrfl = $(this).attr("id").replace("expandRowfl_", "");
4416
+		                   var crntExpandfl = $(this).find(".expandGrpRow");
4417
+
4418
+		                   if (crntExpandfl.attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
4419
+                                       $("#singlerowfl_"+ idnumbrfl).find(".fixedRowHeight").removeClass("fixedRowHeight");
4420
+		                       crntExpandfl.attr('src', '/apps/sms_relentless/img/arrowUp.svg');
4421
+		                   } else {
4422
+                                       $("#singlerowfl_"+ idnumbrfl).find(".groupedLstNmbr,.groupedLstNames,.groupedLstMsgs").addClass("fixedRowHeight");
4423
+                                       crntExpandfl.attr('src', '/apps/sms_relentless/img/arrowDown.svg'); 
4424
+		                   }
4425
+		               });
4426
+
4427
+		               $('#totalgrpmessages').remove();
4428
+		               $('#smstables').append("<div id='totalgrpmessages'>Total displayed phone numbers: 1</div>");
4429
+                           }
4430
+                        });
4431
+
4432
+                        // Clear the 'filter by number' filter
4433
+                        $("#cleargrpfilter").click(function() {
4434
+                               $('[id^="singlerowfl_"]').remove();
4435
+                               $('[id^="expandRowfl_"]').remove();
4436
+                               $(".groupedrowsbody,.groupedrowsexp").each(function() { $(this).show(); });
4437
+                               $("#selectListedNmbrs").val("title");
4438
+		               $('#totalgrpmessages').remove();
4439
+		               $('#smstables').append("<div id='totalgrpmessages'>Total displayed phone numbers: "+ totalPhNmbrs +"</div>");
4440
+                        });
4441
+
4442
+                        // Show the messages sent by each user whose name is listed for the phone number on the current row
4443
+                        $('[id*="diplNm_"]').click(function() {
4444
+
4445
+                           var crntNmbr = $(this).attr("id").split("_")[1];
4446
+                           var crntDisName = $(this).attr("name");                               
4447
+                           var clsmsgcell = $(this).closest(".groupedrowsbody").find(".groupedLstMsgs");
4448
+                           clsmsgcell.empty();
4449
+                           clsmsgcell.html(msgsNmbrsNames[crntNmbr][crntDisName]);
4450
+
4451
+                           $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
4452
+                           $(this).css("color", "#1483f0");
4453
+                        });
4454
+
4455
+                        // Show all the messages sent to/from the clicked number
4456
+                        $('[id*="nmbrow_"]').click(function() {
4457
+                           var rwNmbr = $(this).attr("id").replace("nmbrow_", "");
4458
+                           var rowmsgcell = $(this).closest(".groupedrowsbody").find(".groupedLstMsgs");
4459
+                           rowmsgcell.empty();
4460
+                           rowmsgcell.html(messagesPerNmbr[rwNmbr]);
4461
+
4462
+                           $(".phoneNmbrRow").each(function() { $(this).css("color", "#06866f"); });
4463
+                           $(".dispNameList").each(function() { $(this).css("color", "#0a559e"); });
4464
+                           $(this).css("color", "#08b899");
4465
+                        });
4466
+
4467
+
4468
+		        $('#smstables').removeClass('icon-loading');
4469
+		        $('#recarrow').removeClass('arrowUpCl');
4470
+		        $('#recarrow').addClass('arrowDownCl');
4471
+
4472
+                        // Expand the rows to see all the messages
4473
+                        $('[id^="expandRow_"]').click(function() {
4474
+                            var idnumbr = $(this).attr("id").replace("expandRow_", "");
4475
+                            var crntExpand = $(this).find(".expandGrpRow");
4476
+
4477
+                            if (crntExpand.attr('src') == '/apps/sms_relentless/img/arrowDown.svg') {
4478
+                                $("#singlerow_"+ idnumbr).find(".fixedRowHeight").removeClass("fixedRowHeight");
4479
+                                crntExpand.attr('src', '/apps/sms_relentless/img/arrowUp.svg');
4480
+                            } else {
4481
+                                $("#singlerow_"+ idnumbr).find(".groupedLstNmbr,.groupedLstNames,.groupedLstMsgs").addClass("fixedRowHeight");
4482
+                                crntExpand.attr('src', '/apps/sms_relentless/img/arrowDown.svg'); 
4483
+                            }
4484
+                        });
4485
+
4486
+
4487
+		        // Add pagination
4488
+		        var rowsShowngrp = messagesperpage;
4489
+		        var rowsTotalgrp = $("#groupedSmsTable tr").length;
4490
+
4491
+		        var numPagesgrp = ((rowsTotalgrp - 2) / rowsShowngrp) / 2;
4492
+
4493
+		        for (i = 0; i < numPagesgrp; i++) {
4494
+		             var pageNumgrp = i + 1;
4495
+		             $('#paginationgrp').append('<a href="#" rel="' + i + '" class="pagenumbersgrp">' + pageNumgrp + '</a> ');
4496
+		        }
4497
+
4498
+		        $('#paginationgrp').children(":first").addClass('active');
4499
+
4500
+		        $(".groupedrowsbody,.groupedrowsexp").hide();
4501
+
4502
+		        $('#paginationgrp a:first').addClass('active');
4503
+
4504
+		        // Show table page when clicking a page number
4505
+		        $('.grppages a').bind('click', function() {
4506
+
4507
+		           $('#paginationgrp').children().removeClass('active');
4508
+
4509
+		           $(this).addClass('active');
4510
+
4511
+		           var currentPageNogrp = $(this).text();
4512
+
4513
+		           $('#paginationgrp a').each(function() {
4514
+		               if ($(this).text() == currentPageNogrp) {
4515
+		                   $(this).addClass('active');
4516
+		               }
4517
+		           });
4518
+
4519
+		           var currPagegrp = $(this).attr('rel');
4520
+		           var startItemgrp = currPagegrp * rowsShowngrp;
4521
+		           var endItemgrp = startItemgrp + rowsShowngrp;
4522
+
4523
+		           $(".groupedrowsbody").hide().slice(startItemgrp, endItemgrp).css('display', 'table-row');
4524
+		           $(".groupedrowsexp").hide().slice(startItemgrp, endItemgrp).css('display', 'table-row');
4525
+
4526
+		           $('#totalgrpmessages').remove();
4527
+		           $('#smstables').append("<div id='totalgrpmessages'>Total displayed phone numbers: " + totalPhNmbrs + "</div>");
4528
+		        });
4529
+
4530
+                        $('#paginationgrp').children(":last").trigger('click');
4531
+
4532
+
4533
+		        // Show/Hide filter row
4534
+		        $('#recarrow').on('click', function() {
4535
+			   if ($('#grpfiltersrow').is(':visible')) {
4536
+			       $('#grpfiltersrow').hide();
4537
+		               $('#grpheaderrow').css('top', '0px');
4538
+		               $(this).removeClass('arrowUpCl');
4539
+		               $(this).addClass('arrowDownCl');
4540
+			   } else {
4541
+			       $('#grpfiltersrow').show();
4542
+		               $('#grpheaderrow').css('top', '158px');
4543
+		               $(this).removeClass('arrowDownCl');
4544
+		               $(this).addClass('arrowUpCl');
4545
+		           }
4546
+		        });
4547
+
4548
+          },
4549
+          error: function() {
4550
+
4551
+                        showAlert("Error while attempting to get the messages from the database.");
4552
+                        $('#smstables').removeClass('icon-loading');
4553
+          }
4554
+     });
4555
+  });
4556
+
4557
+
4558
+  function showAlert(alertText) {
4559
+
4560
+     let alertwnd = "<div id='alertMessage'>";
4561
+     alertwnd += "<a id='closeAlertWnd' title='Close this window'></a>";
4562
+     alertwnd += "<div id='alertTextWrap'>"+ alertText +"</div>";
4563
+     alertwnd += "<input type='submit' id='alertOk' value='OK'>";
4564
+     alertwnd += "</div>";
4565
+
4566
+     $("#content").append("<div id='alertMsgOverlay'></div>");
4567
+     $("#content").append(alertwnd);
4568
+
4569
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
4570
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
4571
+     $("#alertMessage").css({ "top" : topDist, "left" : leftDist });
4572
+
4573
+     $("#closeAlertWnd").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
4574
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
4575
+     $("#alertOk").click(function() { $("#alertMsgOverlay").remove(); $("#alertMessage").remove(); });
4576
+  }
4577
+
4578
+  function confirmAlert(alertText) {
4579
+
4580
+     let alertwndcf = "<div id='alertConfMessage'>";
4581
+     alertwndcf += "<a id='closeAlertWndcf' title='Close this window'></a>";
4582
+     alertwndcf += "<div id='alertTextWrap'>"+ alertText +"</div>";
4583
+     alertwndcf += "<div id='cancelOkWrap'><input type='submit' id='confirmCancel' value='Cancel'>";
4584
+     alertwndcf += "<input type='submit' id='confirmOk' value='OK'></div>";
4585
+     alertwndcf += "</div>";
4586
+
4587
+     $("#content").append("<div id='alertMsgOverlay'></div>");
4588
+     $("#content").append(alertwndcf);
4589
+
4590
+     let topDist = parseInt((window.innerHeight / 2).toFixed(2) - 152) +"px";
4591
+     let leftDist = parseInt((window.innerWidth / 2).toFixed(2) - 150) +"px";
4592
+     $("#alertConfMessage").css({ "top" : topDist, "left" : leftDist });
4593
+
4594
+     $("#closeAlertWndcf").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
4595
+     $("#alertMsgOverlay").click(function() { $("#alertMsgOverlay").remove(); $("#alertConfMessage").remove(); });
4596
+  }
4597
+
4598
+});
0 4599
new file mode 100644
... ...
@@ -0,0 +1,434 @@
1
+/**
2
+   @license
3
+   ----
4
+   tiff.js: https://github.com/seikichi/tiff.js
5
+
6
+   Copyright (C) 2013 seikichi[at]kmc.gr.jp
7
+
8
+   This software is provided 'as-is', without any express or implied
9
+   warranty. In no event will the authors be held liable for any damages
10
+   arising from the use of this software.
11
+
12
+   Permission is granted to anyone to use this software for any purpose,
13
+   including commercial applications, and to alter it and redistribute it
14
+   freely, subject to the following restrictions:
15
+
16
+   1. The origin of this software must not be misrepresented; you must not
17
+   claim that you wrote the original software. If you use this software
18
+   in a product, an acknowledgment in the product documentation would be
19
+   appreciated but is not required.
20
+
21
+   2. Altered source versions must be plainly marked as such, and must not be
22
+   misrepresented as being the original software.
23
+
24
+   3. This notice may not be removed or altered from any source
25
+   distribution.
26
+   ----
27
+   zlib: http://www.zlib.net/
28
+
29
+   Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler
30
+
31
+   This software is provided 'as-is', without any express or implied
32
+   warranty.  In no event will the authors be held liable for any damages
33
+   arising from the use of this software.
34
+
35
+   Permission is granted to anyone to use this software for any purpose,
36
+   including commercial applications, and to alter it and redistribute it
37
+   freely, subject to the following restrictions:
38
+
39
+   1. The origin of this software must not be misrepresented; you must not
40
+   claim that you wrote the original software. If you use this software
41
+   in a product, an acknowledgment in the product documentation would be
42
+   appreciated but is not required.
43
+   2. Altered source versions must be plainly marked as such, and must not be
44
+   misrepresented as being the original software.
45
+   3. This notice may not be removed or altered from any source distribution.
46
+
47
+   Jean-loup Gailly        Mark Adler
48
+   jloup@gzip.org          madler@alumni.caltech.edu
49
+
50
+
51
+   The data format used by the zlib library is described by RFCs (Request for
52
+   Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
53
+   (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
54
+   ----
55
+   LibTIFF: http://www.remotesensing.org/libtiff/
56
+
57
+   Copyright (c) 1988-1997 Sam Leffler
58
+   Copyright (c) 1991-1997 Silicon Graphics, Inc.
59
+
60
+   Permission to use, copy, modify, distribute, and sell this software and 
61
+   its documentation for any purpose is hereby granted without fee, provided
62
+   that (i) the above copyright notices and this permission notice appear in
63
+   all copies of the software and related documentation, and (ii) the names of
64
+   Sam Leffler and Silicon Graphics may not be used in any advertising or
65
+   publicity relating to the software without the specific, prior written
66
+   permission of Sam Leffler and Silicon Graphics.
67
+
68
+   THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
69
+   EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
70
+   WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
71
+
72
+   IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
73
+   ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
74
+   OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
75
+   WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
76
+   LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
77
+   OF THIS SOFTWARE.
78
+*/
79
+var loadModule=(function(options){var Module={};if("TOTAL_MEMORY"in options){Module["TOTAL_MEMORY"]=options["TOTAL_MEMORY"]}var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);if(!ret&&filename!=nodePath["resolve"](filename)){filename=path.join(__dirname,"..","src",filename);ret=nodeFS["readFileSync"](filename)}if(ret&&!binary)ret=ret.toString();return ret};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available (jsc?)"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.log(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){DYNAMICTOP=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["ccall"]=ccall;Module["cwrap"]=cwrap;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}Module["setValue"]=setValue;function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}Module["getValue"]=getValue;var ALLOC_NORMAL=0;var ALLOC_STACK=1;var ALLOC_STATIC=2;var ALLOC_DYNAMIC=3;var ALLOC_NONE=4;Module["ALLOC_NORMAL"]=ALLOC_NORMAL;Module["ALLOC_STACK"]=ALLOC_STACK;Module["ALLOC_STATIC"]=ALLOC_STATIC;Module["ALLOC_DYNAMIC"]=ALLOC_DYNAMIC;Module["ALLOC_NONE"]=ALLOC_NONE;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr==="function"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type=="i64")type="i32";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}Module["allocate"]=allocate;function getMemory(size){if(!staticSealed)return Runtime.staticAlloc(size);if(typeof _sbrk!=="undefined"&&!_sbrk.called||!runtimeInitialized)return Runtime.dynamicAlloc(size);return _malloc(size)}Module["getMemory"]=getMemory;function Pointer_stringify(ptr,length){if(length===0||!ptr)return"";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}Module["Pointer_stringify"]=Pointer_stringify;function AsciiToString(ptr){var str="";while(1){var ch=HEAP8[ptr++>>0];if(!ch)return str;str+=String.fromCharCode(ch)}}Module["AsciiToString"]=AsciiToString;function stringToAscii(str,outPtr){return writeAsciiToMemory(str,outPtr,false)}Module["stringToAscii"]=stringToAscii;function UTF8ArrayToString(u8Array,idx){var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}Module["UTF8ArrayToString"]=UTF8ArrayToString;function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module["UTF8ToString"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}Module["stringToUTF8Array"]=stringToUTF8Array;function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}Module["stringToUTF8"]=stringToUTF8;function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}Module["lengthBytesUTF8"]=lengthBytesUTF8;function UTF16ToString(ptr){var i=0;var str="";while(1){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)return str;++i;str+=String.fromCharCode(codeUnit)}}Module["UTF16ToString"]=UTF16ToString;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}Module["stringToUTF16"]=stringToUTF16;function lengthBytesUTF16(str){return str.length*2}Module["lengthBytesUTF16"]=lengthBytesUTF16;function UTF32ToString(ptr){var i=0;var str="";while(1){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)return str;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}}Module["UTF32ToString"]=UTF32ToString;function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}Module["stringToUTF32"]=stringToUTF32;function lengthBytesUTF32(str){var len=0;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343)++i;len+=4}return len}Module["lengthBytesUTF32"]=lengthBytesUTF32;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var buf=_malloc(func.length);writeStringToMemory(func.substr(1),buf);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}}var i=3;var basicTypes={"v":"void","b":"bool","c":"char","s":"short","i":"int","l":"long","f":"float","d":"double","w":"wchar_t","a":"signed char","h":"unsigned char","t":"unsigned short","j":"unsigned int","m":"unsigned long","x":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]==="C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){var OLD_TOTAL_MEMORY=TOTAL_MEMORY;var LIMIT=Math.pow(2,31);if(DYNAMICTOP>=LIMIT)return false;while(TOTAL_MEMORY<=DYNAMICTOP){if(TOTAL_MEMORY<LIMIT/2){TOTAL_MEMORY=alignMemoryPage(2*TOTAL_MEMORY)}else{var last=TOTAL_MEMORY;TOTAL_MEMORY=alignMemoryPage((3*TOTAL_MEMORY+LIMIT)/4);if(TOTAL_MEMORY<=last)return false}}TOTAL_MEMORY=Math.max(TOTAL_MEMORY,16*1024*1024);if(TOTAL_MEMORY>=LIMIT)return false;try{if(ArrayBuffer.transfer){buffer=ArrayBuffer.transfer(buffer,TOTAL_MEMORY)}else{var oldHEAP8=HEAP8;buffer=new ArrayBuffer(TOTAL_MEMORY)}}catch(e){return false}var success=_emscripten_replace_memory(buffer);if(!success)return false;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer);if(!ArrayBuffer.transfer){HEAP8.set(oldHEAP8)}return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}totalMemory=Math.max(totalMemory,16*1024*1024);if(totalMemory!==TOTAL_MEMORY){TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer;buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+164992;__ATINIT__.push();allocate([0,0,0,0,0,0,240,63,239,97,72,177,80,49,246,63,202,111,77,145,174,231,244,63,170,17,108,239,98,208,242,63,0,0,0,0,0,0,240,63,59,191,167,192,105,36,233,63,187,32,199,123,122,81,225,63,93,171,114,222,85,168,209,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,84,8,0,0,1,0,0,0,0,0,0,0,56,0,0,0,116,0,0,0,154,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,82,251,1,0,0,0,0,0,157,130,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,95,251,1,0,0,0,0,0,34,136,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,103,251,1,0,0,0,0,0,36,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,119,251,1,0,0,0,0,0,39,136,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,139,251,1,0,0,0,0,0,40,136,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,155,251,1,0,0,0,0,0,0,144,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,184,251,1,0,0,0,0,0,3,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,196,251,1,0,0,0,0,0,4,144,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,213,251,1,0,0,0,0,0,1,145,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,231,251,1,0,0,0,0,0,2,145,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,255,251,1,0,0,0,0,0,1,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,22,252,1,0,0,0,0,0,2,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,40,252,1,0,0,0,0,0,3,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,54,252,1,0,0,0,0,0,4,146,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,70,252,1,0,0,0,0,0,5,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,88,252,1,0,0,0,0,0,6,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,105,252,1,0,0,0,0,0,7,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,121,252,1,0,0,0,0,0,8,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,134,252,1,0,0,0,0,0,9,146,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,146,252,1,0,0,0,0,0,10,146,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,152,252,1,0,0,0,0,0,20,146,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,1,1,164,252,1,0,0,0,0,0,124,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,176,252,1,0,0,0,0,0,134,146,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,186,252,1,0,0,0,0,0,144,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,198,252,1,0,0,0,0,0,145,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,209,252,1,0,0,0,0,0,146,146,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,228,252,1,0,0,0,0,0,0,160,0,0,4,0,4,0,7,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,1,0,248,252,1,0,0,0,0,0,1,160,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,8,253,1,0,0,0,0,0,2,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,19,253,1,0,0,0,0,0,3,160,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,35,253,1,0,0,0,0,0,4,160,0,0,13,0,13,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,51,253,1,0,0,0,0,0,11,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,68,253,1,0,0,0,0,0,12,162,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,80,253,1,0,0,0,0,0,14,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,105,253,1,0,0,0,0,0,15,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,127,253,1,0,0,0,0,0,16,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,149,253,1,0,0,0,0,0,20,162,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,1,0,174,253,1,0,0,0,0,0,21,162,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,190,253,1,0,0,0,0,0,23,162,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,204,253,1,0,0,0,0,0,0,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,218,253,1,0,0,0,0,0,1,163,0,0,1,0,1,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,1,0,229,253,1,0,0,0,0,0,2,163,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,239,253,1,0,0,0,0,0,1,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,250,253,1,0,0,0,0,0,2,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,9,254,1,0,0,0,0,0,3,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,22,254,1,0,0,0,0,0,4,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,35,254,1,0,0,0,0,0,5,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,52,254,1,0,0,0,0,0,6,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,74,254,1,0,0,0,0,0,7,164,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,1,0,91,254,1,0,0,0,0,0,8,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,103,254,1,0,0,0,0,0,9,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,112,254,1,0,0,0,0,0,10,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,123,254,1,0,0,0,0,0,11,164,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,133,254,1,0,0,0,0,0,12,164,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,158,254,1,0,0,0,0,0,32,164,0,0,33,0,33,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,179,254,1,0,0,0,0,0,254,0,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,1,0,193,254,1,0,0,0,0,0,255,0,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,1,0,205,254,1,0,0,0,0,0,0,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,220,254,1,0,0,0,0,0,1,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,0,1,0,211,8,2,0,0,0,0,0,2,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,0,0,0,231,254,1,0,0,0,0,0,3,1,0,0,255,255,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,0,0,0,99,20,2,0,0,0,0,0,6,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,8,0,0,0,245,254,1,0,0,0,0,0,7,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,9,0,1,0,15,255,1,0,0,0,0,0,8,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,29,255,1,0,0,0,0,0,9,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,39,255,1,0,0,0,0,0,10,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,10,0,0,0,50,255,1,0,0,0,0,0,13,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,60,255,1,0,0,0,0,0,14,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,73,255,1,0,0,0,0,0,15,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,90,255,1,0,0,0,0,0,16,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,95,255,1,0,0,0,0,0,17,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,24,9,2,0,0,0,0,0,18,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,15,0,0,0,101,255,1,0,0,0,0,0,21,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,16,0,0,0,113,255,1,0,0,0,0,0,22,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,17,0,0,0,129,255,1,0,0,0,0,0,23,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,191,10,2,0,0,0,0,0,24,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,18,0,1,0,142,255,1,0,0,0,0,0,25,1,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,19,0,1,0,157,255,1,0,0,0,0,0,26,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,172,255,1,0,0,0,0,0,27,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,3,0,1,0,184,255,1,0,0,0,0,0,28,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,20,0,0,0,196,255,1,0,0,0,0,0,29,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,216,255,1,0,0,0,0,0,30,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,225,255,1,0,0,0,0,0,31,1,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,4,0,1,0,235,255,1,0,0,0,0,0,32,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,255,1,0,0,0,0,0,33,1,0,0,255,255,255,255,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,34,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,16,0,2,0,0,0,0,0,35,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,33,0,2,0,0,0,0,0,40,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,22,0,1,0,51,0,2,0,0,0,0,0,41,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,23,0,1,0,66,0,2,0,0,0,0,0,44,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,77,0,2,0,0,0,0,0,45,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,44,0,1,0,95,0,2,0,0,0,0,0,49,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,112,0,2,0,0,0,0,0,50,1,0,0,20,0,20,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,121,0,2,0,0,0,0,0,59,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,130,0,2,0,0,0,0,0,60,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,137,0,2,0,0,0,0,0,62,1,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,150,0,2,0,0,0,0,0,63,1,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,161,0,2,0,0,0,0,0,64,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,26,0,1,0,183,0,2,0,0,0,0,0,65,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,37,0,1,0,192,0,2,0,0,0,0,0,66,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,206,0,2,0,0,0,0,0,67,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,0,0,0,216,0,2,0,0,0,0,0,68,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,12,9,2,0,0,0,0,0,69,1,0,0,255,255,1,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,227,0,2,0,0,0,0,0,74,1,0,0,255,255,255,255,18,0,0,0,0,0,0,0,38,0,0,0,0,0,0,0,49,0,1,1,242,0,2,0,84,0,0,0,76,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,59,20,2,0,0,0,0,0,77,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,27,0,0,0,0,0,0,0,46,0,1,1,249,0,2,0,0,0,0,0,78,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,1,0,2,1,2,0,0,0,0,0,80,1,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,65,0,0,0,15,1,2,0,0,0,0,0,81,1,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,24,1,2,0,0,0,0,0,82,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,31,0,0,1,38,1,2,0,0,0,0,0,83,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,51,1,2,0,0,0,0,0,84,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,33,0,1,0,64,1,2,0,0,0,0,0,85,1,0,0,254,255,255,255,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,34,0,1,0,80,1,2,0,0,0,0,0,87,1,0,0,255,255,253,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,1,96,1,2,0,0,0,0,0,88,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,105,1,2,0,0,0,0,0,88,1,0,0,1,0,1,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,105,1,2,0,0,0,0,0,89,1,0,0,1,0,1,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,120,1,2,0,0,0,0,0,17,2,0,0,3,0,3,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,135,1,2,0,0,0,0,0,18,2,0,0,2,0,2,0,3,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,39,0,0,0,153,1,2,0,0,0,0,0,19,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,40,0,0,0,170,1,2,0,0,0,0,0,20,2,0,0,6,0,6,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,41,0,1,0,187,1,2,0,0,0,0,0,188,2,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,207,1,2,0,0,0,0,0,227,128,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,31,0,0,0,217,1,2,0,0,0,0,0,228,128,0,0,254,255,255,255,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,226,1,2,0,0,0,0,0,229,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,35,0,0,0,235,1,2,0,0,0,0,0,230,128,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,36,0,0,0,246,1,2,0,0,0,0,0,20,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,0,2,2,0,0,0,0,0,21,130,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,1,0,15,2,2,0,0,0,0,0,22,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,31,2,2,0,0,0,0,0,23,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,45,2,2,0,0,0,0,0,24,130,0,0,1,0,1,0,11,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,65,0,1,0,62,2,2,0,0,0,0,0,25,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,83,2,2,0,0,0,0,0,26,130,0,0,16,0,16,0,11,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,1,0,103,2,2,0,0,0,0,0,141,130,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,123,2,2,0,0,0,0,0,142,130,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,239,253,1,0,0,0,0,0,152,130,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,143,2,2,0,0,0,0,0,187,131,0,0,253,255,253,255,4,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,65,0,0,1,153,2,2,0,0,0,0,0,73,134,0,0,253,255,253,255,1,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,166,2,2,0,0,0,0,0,105,135,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,176,2,2,0,100,0,0,0,115,135,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,65,0,0,1,190,2,2,0,0,0,0,0,37,136,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,202,2,2,0,0,0,0,0,92,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,215,2,2,0,0,0,0,0,93,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,229,2,2,0,0,0,0,0,94,136,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,65,0,1,0,243,2,2,0,0,0,0,0,95,136,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,65,0,1,0,255,2,2,0,0,0,0,0,63,146,0,0,1,0,1,0,12,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,6,3,2,0,0,0,0,0,5,160,0,0,1,0,1,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,14,3,2,0,0,0,0,0,18,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,40,3,2,0,0,0,0,0,19,198,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,51,3,2,0,0,0,0,0,20,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,70,3,2,0,0,0,0,0,21,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,88,3,2,0,0,0,0,0,22,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,109,3,2,0,0,0,0,0,23,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,123,3,2,0,0,0,0,0,24,198,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,133,3,2,0,0,0,0,0,25,198,0,0,2,0,2,0,3,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,65,0,0,0,152,3,2,0,0,0,0,0,26,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,172,3,2,0,0,0,0,0,27,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,183,3,2,0,0,0,0,0,28,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,200,3,2,0,0,0,0,0,29,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,217,3,2,0,0,0,0,0,30,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,228,3,2,0,0,0,0,0,92,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,241,3,2,0,0,0,0,0,31,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,2,4,2,0,0,0,0,0,32,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,20,4,2,0,0,0,0,0,33,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,36,4,2,0,0,0,0,0,34,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,49,4,2,0,0,0,0,0,35,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,62,4,2,0,0,0,0,0,36,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,81,4,2,0,0,0,0,0,37,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,100,4,2,0,0,0,0,0,38,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,117,4,2,0,0,0,0,0,39,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,134,4,2,0,0,0,0,0,40,198,0,0,255,255,255,255,5,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,148,4,2,0,0,0,0,0,41,198,0,0,2,0,2,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,162,4,2,0,0,0,0,0,42,198,0,0,1,0,1,0,10,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,176,4,2,0,0,0,0,0,43,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,193,4,2,0,0,0,0,0,44,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,207,4,2,0,0,0,0,0,45,198,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,225,4,2,0,0,0,0,0,46,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,241,4,2,0,0,0,0,0,47,198,0,0,255,255,255,255,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,65,0,1,0,5,5,2,0,0,0,0,0,48,198,0,0,4,0,4,0,5,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,65,0,0,0,24,5,2,0,0,0,0,0,49,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,33,5,2,0,0,0,0,0,50,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,50,5,2,0,0,0,0,0,51,198,0,0,1,0,1,0,5,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,65,0,0,0,68,5,2,0,0,0,0,0,52,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,80,5,2,0,0,0,0,0,53,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,95,5,2,0,0,0,0,0,90,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,111,5,2,0,0,0,0,0,91,198,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,134,5,2,0,0,0,0,0,93,198,0,0,16,0,16,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,157,5,2,0,0,0,0,0,139,198,0,0,255,255,255,255,1,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,1,1,173,5,2,0,0,0,0,0,140,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,193,5,2,0,0,0,0,0,141,198,0,0,4,0,4,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,213,5,2,0,0,0,0,0,142,198,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,224,5,2,0,0,0,0,0,143,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,236,5,2,0,0,0,0,0,144,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,253,5,2,0,0,0,0,0,145,198,0,0,255,255,255,255,7,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,65,0,0,1,20,6,2,0,0,0,0,0,146,198,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,38,6,2,0,0,0,0,0,27,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,62,6,2,0,0,0,0,0,90,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,65,0,0,0,72,6,2,0,0,0,0,0,144,1,0,0,1,0,1,0,18,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,65,0,0,0,80,6,2,0,0,0,0,0,145,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,100,6,2,0,0,0,0,0,146,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,112,6,2,0,0,0,0,0,147,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,123,6,2,0,0,0,0,0,148,1,0,0,4,0,4,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,65,0,0,0,137,6,2,0,0,0,0,0,149,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,65,0,0,0,149,6,2,0,0,0,0,0,177,1,0,0,255,255,255,255,10,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,65,0,0,1,160,6,2,0,0,0,0,0,178,1,0,0,255,255,255,255,3,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,65,0,0,1,167,6,2,0,0,0,0,0,179,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,65,0,0,0,182,6,2,0,0,0,0,0,47,2,0,0,255,255,255,255,4,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,65,0,0,1,193,6,2,0,0,0,0,0,172,135,0,0,2,0,2,0,4,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,65,0,0,0,208,6,2,0,0,0,0,0,0,0,0,0,139,108,79,64,134,201,196,191,128,72,255,190,126,29,120,191,197,32,240,63,195,100,42,61,211,188,99,61,96,229,80,190,199,75,135,63,0,0,200,66,0,0,200,66,0,0,200,66,255,0,0,0,255,0,0,0,255,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,154,153,25,64,154,153,25,64,154,153,25,64,0,0,0,0,1,0,0,0,2,0,0,0,135,22,153,62,162,69,22,63,213,120,233,61,0,0,0,0,0,0,0,0,0,0,0,0,101,44,2,0,1,0,0,0,1,0,0,0,106,44,2,0,5,0,0,0,2,0,0,0,110,44,2,0,5,128,0,0,3,0,0,0,119,44,2,0,41,128,0,0,4,0,0,0,131,44,2,0,254,127,0,0,5,0,0,0,136,44,2,0,7,0,0,0,6,0,0,0,141,44,2,0,6,0,0,0,7,0,0,0,156,44,2,0,2,0,0,0,8,0,0,0,166,44,2,0,3,128,0,0,9,0,0,0,178,44,2,0,3,0,0,0,10,0,0,0,192,44,2,0,4,0,0,0,11,0,0,0,206,44,2,0,101,135,0,0,12,0,0,0,215,44,2,0,178,128,0,0,13,0,0,0,223,44,2,0,8,0,0,0,13,0,0,0,236,44,2,0,141,128,0,0,14,0,0,0,245,44,2,0,116,135,0,0,15,0,0,0,252,44,2,0,117,135,0,0,15,0,0,0,5,45,2,0,109,136,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,3,50,2,0,0,0,0,0,37,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,73,0,0,0,245,49,2,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,168,52,2,0,0,0,0,0,4,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,176,52,2,0,0,0,0,0,70,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,66,0,1,0,188,52,2,0,0,0,0,0,71,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0,1,0,200,52,2,0,0,0,0,0,72,1,0,0,1,0,1,0,4,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,68,0,1,0,213,52,2,0,0,0,0,0,12,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,6,7,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,5,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,7,0,0,3,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,4,6,0,0,2,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,1,4,0,0,0,0,0,0,3,1,0,0,0,0,0,0,5,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,2,3,0,0,0,0,0,0,3,1,0,0,0,0,0,0,4,3,0,0,1,0,0,0,3,1,0,0,0,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,64,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,192,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,0,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,64,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);allocate([9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,128,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,8,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,11,0,0,128,7,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,5,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,192,4,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,192,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,192,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,9,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,64,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,64,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,64,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,0,0,0,0,0,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,39,0,0,0,7,6,0,0,16,0,0,0,9,8,0,0,64,2,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,55,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,45,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,53,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,192,1,0,0,7,4,0,0,6,0,0,0,7,8,0,0,35,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,51,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,63,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,0,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,43,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,0,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,29,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,33,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,49,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,61,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,47,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,59,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,41,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,0,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,31,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,57,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,9,0,0,0,3,0,0,7,4,0,0,6,0,0,0,7,8,0,0,37,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,64,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+30720);allocate([9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,11,12,0,0,0,10,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,7,0,0,20,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,24,0,0,0,7,6,0,0,14,0,0,0,7,7,0,0,28,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,23,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,27,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,40,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,3,0,0,7,4,0,0,6,0,0,0,7,7,0,0,19,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,56,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,46,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,54,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,0,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,36,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,52,0,0,0,7,6,0,0,15,0,0,0,7,8,0,0,0,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,9,9,0,0,192,6,0,0,7,4,0,0,5,0,0,0,7,8,0,0,44,0,0,0,7,6,0,0,17,0,0,0,9,9,0,0,128,5,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,30,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,6,0,0,12,0,0,0,7,5,0,0,9,0,0,0,9,6,0,0,128,6,0,0,7,4,0,0,6,0,0,0,7,8,0,0,34,0,0,0,9,5,0,0,128,0,0,0,7,8,0,0,50,0,0,0,7,6,0,0,14,0,0,0,7,8,0,0,62,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,8,0,0,48,0,0,0,7,4,0,0,3,0,0,0,7,8,0,0,60,0,0,0,7,4,0,0,5,0,0,0,7,8,0,0,42,0,0,0,7,6,0,0,16,0,0,0,9,9,0,0,128,4,0,0,7,4,0,0,6,0,0,0,7,8,0,0,32,0,0,0,7,5,0,0,8,0,0,0,7,8,0,0,58,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,7,0,0,22,0,0,0,7,4,0,0,3,0,0,0,7,5,0,0,11,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,26,0,0,0,7,5,0,0,9,0,0,0,9,8,0,0,128,2,0,0,7,4,0,0,6,0,0,0,7,8,0,0,38,0,0,0,9,5,0,0,128,0,0,0,7,7,0,0,25,0,0,0,7,6,0,0,15,0,0,0,9,8,0,0,128,1,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,7,6,0,0,13,0,0,0,7,4,0,0,3,0,0,0,7,7,0,0,18,0,0,0,7,4,0,0,5,0,0,0,7,7,0,0,21,0,0,0,7,6,0,0,17,0,0,0,9,7,0,0,0,1,0,0,7,4,0,0,6,0,0,0,7,6,0,0,1,0,0,0,7,5,0,0,8,0,0,0,9,6,0,0,192,0,0,0,9,5,0,0,64,0,0,0,7,5,0,0,10,0,0,0,7,4,0,0,4,0,0,0,7,4,0,0,2,0,0,0,7,4,0,0,7,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+40960);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+51200);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,0,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,128,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+61440);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,56,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,30,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,57,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,54,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,52,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,48,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,44,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,36,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,128,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,28,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,60,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,40,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+71680);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,64,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,50,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,34,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,26,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,32,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,61,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,42,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,62,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,46,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,38,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,192,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,12,11,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+81920);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,0,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,23,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,20,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,25,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,5,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,31,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,64,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,58,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,21,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,3,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,2,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,49,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,45,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,37,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,192,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,29,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,64,6,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,41,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,128,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,18,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,17,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,8,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,51,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,35,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,64,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,27,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,59,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,33,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+92160);allocate([8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,11,0,0,128,7,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,12,0,0,0,1,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,43,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,13,0,0,192,4,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,9,0,0,15,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,55,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,63,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,9,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,47,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,39,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,12,0,0,53,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,13,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,19,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,24,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,11,0,0,22,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,11,12,0,0,0,10,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,10,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,16,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,10,0,0,0,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,10,10,0,0,64,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,9,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,11,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,8,0,0,14,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,6,0,0,8,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,7,0,0,12,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,6,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,8,5,0,0,7,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,1,0,0,0,8,2,0,0,2,0,0,0,8,4,0,0,5,0,0,0,8,2,0,0,3,0,0,0,8,3,0,0,4,0,0,0,8,2,0,0,2,0,0,0,91,1,0,0,253,255,253,255,7,0,0,0,0,0,0,0,40,0,0,0,40,0,0,0,66,0,0,1,140,60,2,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,39,96,2,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,39,96,2,0,0,0,0,0,3,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,39,96,2,0,0,0,0,0,95,155,125,62,4,0,0,0,52,161,121,62,6,0,4,0,3,124,119,62,7,0,10,0,62,149,115,62,9,0,17,0,88,145,113,62,10,0,26,0,132,185,109,62,12,0,36,0,27,213,105,62,14,0,48,0,112,176,103,62,15,0,62,0,57,181,99,62,17,0,77,0,41,179,97,62,18,0,94,0,240,220,91,62,21,0,112,0,179,209,89,62,22,0,133,0,63,199,87,62,23,0,155,0,59,229,81,62,26,0,178,0,144,219,79,62,27,0,204,0,226,6,76,62,29,0,231,0,181,55,72,62,31,0,4,1,152,52,70,62,32,0,35,1,97,111,66,62,34,0,67,1,104,175,62,62,36,0,101,1,104,175,62,62,36,0,137,1,102,249,58,62,38,0,173,1,144,76,55,62,40,0,211,1,92,173,51,62,42,0,251,1,8,33,48,62,44,0,37,2,8,33,48,62,44,0,81,2,160,168,44,62,46,0,125,2,160,168,44,62,46,0,171,2,52,128,39,62,49,0,217,2,12,115,34,62,52,0,10,3,12,115,34,62,52,0,62,3,12,115,34,62,52,0,114,3,174,129,29,62,55,0,166,3,174,129,29,62,55,0,221,3,226,172,24,62,58,0,20,4,226,172,24,62,58,0,78,4,2,44,18,62,62,0,136,4,2,44,18,62,62,0,198,4,2,44,18,62,62,0,4,5,167,150,13,62,65,0,66,5,167,150,13,62,65,0,131,5,167,150,13,62,65,0,196,5,134,86,7,62,69,0,5,6,134,86,7,62,69,0,74,6,159,59,1,62,73,0,143,6,159,59,1,62,73,0,216,6,159,59,1,62,73,0,33,7,80,138,246,61,77,0,106,7,80,138,246,61,77,0,183,7,80,138,246,61,77,0,4,8,80,138,246,61,77,0,81,8,159,88,231,61,82,0,158,8,159,88,231,61,82,0,240,8,159,88,231,61,82,0,66,9,191,14,220,61,86,0,148,9,191,14,220,61,86,0,234,9,191,14,220,61,86,0,64,10,191,14,220,61,86,0,150,10,161,128,205,61,91,0,236,10,161,128,205,61,91,0,71,11,161,128,205,61,91,0,162,11,108,209,194,61,95,0,253,11,108,209,194,61,95,0,92,12,108,209,194,61,95,0,187,12,108,209,194,61,95,0,26,13,12,202,180,61,100,0,121,13,12,202,180,61,100,0,221,13,12,202,180,61,100,0,65,14,12,202,180,61,100,0,165,14,136,245,166,61,105,0,9,15,136,245,166,61,105,0,114,15,136,245,166,61,105,0,219,15,136,245,166,61,105,0,68,16,185,80,153,61,110,0,173,16,185,80,153,61,110,0,27,17,185,80,153,61,110,0,137,17,185,80,153,61,110,0,247,17,161,219,139,61,115,0,101,18,161,219,139,61,115,0,216,18,161,219,139,61,115,0,75,19,161,219,139,61,115,0,190,19,144,50,130,61,119,0,49,20,144,50,130,61,119,0,168,20,144,50,130,61,119,0,31,21,144,50,130,61,119,0,150,21,120,94,106,61,124,0,13,22,120,94,106,61,124,0,137,22,120,94,106,61,124,0,5,23,120,94,106,61,124,0,129,23,166,213,80,61,129,0,253,23,166,213,80,61,129,0,126,24,166,213,80,61,129,0,255,24,166,213,80,61,129,0,128,25,166,213,80,61,129,0,1,26,18,190,55,61,134,0,130,26,18,190,55,61,134,0,8,27,18,190,55,61,134,0,142,27,18,190,55,61,134,0,20,28,199,45,38,61,138,0,154,28,199,45,38,61,138,0,36,29,199,45,38,61,138,0,174,29,199,45,38,61,138,0,56,30,52,216,20,61,142,0,194,30,52,216,20,61,142,0,80,31,52,216,20,61,142,0,222,31,52,216,20,61,142,0,108,32,47,164,3,61,146,0,250,32,47,164,3,61,146,0,140,33,47,164,3,61,146,0,30,34,47,164,3,61,146,0,176,34,27,241,228,60,150,0,66,35,27,241,228,60,150,0,216,35,27,241,228,60,150,0,110,36,75,120,194,60,154,0,4,37,75,120,194,60,154,0,158,37,75,120,194,60,154,0,56,38,75,120,194,60,154,0,210,38,218,198,159,60,158,0,108,39,218,198,159,60,158,0,10,40,218,198,159,60,158,0,168,40,65,17,139,60,161,0,70,41,65,17,139,60,161,0,231,41,65,17,139,60,161,0,136,42,65,17,139,60,161,0,41,43,207,19,79,60,165,0,202,43,207,19,79,60,165,0,111,44,207,19,79,60,165,0,20,45,75,177,35,60,168,0,185,45,75,177,35,60,168,0,97,46,75,177,35,60,168,0,9,47,216,183,19,60,170,0,177,47,216,183,19,60,170,0,91,48,216,183,19,60,170,0,5,49,250,183,203,59,173,0,175,49,250,183,203,59,173,0,92,50,188,4,167,59,175,0,9,51,188,4,167,59,175,0,184,51,188,4,167,59,175,0,103,52,18,23,128,59,177,0,22,53,18,23,128,59,177,0,199,53,175,90,25,59,177,0,120,54,197,144,28,59,170,0,41,55,34,252,139,58,164,0,211,55,122,169,216,58,157,0,119,56,14,245,59,58,150,0,20,57,218,140,211,58,143,0,170,57,201,142,141,57,136,0,57,58,97,193,253,57,129,0,193,58,138,146,144,58,123,0,66,59,155,202,162,58,115,0,189,59,170,182,155,58,109,0,48,60,136,131,132,58,103,0,157,60,47,220,57,58,97,0,4,61,137,207,157,57,89,0,101,61,193,85,30,59,82,0,190,61,187,14,85,59,76,0,16,62,216,186,84,59,69,0,92,62,58,177,135,59,62,0,161,62,69,101,195,59,55,0,223,62,116,209,16,60,47,0,22,63,64,222,43,60,40,0,69,63,0,55,139,60,31,0,109,63,133,208,193,60,21,0,140,63,24,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,173,64,2,0,0,0,0,0,25,0,1,0,0,0,0,0,3,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,187,64,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,66,0,1,0,190,81,2,0,0,0,0,0,2,2,0,0,1,0,1,0,16,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,67,0,1,0,212,81,2,0,0,0,0,0,7,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,68,0,0,1,240,81,2,0,0,0,0,0,8,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,69,0,0,1,252,81,2,0,0,0,0,0,9,2,0,0,253,255,253,255,16,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,70,0,0,1,9,82,2,0,0,0,0,0,0,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,71,0,0,0,22,82,2,0,0,0,0,0,3,2,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,72,0,0,0,31,82,2,0,0,0,0,0,13,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,39,96,2,0,0,0,0,0,22,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,39,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,1,0,0,1,0,1,0,3,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,66,0,0,0,166,88,2,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,253,255,255,255,254,255,255,255,255,255,255,255,21,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,1,0,39,96,2,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,4,0,4,0,8,0,4,0,17,0,0,0,4,0,5,0,16,0,8,0,17,0,0,0,4,0,6,0,32,0,32,0,17,0,0,0,4,0,4,0,16,0,16,0,18,0,0,0,8,0,16,0,32,0,32,0,18,0,0,0,8,0,16,0,128,0,128,0,18,0,0,0,8,0,32,0,128,0,0,1,18,0,0,0,32,0,128,0,2,1,0,4,18,0,0,0,32,0,2,1,2,1,0,16,18,0,0,0,48,242,1,0,88,174,1,0,1,1,0,0,30,1,0,0,15,0,0,0,176,246,1,0,64,175,1,0,0,0,0,0,30,0,0,0,15,0,0,0,0,0,0,0,48,176,1,0,0,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,16,0,0,0,20,0,0,0,24,0,0,0,28,0,0,0,32,0,0,0,40,0,0,0,48,0,0,0,56,0,0,0,64,0,0,0,80,0,0,0,96,0,0,0,112,0,0,0,128,0,0,0,160,0,0,0,192,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,128,0,0,0,192,0,0,0,0,1,0,0,128,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,24,0,0,0,32,0,0,0,48,0,0,0,64,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,7,0,0,0,12,96,2,0,28,96,2,0,39,96,2,0,40,96,2,0,51,96,2,0,64,96,2,0,75,96,2,0,95,96,2,0,108,96,2,0,39,96,2,0,0,0,0,0,150,48,7,119,44,97,14,238,186,81,9,153,25,196,109,7,143,244,106,112,53,165,99,233,163,149,100,158,50,136,219,14,164,184,220,121,30,233,213,224,136,217,210,151,43,76,182,9,189,124,177,126,7,45,184,231,145,29,191,144,100,16,183,29,242,32,176,106,72,113,185,243,222,65,190,132,125,212,218,26,235,228,221,109,81,181,212,244,199,133,211,131,86,152,108,19,192,168,107,100,122,249,98,253,236,201,101,138,79,92,1,20,217,108,6,99,99,61,15,250,245,13,8,141,200,32,110,59,94,16,105,76,228,65,96,213,114,113,103,162,209,228,3,60,71,212,4,75,253,133,13,210,107,181,10,165,250,168,181,53,108,152,178,66,214,201,187,219,64,249,188,172,227,108,216,50,117,92,223,69,207,13,214,220,89,61,209,171,172,48,217,38,58,0,222,81,128,81,215,200,22,97,208,191,181,244,180,33,35,196,179,86,153,149,186,207,15,165,189,184,158,184,2,40,8,136,5,95,178,217,12,198,36,233,11,177,135,124,111,47,17,76,104,88,171,29,97,193,61,45,102,182,144,65,220,118,6,113,219,1,188,32,210,152,42,16,213,239,137,133,177,113,31,181,182,6,165,228,191,159,51,212,184,232,162,201,7,120,52,249,0,15,142,168,9,150,24,152,14,225,187,13,106,127,45,61,109,8,151,108,100,145,1,92,99,230,244,81,107,107,98,97,108,28,216,48,101,133,78,0,98,242,237,149,6,108,123,165,1,27,193,244,8,130,87,196,15,245,198,217,176,101,80,233,183,18,234,184,190,139,124,136,185,252,223,29,221,98,73,45,218,21,243,124,211,140,101,76,212,251,88,97,178,77,206,81,181,58,116,0,188,163,226,48,187,212,65,165,223,74,215,149,216,61,109,196,209,164,251,244,214,211,106,233,105,67,252,217,110,52,70,136,103,173,208,184,96,218,115,45,4,68,229,29,3,51,95,76,10,170,201,124,13,221,60,113,5,80,170,65,2,39,16,16,11,190,134,32,12,201,37,181,104,87,179,133,111,32,9,212,102,185,159,228,97,206,14,249,222,94,152,201,217,41,34,152,208,176,180,168,215,199,23,61,179,89,129,13,180,46,59,92,189,183,173,108,186,192,32,131,184,237,182,179,191,154,12,226,182,3,154,210,177,116,57,71,213,234,175,119,210,157,21,38,219,4,131,22,220,115,18,11,99,227,132,59,100,148,62,106,109,13,168,90,106,122,11,207,14,228,157,255,9,147,39,174,0,10,177,158,7,125,68,147,15,240,210,163,8,135,104,242,1,30,254,194,6,105,93,87,98,247,203,103,101,128,113,54,108,25,231,6,107,110,118,27,212,254,224,43,211,137,90,122,218,16,204,74,221,103,111,223,185,249,249,239,190,142,67,190,183,23,213,142,176,96,232,163,214,214,126,147,209,161,196,194,216,56,82,242,223,79,241,103,187,209,103,87,188,166,221,6,181,63,75,54,178,72,218,43,13,216,76,27,10,175,246,74,3,54,96,122,4,65,195,239,96,223,85,223,103,168,239,142,110,49,121,190,105,70,140,179,97,203,26,131,102,188,160,210,111,37,54,226,104,82,149,119,12,204,3,71,11,187,185,22,2,34,47,38,5,85,190,59,186,197,40,11,189,178,146,90,180,43,4,106,179,92,167,255,215,194,49,207,208,181,139,158,217,44,29,174,222,91,176,194,100,155,38,242,99,236,156,163,106,117,10,147,109,2,169,6,9,156,63,54,14,235,133,103,7,114,19,87,0,5,130,74,191,149,20,122,184,226,174,43,177,123,56,27,182,12,155,142,210,146,13,190,213,229,183,239,220,124,33,223,219,11,212,210,211,134,66,226,212,241,248,179,221,104,110,131,218,31,205,22,190,129,91,38,185,246,225,119,176,111,119,71,183,24,230,90,8,136,112,106,15,255,202,59,6,102,92,11,1,17,255,158,101,143,105,174,98,248,211,255,107,97,69,207,108,22,120,226,10,160,238,210,13,215,84,131,4,78,194,179,3,57,97,38,103,167,247,22,96,208,77,71,105,73,219,119,110,62,74,106,209,174,220,90,214,217,102,11,223,64,240,59,216,55,83,174,188,169,197,158,187,222,127,207,178,71,233,255,181,48,28,242,189,189,138,194,186,202,48,147,179,83,166,163,180,36,5,54,208,186,147,6,215,205,41,87,222,84,191,103,217,35,46,122,102,179,184,74,97,196,2,27,104,93,148,43,111,42,55,190,11,180,161,142,12,195,27,223,5,90,141,239,2,45,0,0,0,0,65,49,27,25,130,98,54,50,195,83,45,43,4,197,108,100,69,244,119,125,134,167,90,86,199,150,65,79,8,138,217,200,73,187,194,209,138,232,239,250,203,217,244,227,12,79,181,172,77,126,174,181,142,45,131,158,207,28,152,135,81,18,194,74,16,35,217,83,211,112,244,120,146,65,239,97,85,215,174,46,20,230,181,55,215,181,152,28,150,132,131,5,89,152,27,130,24,169,0,155,219,250,45,176,154,203,54,169,93,93,119,230,28,108,108,255,223,63,65,212,158,14,90,205,162,36,132,149,227,21,159,140,32,70,178,167,97,119,169,190,166,225,232,241,231,208,243,232,36,131,222,195,101,178,197,218,170,174,93,93,235,159,70,68,40,204,107,111,105,253,112,118,174,107,49,57,239,90,42,32,44,9,7,11,109,56,28,18,243,54,70,223,178,7,93,198,113,84,112,237,48,101,107,244,247,243,42,187,182,194,49,162,117,145,28,137,52,160,7,144,251,188,159,23,186,141,132,14,121,222,169,37,56,239,178,60,255,121,243,115,190,72,232,106,125,27,197,65,60,42,222,88,5,79,121,240,68,126,98,233,135,45,79,194,198,28,84,219,1,138,21,148,64,187,14,141,131,232,35,166,194,217,56,191,13,197,160,56,76,244,187,33,143,167,150,10,206,150,141,19,9,0,204,92,72,49,215,69,139,98,250,110,202,83,225,119,84,93,187,186,21,108,160,163,214,63,141,136,151,14,150,145,80,152,215,222,17,169,204,199,210,250,225,236,147,203,250,245,92,215,98,114,29,230,121,107,222,181,84,64,159,132,79,89,88,18,14,22,25,35,21,15,218,112,56,36,155,65,35,61,167,107,253,101,230,90,230,124,37,9,203,87,100,56,208,78,163,174,145,1,226,159,138,24,33,204,167,51,96,253,188,42,175,225,36,173,238,208,63,180,45,131,18,159,108,178,9,134,171,36,72,201,234,21,83,208,41,70,126,251,104,119,101,226,246,121,63,47,183,72,36,54,116,27,9,29,53,42,18,4,242,188,83,75,179,141,72,82,112,222,101,121,49,239,126,96,254,243,230,231,191,194,253,254,124,145,208,213,61,160,203,204,250,54,138,131,187,7,145,154,120,84,188,177,57,101,167,168,75,152,131,59,10,169,152,34,201,250,181,9,136,203,174,16,79,93,239,95,14,108,244,70,205,63,217,109,140,14,194,116,67,18,90,243,2,35,65,234,193,112,108,193,128,65,119,216,71,215,54,151,6,230,45,142,197,181,0,165,132,132,27,188,26,138,65,113,91,187,90,104,152,232,119,67,217,217,108,90,30,79,45,21,95,126,54,12,156,45,27,39,221,28,0,62,18,0,152,185,83,49,131,160,144,98,174,139,209,83,181,146,22,197,244,221,87,244,239,196,148,167,194,239,213,150,217,246,233,188,7,174,168,141,28,183,107,222,49,156,42,239,42,133,237,121,107,202,172,72,112,211,111,27,93,248,46,42,70,225,225,54,222,102,160,7,197,127,99,84,232,84,34,101,243,77,229,243,178,2,164,194,169,27,103,145,132,48,38,160,159,41,184,174,197,228,249,159,222,253,58,204,243,214,123,253,232,207,188,107,169,128,253,90,178,153,62,9,159,178,127,56,132,171,176,36,28,44,241,21,7,53,50,70,42,30,115,119,49,7,180,225,112,72,245,208,107,81,54,131,70,122,119,178,93,99,78,215,250,203,15,230,225,210,204,181,204,249,141,132,215,224,74,18,150,175,11,35,141,182,200,112,160,157,137,65,187,132,70,93,35,3,7,108,56,26,196,63,21,49,133,14,14,40,66,152,79,103,3,169,84,126,192,250,121,85,129,203,98,76,31,197,56,129,94,244,35,152,157,167,14,179,220,150,21,170,27,0,84,229,90,49,79,252,153,98,98,215,216,83,121,206,23,79,225,73],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+102400);allocate([86,126,250,80,149,45,215,123,212,28,204,98,19,138,141,45,82,187,150,52,145,232,187,31,208,217,160,6,236,243,126,94,173,194,101,71,110,145,72,108,47,160,83,117,232,54,18,58,169,7,9,35,106,84,36,8,43,101,63,17,228,121,167,150,165,72,188,143,102,27,145,164,39,42,138,189,224,188,203,242,161,141,208,235,98,222,253,192,35,239,230,217,189,225,188,20,252,208,167,13,63,131,138,38,126,178,145,63,185,36,208,112,248,21,203,105,59,70,230,66,122,119,253,91,181,107,101,220,244,90,126,197,55,9,83,238,118,56,72,247,177,174,9,184,240,159,18,161,51,204,63,138,114,253,36,147,0,0,0,0,55,106,194,1,110,212,132,3,89,190,70,2,220,168,9,7,235,194,203,6,178,124,141,4,133,22,79,5,184,81,19,14,143,59,209,15,214,133,151,13,225,239,85,12,100,249,26,9,83,147,216,8,10,45,158,10,61,71,92,11,112,163,38,28,71,201,228,29,30,119,162,31,41,29,96,30,172,11,47,27,155,97,237,26,194,223,171,24,245,181,105,25,200,242,53,18,255,152,247,19,166,38,177,17,145,76,115,16,20,90,60,21,35,48,254,20,122,142,184,22,77,228,122,23,224,70,77,56,215,44,143,57,142,146,201,59,185,248,11,58,60,238,68,63,11,132,134,62,82,58,192,60,101,80,2,61,88,23,94,54,111,125,156,55,54,195,218,53,1,169,24,52,132,191,87,49,179,213,149,48,234,107,211,50,221,1,17,51,144,229,107,36,167,143,169,37,254,49,239,39,201,91,45,38,76,77,98,35,123,39,160,34,34,153,230,32,21,243,36,33,40,180,120,42,31,222,186,43,70,96,252,41,113,10,62,40,244,28,113,45,195,118,179,44,154,200,245,46,173,162,55,47,192,141,154,112,247,231,88,113,174,89,30,115,153,51,220,114,28,37,147,119,43,79,81,118,114,241,23,116,69,155,213,117,120,220,137,126,79,182,75,127,22,8,13,125,33,98,207,124,164,116,128,121,147,30,66,120,202,160,4,122,253,202,198,123,176,46,188,108,135,68,126,109,222,250,56,111,233,144,250,110,108,134,181,107,91,236,119,106,2,82,49,104,53,56,243,105,8,127,175,98,63,21,109,99,102,171,43,97,81,193,233,96,212,215,166,101,227,189,100,100,186,3,34,102,141,105,224,103,32,203,215,72,23,161,21,73,78,31,83,75,121,117,145,74,252,99,222,79,203,9,28,78,146,183,90,76,165,221,152,77,152,154,196,70,175,240,6,71,246,78,64,69,193,36,130,68,68,50,205,65,115,88,15,64,42,230,73,66,29,140,139,67,80,104,241,84,103,2,51,85,62,188,117,87,9,214,183,86,140,192,248,83,187,170,58,82,226,20,124,80,213,126,190,81,232,57,226,90,223,83,32,91,134,237,102,89,177,135,164,88,52,145,235,93,3,251,41,92,90,69,111,94,109,47,173,95,128,27,53,225,183,113,247,224,238,207,177,226,217,165,115,227,92,179,60,230,107,217,254,231,50,103,184,229,5,13,122,228,56,74,38,239,15,32,228,238,86,158,162,236,97,244,96,237,228,226,47,232,211,136,237,233,138,54,171,235,189,92,105,234,240,184,19,253,199,210,209,252,158,108,151,254,169,6,85,255,44,16,26,250,27,122,216,251,66,196,158,249,117,174,92,248,72,233,0,243,127,131,194,242,38,61,132,240,17,87,70,241,148,65,9,244,163,43,203,245,250,149,141,247,205,255,79,246,96,93,120,217,87,55,186,216,14,137,252,218,57,227,62,219,188,245,113,222,139,159,179,223,210,33,245,221,229,75,55,220,216,12,107,215,239,102,169,214,182,216,239,212,129,178,45,213,4,164,98,208,51,206,160,209,106,112,230,211,93,26,36,210,16,254,94,197,39,148,156,196,126,42,218,198,73,64,24,199,204,86,87,194,251,60,149,195,162,130,211,193,149,232,17,192,168,175,77,203,159,197,143,202,198,123,201,200,241,17,11,201,116,7,68,204,67,109,134,205,26,211,192,207,45,185,2,206,64,150,175,145,119,252,109,144,46,66,43,146,25,40,233,147,156,62,166,150,171,84,100,151,242,234,34,149,197,128,224,148,248,199,188,159,207,173,126,158,150,19,56,156,161,121,250,157,36,111,181,152,19,5,119,153,74,187,49,155,125,209,243,154,48,53,137,141,7,95,75,140,94,225,13,142,105,139,207,143,236,157,128,138,219,247,66,139,130,73,4,137,181,35,198,136,136,100,154,131,191,14,88,130,230,176,30,128,209,218,220,129,84,204,147,132,99,166,81,133,58,24,23,135,13,114,213,134,160,208,226,169,151,186,32,168,206,4,102,170,249,110,164,171,124,120,235,174,75,18,41,175,18,172,111,173,37,198,173,172,24,129,241,167,47,235,51,166,118,85,117,164,65,63,183,165,196,41,248,160,243,67,58,161,170,253,124,163,157,151,190,162,208,115,196,181,231,25,6,180,190,167,64,182,137,205,130,183,12,219,205,178,59,177,15,179,98,15,73,177,85,101,139,176,104,34,215,187,95,72,21,186,6,246,83,184,49,156,145,185,180,138,222,188,131,224,28,189,218,94,90,191,237,52,152,190,0,0,0,0,101,103,188,184,139,200,9,170,238,175,181,18,87,151,98,143,50,240,222,55,220,95,107,37,185,56,215,157,239,40,180,197,138,79,8,125,100,224,189,111,1,135,1,215,184,191,214,74,221,216,106,242,51,119,223,224,86,16,99,88,159,87,25,80,250,48,165,232,20,159,16,250,113,248,172,66,200,192,123,223,173,167,199,103,67,8,114,117,38,111,206,205,112,127,173,149,21,24,17,45,251,183,164,63,158,208,24,135,39,232,207,26,66,143,115,162,172,32,198,176,201,71,122,8,62,175,50,160,91,200,142,24,181,103,59,10,208,0,135,178,105,56,80,47,12,95,236,151,226,240,89,133,135,151,229,61,209,135,134,101,180,224,58,221,90,79,143,207,63,40,51,119,134,16,228,234,227,119,88,82,13,216,237,64,104,191,81,248,161,248,43,240,196,159,151,72,42,48,34,90,79,87,158,226,246,111,73,127,147,8,245,199,125,167,64,213,24,192,252,109,78,208,159,53,43,183,35,141,197,24,150,159,160,127,42,39,25,71,253,186,124,32,65,2,146,143,244,16,247,232,72,168,61,88,20,155,88,63,168,35,182,144,29,49,211,247,161,137,106,207,118,20,15,168,202,172,225,7,127,190,132,96,195,6,210,112,160,94,183,23,28,230,89,184,169,244,60,223,21,76,133,231,194,209,224,128,126,105,14,47,203,123,107,72,119,195,162,15,13,203,199,104,177,115,41,199,4,97,76,160,184,217,245,152,111,68,144,255,211,252,126,80,102,238,27,55,218,86,77,39,185,14,40,64,5,182,198,239,176,164,163,136,12,28,26,176,219,129,127,215,103,57,145,120,210,43,244,31,110,147,3,247,38,59,102,144,154,131,136,63,47,145,237,88,147,41,84,96,68,180,49,7,248,12,223,168,77,30,186,207,241,166,236,223,146,254,137,184,46,70,103,23,155,84,2,112,39,236,187,72,240,113,222,47,76,201,48,128,249,219,85,231,69,99,156,160,63,107,249,199,131,211,23,104,54,193,114,15,138,121,203,55,93,228,174,80,225,92,64,255,84,78,37,152,232,246,115,136,139,174,22,239,55,22,248,64,130,4,157,39,62,188,36,31,233,33,65,120,85,153,175,215,224,139,202,176,92,51,59,182,89,237,94,209,229,85,176,126,80,71,213,25,236,255,108,33,59,98,9,70,135,218,231,233,50,200,130,142,142,112,212,158,237,40,177,249,81,144,95,86,228,130,58,49,88,58,131,9,143,167,230,110,51,31,8,193,134,13,109,166,58,181,164,225,64,189,193,134,252,5,47,41,73,23,74,78,245,175,243,118,34,50,150,17,158,138,120,190,43,152,29,217,151,32,75,201,244,120,46,174,72,192,192,1,253,210,165,102,65,106,28,94,150,247,121,57,42,79,151,150,159,93,242,241,35,229,5,25,107,77,96,126,215,245,142,209,98,231,235,182,222,95,82,142,9,194,55,233,181,122,217,70,0,104,188,33,188,208,234,49,223,136,143,86,99,48,97,249,214,34,4,158,106,154,189,166,189,7,216,193,1,191,54,110,180,173,83,9,8,21,154,78,114,29,255,41,206,165,17,134,123,183,116,225,199,15,205,217,16,146,168,190,172,42,70,17,25,56,35,118,165,128,117,102,198,216,16,1,122,96,254,174,207,114,155,201,115,202,34,241,164,87,71,150,24,239,169,57,173,253,204,94,17,69,6,238,77,118,99,137,241,206,141,38,68,220,232,65,248,100,81,121,47,249,52,30,147,65,218,177,38,83,191,214,154,235,233,198,249,179,140,161,69,11,98,14,240,25,7,105,76,161,190,81,155,60,219,54,39,132,53,153,146,150,80,254,46,46,153,185,84,38,252,222,232,158,18,113,93,140,119,22,225,52,206,46,54,169,171,73,138,17,69,230,63,3,32,129,131,187,118,145,224,227,19,246,92,91,253,89,233,73,152,62,85,241,33,6,130,108,68,97,62,212,170,206,139,198,207,169,55,126,56,65,127,214,93,38,195,110,179,137,118,124,214,238,202,196,111,214,29,89,10,177,161,225,228,30,20,243,129,121,168,75,215,105,203,19,178,14,119,171,92,161,194,185,57,198,126,1,128,254,169,156,229,153,21,36,11,54,160,54,110,81,28,142,167,22,102,134,194,113,218,62,44,222,111,44,73,185,211,148,240,129,4,9,149,230,184,177,123,73,13,163,30,46,177,27,72,62,210,67,45,89,110,251,195,246,219,233,166,145,103,81,31,169,176,204,122,206,12,116,148,97,185,102,241,6,5,222,0,0,0,0,119,7,48,150,238,14,97,44,153,9,81,186,7,109,196,25,112,106,244,143,233,99,165,53,158,100,149,163,14,219,136,50,121,220,184,164,224,213,233,30,151,210,217,136,9,182,76,43,126,177,124,189,231,184,45,7,144,191,29,145,29,183,16,100,106,176,32,242,243,185,113,72,132,190,65,222,26,218,212,125,109,221,228,235,244,212,181,81,131,211,133,199,19,108,152,86,100,107,168,192,253,98,249,122,138,101,201,236,20,1,92,79,99,6,108,217,250,15,61,99,141,8,13,245,59,110,32,200,76,105,16,94,213,96,65,228,162,103,113,114,60,3,228,209,75,4,212,71,210,13,133,253,165,10,181,107,53,181,168,250,66,178,152,108,219,187,201,214,172,188,249,64,50,216,108,227,69,223,92,117,220,214,13,207,171,209,61,89,38,217,48,172,81,222,0,58,200,215,81,128,191,208,97,22,33,180,244,181,86,179,196,35,207,186,149,153,184,189,165,15,40,2,184,158,95,5,136,8,198,12,217,178,177,11,233,36,47,111,124,135,88,104,76,17,193,97,29,171,182,102,45,61,118,220,65,144,1,219,113,6,152,210,32,188,239,213,16,42,113,177,133,137,6,182,181,31,159,191,228,165,232,184,212,51,120,7,201,162,15,0,249,52,150,9,168,142,225,14,152,24,127,106,13,187,8,109,61,45,145,100,108,151,230,99,92,1,107,107,81,244,28,108,97,98,133,101,48,216,242,98,0,78,108,6,149,237,27,1,165,123,130,8,244,193,245,15,196,87,101,176,217,198,18,183,233,80,139,190,184,234,252,185,136,124,98,221,29,223,21,218,45,73,140,211,124,243,251,212,76,101,77,178,97,88,58,181,81,206,163,188,0,116,212,187,48,226,74,223,165,65,61,216,149,215,164,209,196,109,211,214,244,251,67,105,233,106,52,110,217,252,173,103,136,70,218,96,184,208,68,4,45,115,51,3,29,229,170,10,76,95,221,13,124,201,80,5,113,60,39,2,65,170,190,11,16,16,201,12,32,134,87,104,181,37,32,111,133,179,185,102,212,9,206,97,228,159,94,222,249,14,41,217,201,152,176,208,152,34,199,215,168,180,89,179,61,23,46,180,13,129,183,189,92,59,192,186,108,173,237,184,131,32,154,191,179,182,3,182,226,12,116,177,210,154,234,213,71,57,157,210,119,175,4,219,38,21,115,220,22,131,227,99,11,18,148,100,59,132,13,109,106,62,122,106,90,168,228,14,207,11,147,9,255,157,10,0,174,39,125,7,158,177,240,15,147,68,135,8,163,210,30,1,242,104,105,6,194,254,247,98,87,93,128,101,103,203,25,108,54,113,110,107,6,231,254,212,27,118,137,211,43,224,16,218,122,90,103,221,74,204,249,185,223,111,142,190,239,249,23,183,190,67,96,176,142,213,214,214,163,232,161,209,147,126,56,216,194,196,79,223,242,82,209,187,103,241,166,188,87,103,63,181,6,221,72,178,54,75,216,13,43,218,175,10,27,76,54,3,74,246,65,4,122,96,223,96,239,195,168,103,223,85,49,110,142,239,70,105,190,121,203,97,179,140,188,102,131,26,37,111,210,160,82,104,226,54,204,12,119,149,187,11,71,3,34,2,22,185,85,5,38,47,197,186,59,190,178,189,11,40,43,180,90,146,92,179,106,4,194,215,255,167,181,208,207,49,44,217,158,139,91,222,174,29,155,100,194,176,236,99,242,38,117,106,163,156,2,109,147,10,156,9,6,169,235,14,54,63,114,7,103,133,5,0,87,19,149,191,74,130,226,184,122,20,123,177,43,174,12,182,27,56,146,210,142,155,229,213,190,13,124,220,239,183,11,219,223,33,134,211,210,212,241,212,226,66,104,221,179,248,31,218,131,110,129,190,22,205,246,185,38,91,111,176,119,225,24,183,71,119,136,8,90,230,255,15,106,112,102,6,59,202,17,1,11,92,143,101,158,255,248,98,174,105,97,107,255,211,22,108,207,69,160,10,226,120,215,13,210,238,78,4,131,84,57,3,179,194,167,103,38,97,208,96,22,247,73,105,71,77,62,110,119,219,174,209,106,74,217,214,90,220,64,223,11,102,55,216,59,240,169,188,174,83,222,187,158,197,71,178,207,127,48,181,255,233,189,189,242,28,202,186,194,138,83,179,147,48,36,180,163,166,186,208,54,5,205,215,6,147,84,222,87,41,35,217,103,191,179,102,122,46,196,97,74,184,93,104,27,2,42,111,43,148,180,11,190,55,195,12,142,161,90,5,223,27,45,2,239,141,0,0,0,0,25,27,49,65,50,54,98,130,43,45,83,195,100,108,197,4,125,119,244,69,86,90,167,134,79,65,150,199,200,217,138,8,209,194,187,73,250,239,232,138,227,244,217,203,172,181,79,12,181,174,126,77,158,131,45,142,135,152,28,207,74,194,18,81,83,217,35,16,120,244,112,211,97,239,65,146,46,174,215,85,55,181,230,20,28,152,181,215,5,131,132,150,130,27,152,89,155,0,169,24,176,45,250,219,169,54,203,154,230,119,93,93,255,108,108,28,212,65,63,223,205,90,14,158,149,132,36,162,140,159,21,227,167,178,70,32,190,169,119,97,241,232,225,166,232,243,208,231,195,222,131,36,218,197,178,101,93,93,174,170,68,70,159,235,111,107,204,40,118,112,253,105,57,49,107,174,32,42,90,239,11,7,9,44,18,28,56,109,223,70,54,243,198,93,7,178,237,112,84,113,244,107,101,48,187,42,243,247,162,49,194,182,137,28,145,117,144,7,160,52,23,159,188,251,14,132,141,186,37,169,222,121,60,178,239,56,115,243,121,255,106,232,72,190,65,197,27,125,88,222,42,60,240,121,79,5,233,98,126,68,194,79,45,135,219,84,28,198,148,21,138,1,141,14,187,64,166,35,232,131,191,56,217,194,56,160,197,13,33,187,244,76,10,150,167,143,19,141,150,206,92,204,0,9,69,215,49,72,110,250,98,139,119,225,83,202,186,187,93,84,163,160,108,21,136,141,63,214,145,150,14,151,222,215,152,80,199,204,169,17,236,225,250,210,245,250,203,147,114,98,215,92,107,121,230,29,64,84,181,222,89,79,132,159,22,14,18,88,15,21,35,25,36,56,112,218,61,35,65,155,101,253,107,167,124,230,90,230,87,203,9,37,78,208,56,100,1,145,174,163,24,138,159,226,51,167,204,33,42,188,253,96,173,36,225,175,180,63,208,238,159,18,131,45,134,9,178,108,201,72,36,171,208,83,21,234,251,126,70,41,226,101,119,104,47,63,121,246,54,36,72,183,29,9,27,116,4,18,42,53,75,83,188,242,82,72,141,179,121,101,222,112,96,126,239,49,231,230,243,254,254,253,194,191,213,208,145,124,204,203,160,61,131,138,54,250,154,145,7,187,177,188,84,120,168,167,101,57,59,131,152,75,34,152,169,10,9,181,250,201,16,174,203,136,95,239,93,79,70,244,108,14,109,217,63,205,116,194,14,140,243,90,18,67,234,65,35,2,193,108,112,193,216,119,65,128,151,54,215,71,142,45,230,6,165,0,181,197,188,27,132,132,113,65,138,26,104,90,187,91,67,119,232,152,90,108,217,217,21,45,79,30,12,54,126,95,39,27,45,156,62,0,28,221,185,152,0,18,160,131,49,83,139,174,98,144,146,181,83,209,221,244,197,22,196,239,244,87,239,194,167,148,246,217,150,213,174,7,188,233,183,28,141,168,156,49,222,107,133,42,239,42,202,107,121,237,211,112,72,172,248,93,27,111,225,70,42,46,102,222,54,225,127,197,7,160,84,232,84,99,77,243,101,34,2,178,243,229,27,169,194,164,48,132,145,103,41,159,160,38,228,197,174,184,253,222,159,249,214,243,204,58,207,232,253,123,128,169,107,188,153,178,90,253,178,159,9,62,171,132,56,127,44,28,36,176,53,7,21,241,30,42,70,50,7,49,119,115,72,112,225,180,81,107,208,245,122,70,131,54,99,93,178,119,203,250,215,78,210,225,230,15,249,204,181,204,224,215,132,141,175,150,18,74,182,141,35,11,157,160,112,200,132,187,65,137,3,35,93,70,26,56,108,7,49,21,63,196,40,14,14,133,103,79,152,66,126,84,169,3,85,121,250,192,76,98,203,129,129,56,197,31,152,35,244,94,179,14,167,157,170,21,150,220,229,84,0,27,252,79,49,90,215,98,98,153,206,121,83,216,73,225,79,23,80,250,126,86,123,215,45,149,98,204,28,212,45,141,138,19,52,150,187,82,31,187,232,145,6,160,217,208,94,126,243,236,71,101,194,173,108,72,145,110,117,83,160,47,58,18,54,232,35,9,7,169,8,36,84,106,17,63,101,43,150,167,121,228,143,188,72,165,164,145,27,102,189,138,42,39,242,203,188,224,235,208,141,161,192,253,222,98,217,230,239,35,20,188,225,189,13,167,208,252,38,138,131,63,63,145,178,126,112,208,36,185,105,203,21,248,66,230,70,59,91,253,119,122,220,101,107,181,197,126,90,244,238,83,9,55,247,72,56,118,184,9,174,177,161,18,159,240,138,63,204,51,147,36,253,114,0,0,0,0,1,194,106,55,3,132,212,110,2,70,190,89,7,9,168,220,6,203,194,235,4,141,124,178,5,79,22,133,14,19,81,184,15,209,59,143,13,151,133,214,12,85,239,225,9,26,249,100,8,216,147,83,10,158,45,10,11,92,71,61,28,38,163,112,29,228,201,71,31,162,119,30,30,96,29,41,27,47,11,172,26,237,97,155,24,171,223,194,25,105,181,245,18,53,242,200,19,247,152,255,17,177,38,166,16,115,76,145,21,60,90,20,20,254,48,35,22,184,142,122,23,122,228,77,56,77,70,224,57,143,44,215,59,201,146,142,58,11,248,185,63,68,238,60,62,134,132,11,60,192,58,82,61,2,80,101,54,94,23,88,55,156,125,111,53,218,195,54,52,24,169,1,49,87,191,132,48,149,213,179,50,211,107,234,51,17,1,221,36,107,229,144,37,169,143,167,39,239,49,254,38,45,91,201,35,98,77,76,34,160,39,123,32,230,153,34,33,36,243,21,42,120,180,40,43,186,222,31,41,252,96,70,40,62,10,113,45,113,28,244,44,179,118,195,46,245,200,154,47,55,162,173,112,154,141,192,113,88,231,247,115,30,89,174,114,220,51,153,119,147,37,28,118,81,79,43,116,23,241,114,117,213,155,69,126,137,220,120,127,75,182,79,125,13,8,22,124,207,98,33,121,128,116,164,120,66,30,147,122,4,160,202,123,198,202,253,108,188,46,176,109,126,68,135,111,56,250,222,110,250,144,233,107,181,134,108,106,119,236,91,104,49,82,2,105,243,56,53,98,175,127,8,99,109,21,63,97,43,171,102,96,233,193,81,101,166,215,212,100,100,189,227,102,34,3,186,103,224,105,141,72,215,203,32,73,21,161,23,75,83,31,78,74,145,117,121,79,222,99,252,78,28,9,203,76,90,183,146,77,152,221,165,70,196,154,152,71,6,240,175,69,64,78,246,68,130,36,193,65,205,50,68,64,15,88,115,66,73,230,42,67,139,140,29,84,241,104,80,85,51,2,103,87,117,188,62,86,183,214,9,83,248,192,140,82,58,170,187,80,124,20,226,81,190,126,213,90,226,57,232,91,32,83,223,89,102,237,134,88,164,135,177,93,235,145,52,92,41,251,3,94,111,69,90,95,173,47,109,225,53,27,128,224,247,113,183,226,177,207,238,227,115,165,217,230,60,179,92,231,254,217,107,229,184,103,50,228,122,13,5,239,38,74,56,238,228,32,15,236,162,158,86,237,96,244,97,232,47,226,228,233,237,136,211,235,171,54,138,234,105,92,189,253,19,184,240,252,209,210,199,254,151,108,158,255,85,6,169,250,26,16,44,251,216,122,27,249,158,196,66,248,92,174,117,243,0,233,72,242,194,131,127,240,132,61,38,241,70,87,17,244,9,65,148,245,203,43,163,247,141,149,250,246,79,255,205,217,120,93,96,216,186,55,87,218,252,137,14,219,62,227,57,222,113,245,188,223,179,159,139,221,245,33,210,220,55,75,229,215,107,12,216,214,169,102,239,212,239,216,182,213,45,178,129,208,98,164,4,209,160,206,51,211,230,112,106,210,36,26,93,197,94,254,16,196,156,148,39,198,218,42,126,199,24,64,73,194,87,86,204,195,149,60,251,193,211,130,162,192,17,232,149,203,77,175,168,202,143,197,159,200,201,123,198,201,11,17,241,204,68,7,116,205,134,109,67,207,192,211,26,206,2,185,45,145,175,150,64,144,109,252,119,146,43,66,46,147,233,40,25,150,166,62,156,151,100,84,171,149,34,234,242,148,224,128,197,159,188,199,248,158,126,173,207,156,56,19,150,157,250,121,161,152,181,111,36,153,119,5,19,155,49,187,74,154,243,209,125,141,137,53,48,140,75,95,7,142,13,225,94,143,207,139,105,138,128,157,236,139,66,247,219,137,4,73,130,136,198,35,181,131,154,100,136,130,88,14,191,128,30,176,230,129,220,218,209,132,147,204,84,133,81,166,99,135,23,24,58,134,213,114,13,169,226,208,160,168,32,186,151,170,102,4,206,171,164,110,249,174,235,120,124,175,41,18,75,173,111,172,18,172,173,198,37,167,241,129,24,166,51,235,47,164,117,85,118,165,183,63,65,160,248,41,196,161,58,67,243,163,124,253,170,162,190,151,157,181,196,115,208,180,6,25,231,182,64,167,190,183,130,205,137,178,205,219,12,179,15,177,59,177,73,15,98,176,139,101,85,187,215,34,104,186,21,72,95,184,83,246,6,185,145,156,49,188,222,138,180,189,28,224,131,191,90,94,218,190,152,52,237,0,0,0,0,184,188,103,101,170,9,200,139,18,181,175,238,143,98,151,87,55,222,240,50,37,107,95,220,157,215,56,185,197,180,40,239,125,8,79,138,111,189,224,100,215,1,135,1,74,214,191,184,242,106,216,221,224,223,119,51,88,99,16,86,80,25,87,159,232,165,48,250,250,16,159,20,66,172,248,113,223,123,192,200,103,199,167,173,117,114,8,67,205,206,111,38,149,173,127,112,45,17,24,21,63,164,183,251,135,24,208,158,26,207,232,39,162,115,143,66,176,198,32,172,8,122,71,201,160,50,175,62,24,142,200,91,10,59,103,181,178,135,0,208,47,80,56,105,151,236,95,12,133,89,240,226,61,229,151,135,101,134,135,209,221,58,224,180,207,143,79,90,119,51,40,63,234,228,16,134,82,88,119,227,64,237,216,13,248,81,191,104,240,43,248,161,72,151,159,196,90,34,48,42,226,158,87,79,127,73,111,246,199,245,8,147,213,64,167,125,109,252,192,24,53,159,208,78,141,35,183,43,159,150,24,197,39,42,127,160,186,253,71,25,2,65,32,124,16,244,143,146,168,72,232,247,155,20,88,61,35,168,63,88,49,29,144,182,137,161,247,211,20,118,207,106,172,202,168,15,190,127,7,225,6,195,96,132,94,160,112,210,230,28,23,183,244,169,184,89,76,21,223,60,209,194,231,133,105,126,128,224,123,203,47,14,195,119,72,107,203,13,15,162,115,177,104,199,97,4,199,41,217,184,160,76,68,111,152,245,252,211,255,144,238,102,80,126,86,218,55,27,14,185,39,77,182,5,64,40,164,176,239,198,28,12,136,163,129,219,176,26,57,103,215,127,43,210,120,145,147,110,31,244,59,38,247,3,131,154,144,102,145,47,63,136,41,147,88,237,180,68,96,84,12,248,7,49,30,77,168,223,166,241,207,186,254,146,223,236,70,46,184,137,84,155,23,103,236,39,112,2,113,240,72,187,201,76,47,222,219,249,128,48,99,69,231,85,107,63,160,156,211,131,199,249,193,54,104,23,121,138,15,114,228,93,55,203,92,225,80,174,78,84,255,64,246,232,152,37,174,139,136,115,22,55,239,22,4,130,64,248,188,62,39,157,33,233,31,36,153,85,120,65,139,224,215,175,51,92,176,202,237,89,182,59,85,229,209,94,71,80,126,176,255,236,25,213,98,59,33,108,218,135,70,9,200,50,233,231,112,142,142,130,40,237,158,212,144,81,249,177,130,228,86,95,58,88,49,58,167,143,9,131,31,51,110,230,13,134,193,8,181,58,166,109,189,64,225,164,5,252,134,193,23,73,41,47,175,245,78,74,50,34,118,243,138,158,17,150,152,43,190,120,32,151,217,29,120,244,201,75,192,72,174,46,210,253,1,192,106,65,102,165,247,150,94,28,79,42,57,121,93,159,150,151,229,35,241,242,77,107,25,5,245,215,126,96,231,98,209,142,95,222,182,235,194,9,142,82,122,181,233,55,104,0,70,217,208,188,33,188,136,223,49,234,48,99,86,143,34,214,249,97,154,106,158,4,7,189,166,189,191,1,193,216,173,180,110,54,21,8,9,83,29,114,78,154,165,206,41,255,183,123,134,17,15,199,225,116,146,16,217,205,42,172,190,168,56,25,17,70,128,165,118,35,216,198,102,117,96,122,1,16,114,207,174,254,202,115,201,155,87,164,241,34,239,24,150,71,253,173,57,169,69,17,94,204,118,77,238,6,206,241,137,99,220,68,38,141,100,248,65,232,249,47,121,81,65,147,30,52,83,38,177,218,235,154,214,191,179,249,198,233,11,69,161,140,25,240,14,98,161,76,105,7,60,155,81,190,132,39,54,219,150,146,153,53,46,46,254,80,38,84,185,153,158,232,222,252,140,93,113,18,52,225,22,119,169,54,46,206,17,138,73,171,3,63,230,69,187,131,129,32,227,224,145,118,91,92,246,19,73,233,89,253,241,85,62,152,108,130,6,33,212,62,97,68,198,139,206,170,126,55,169,207,214,127,65,56,110,195,38,93,124,118,137,179,196,202,238,214,89,29,214,111,225,161,177,10,243,20,30,228,75,168,121,129,19,203,105,215,171,119,14,178,185,194,161,92,1,126,198,57,156,169,254,128,36,21,153,229,54,160,54,11,142,28,81,110,134,102,22,167,62,218,113,194,44,111,222,44,148,211,185,73,9,4,129,240,177,184,230,149,163,13,73,123,27,177,46,30,67,210,62,72,251,110,89,45,233,219,246,195,81,103,145,166,204,176,169,31,116,12,206,122,102,185,97,148,222,5,6,241,16,0,0,0,11,0,0,0,10,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,51,0,0,0,61,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,19,0,0,0,26,0,0,0,58,0,0,0,60,0,0,0,55,0,0,0,14,0,0,0,13,0,0,0,16,0,0,0,24,0,0,0,40,0,0,0,57,0,0,0,69,0,0,0,56,0,0,0,14,0,0,0,17,0,0,0,22,0,0,0,29,0,0,0,51,0,0,0,87,0,0,0,80,0,0,0,62,0,0,0,18,0,0,0,22,0,0,0,37,0,0,0,56,0,0,0,68,0,0,0,109,0,0,0,103,0,0,0,77,0,0,0,24,0,0,0,35,0,0,0,55,0,0,0,64,0,0,0,81,0,0,0,104,0,0,0,113,0,0,0,92,0,0,0,49,0,0,0,64,0,0,0,78,0,0,0,87,0,0,0,103,0,0,0,121,0,0,0,120,0,0,0,101,0,0,0,72,0,0,0,92,0,0,0,95,0,0,0,98,0,0,0,112,0,0,0,100,0,0,0,103,0,0,0,99,0,0,0,17,0,0,0,18,0,0,0,24,0,0,0,47,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,18,0,0,0,21,0,0,0,26,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,24,0,0,0,26,0,0,0,56,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,47,0,0,0,66,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,121,98,2,0,143,98,2,0,175,98,2,0,212,98,2,0,238,98,2,0,13,99,2,0,34,99,2,0,63,99,2,0,105,99,2,0,169,99,2,0,200,99,2,0,223,99,2,0,245,99,2,0,9,100,2,0,70,100,2,0,118,100,2,0,146,100,2,0,181,100,2,0,236,100,2,0,35,101,2,0,58,101,2,0,90,101,2,0,132,101,2,0,209,101,2,0,236,101,2,0,23,102,2,0,51,102,2,0,88,102,2,0,126,102,2,0,163,102,2,0,182,102,2,0,203,102,2,0,222,102,2,0,241,102,2,0,22,103,2,0,43,103,2,0,63,103,2,0,96,103,2,0,118,103,2,0,165,103,2,0,205,103,2,0,238,103,2,0,15,104,2,0,62,104,2,0,79,104,2,0,107,104,2,0,169,104,2,0,208,104,2,0,247,104,2,0,11,105,2,0,57,105,2,0,97,105,2,0,125,105,2,0,162,105,2,0,196,105,2,0,238,105,2,0,25,106,2,0,55,106,2,0,101,106,2,0,141,106,2,0,180,106,2,0,223,106,2,0,12,107,2,0,60,107,2,0,102,107,2,0,147,107,2,0,182,107,2,0,212,107,2,0,242,107,2,0,40,108,2,0,82,108,2,0,113,108,2,0,148,108,2,0,187,108,2,0,208,108,2,0,228,108,2,0,25,109,2,0,41,109,2,0,103,109,2,0,169,109,2,0,211,109,2,0,255,109,2,0,38,110,2,0,66,110,2,0,109,110,2,0,136,110,2,0,156,110,2,0,179,110,2,0,192,110,2,0,232,110,2,0,29,111,2,0,89,111,2,0,135,111,2,0,168,111,2,0,207,111,2,0,232,111,2,0,16,112,2,0,51,112,2,0,75,112,2,0,111,112,2,0,148,112,2,0,154,112,2,0,211,112,2,0,13,113,2,0,44,113,2,0,59,113,2,0,88,113,2,0,118,113,2,0,147,113,2,0,172,113,2,0,197,113,2,0,7,114,2,0,65,114,2,0,119,114,2,0,171,114,2,0,191,114,2,0,214,114,2,0,252,114,2,0,35,115,2,0,101,115,2,0,161,115,2,0,210,115,2,0,246,115,2,0,36,116,2,0,63,116,2,0,119,116,2,0,162,116,2,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,7,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,56,0,0,0,57,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,15,0,0,0,23,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,58,0,0,0,59,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,31,0,0,0,39,0,0,0,46,0,0,0,53,0,0,0,60,0,0,0,61,0,0,0,54,0,0,0,47,0,0,0,55,0,0,0,62,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,48,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,49,0,0,0,50,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,22,0,0,0,30,0,0,0,37,0,0,0,44,0,0,0,51,0,0,0,52,0,0,0,45,0,0,0,38,0,0,0,46,0,0,0,53,0,0,0,54,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,5,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,40,0,0,0,41,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,13,0,0,0,21,0,0,0,28,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,36,0,0,0,29,0,0,0,37,0,0,0,44,0,0,0,45,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,32,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,19,0,0,0,26,0,0,0,33,0,0,0,34,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,35,0,0,0,36,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,10,0,0,0,17,0,0,0,24,0,0,0,25,0,0,0,18,0,0,0,11,0,0,0,19,0,0,0,26,0,0,0,27,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,16,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,17,0,0,0,18,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,63,0,0,0,64,6,0,0,128,62,0,0,0,0,0,0,136,19,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,3,0,0,0,8,0,0,0,11,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,15,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,16,0,0,0,21,0,0,0,9,0,0,0,11,0,0,0,17,0,0,0,20,0,0,0,22,0,0,0,10,0,0,0,18,0,0,0,19,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,25,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,24,0,0,0,26,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,23,0,0,0,27,0,0,0,32,0,0,0,10,0,0,0,19,0,0,0,22,0,0,0,28,0,0,0,31,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,29,0,0,0,30,0,0,0,34,0,0,0,35,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,28,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,29,0,0,0,38,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,30,0,0,0,37,0,0,0,39,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,31,0,0,0,36,0,0,0,40,0,0,0,45,0,0,0,20,0,0,0,22,0,0,0,32,0,0,0,35,0,0,0,41,0,0,0,44,0,0,0,46,0,0,0,21,0,0,0,33,0,0,0,34,0,0,0,42,0,0,0,43,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,14,0,0,0,15,0,0,0,27,0,0,0,28,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,13,0,0,0,16,0,0,0,26,0,0,0,29,0,0,0,42,0,0,0,3,0,0,0,8,0,0,0,12,0,0,0,17,0,0,0,25,0,0,0,30,0,0,0,41,0,0,0,43,0,0,0,9,0,0,0,11,0,0,0,18,0,0,0,24,0,0,0,31,0,0,0,40,0,0,0,44,0,0,0,53,0,0,0,10,0,0,0,19,0,0,0,23,0,0,0,32,0,0,0,39,0,0,0,45,0,0,0,52,0,0,0,54,0,0,0,20,0,0,0,22,0,0,0,33,0,0,0,38,0,0,0,46,0,0,0,51,0,0,0,55,0,0,0,60,0,0,0,21,0,0,0,34,0,0,0,37,0,0,0,47,0,0,0,50,0,0,0,56,0,0,0,59,0,0,0,61,0,0,0,35,0,0,0,36,0,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,129,1,29,90,14,2,134,37,16,3,20,17,18,4,11,8,20,5,216,3,23,6,218,1,25,7,229,0,28,8,111,0,30,9,54,0,33,10,26,0,35,11,13,0,9,12,6,0,10,13,3,0,12,13,1,0,143,15,127,90,36,16,37,63,38,17,242,44,39,18,124,32,40,19,185,23,42,20,130,17,43,21,239,12,45,22,161,9,46,23,47,7,48,24,92,5,49,25,6,4,51,26,3,3,52,27,64,2,54,28,177,1,56,29,68,1,57,30,245,0,59,31,183,0,60,32,138,0,62,33,104,0,63,34,78,0,32,35,59,0,33,9,44,0,165,37,225,90,64,38,76,72,65,39,13,58,67,40,241,46,68,41,31,38,69,42,51,31,70,43,168,25,72,44,24,21,73,45,119,17,74,46,116,14,75,47,251,11,77,48,248,9,78,49,97,8,79,50,6,7,48,51,205,5,50,52,222,4,50,53,15,4,51,54,99,3,52,55,212,2,53,56,92,2,54,57,248,1,55,58,164,1,56,59,96,1,57,60,37,1,58,61,246,0,59,62,203,0,61,63,171,0,61,32,143,0,193,65,18,91,80,66,4,77,81,67,44,65,82,68,216,55,83,69,232,47,84,70,60,41,86,71,121,35,87,72,223,30,87,73,169,26,72,74,78,23,72,75,36,20,74,76,156,17,74,77,107,15,75,78,81,13,77,79,182,11,77,48,64,10,208,81,50,88,88,82,28,77,89,83,142,67,90,84,221,59,91,85,238,52,92,86,174,46,93,87,154,41,86,71,22,37,216,89,112,85,95,90,169,76,96,91,217,68,97,92,34,62,99,93,36,56,99,94,180,50,93,86,23,46,223,96,168,86,101,97,70,79,102,98,229,71,103,99,207,65,104,100,61,60,99,93,94,55,105,102,49,82,106,103,15,76,107,104,57,70,103,99,94,65,233,106,39,86,108,107,231,80,109,103,133,75,110,109,151,85,111,107,79,80,238,111,16,90,112,109,34,85,240,111,235,89,113,113,29,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,120,224,1,0,232,224,1,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+112640);allocate([1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,102,130,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,94,126,2,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,53,0,0,0,6,0,7,0,1,0,4,0,7,0,2,0,4,0,8,0,3,0,4,0,11,0,4,0,4,0,12,0,5,0,4,0,14,0,6,0,4,0,15,0,7,0,5,0,19,0,8,0,5,0,20,0,9,0,5,0,7,0,10,0,5,0,8,0,11,0,6,0,8,0,12,0,6,0,3,0,13,0,6,0,52,0,14,0,6,0,53,0,15,0,6,0,42,0,16,0,6,0,43,0,17,0,7,0,39,0,18,0,7,0,12,0,19,0,7,0,8,0,20,0,7,0,23,0,21,0,7,0,3,0,22,0,7,0,4,0,23,0,7,0,40,0,24,0,7,0,43,0,25,0,7,0,19,0,26,0,7,0,36,0,27,0,7,0,24,0,28,0,8,0,2,0,29,0,8,0,3,0,30,0,8,0,26,0,31,0,8,0,27,0,32,0,8,0,18,0,33,0,8,0,19,0,34,0,8,0,20,0,35,0,8,0,21,0,36,0,8,0,22,0,37,0,8,0,23,0,38,0,8,0,40,0,39,0,8,0,41,0,40,0,8,0,42,0,41,0,8,0,43,0,42,0,8,0,44,0,43,0,8,0,45,0,44,0,8,0,4,0,45,0,8,0,5,0,46,0,8,0,10,0,47,0,8,0,11,0,48,0,8,0,82,0,49,0,8,0,83,0,50,0,8,0,84,0,51,0,8,0,85,0,52,0,8,0,36,0,53,0,8,0,37,0,54,0,8,0,88,0,55,0,8,0,89,0,56,0,8,0,90,0,57,0,8,0,91,0,58,0,8,0,74,0,59,0,8,0,75,0,60,0,8,0,50,0,61,0,8,0,51,0,62,0,8,0,52,0,63,0,5,0,27,0,64,0,5,0,18,0,128,0,6,0,23,0,192,0,7,0,55,0,0,1,8,0,54,0,64,1,8,0,55,0,128,1,8,0,100,0,192,1,8,0,101,0,0,2,8,0,104,0,64,2,8,0,103,0,128,2,9,0,204,0,192,2,9,0,205,0,0,3,9,0,210,0,64,3,9,0,211,0,128,3,9,0,212,0,192,3,9,0,213,0,0,4,9,0,214,0,64,4,9,0,215,0,128,4,9,0,216,0,192,4,9,0,217,0,0,5,9,0,218,0,64,5,9,0,219,0,128,5,9,0,152,0,192,5,9,0,153,0,0,6,9,0,154,0,64,6,6,0,24,0,128,6,9,0,155,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,10,0,55,0,0,0,3,0,2,0,1,0,2,0,3,0,2,0,2,0,2,0,3,0,3,0,3,0,4,0,4,0,3,0,5,0,4,0,2,0,6,0,5,0,3,0,7,0,6,0,5,0,8,0,6,0,4,0,9,0,7,0,4,0,10,0,7,0,5,0,11,0,7,0,7,0,12,0,8,0,4,0,13,0,8,0,7,0,14,0,9,0,24,0,15,0,10,0,23,0,16,0,10,0,24,0,17,0,10,0,8,0,18,0,11,0,103,0,19,0,11,0,104,0,20,0,11,0,108,0,21,0,11,0,55,0,22,0,11,0,40,0,23,0,11,0,23,0,24,0,11,0,24,0,25,0,12,0,202,0,26,0,12,0,203,0,27,0,12,0,204,0,28,0,12,0,205,0,29,0,12,0,104,0,30,0,12,0,105,0,31,0,12,0,106,0,32,0,12,0,107,0,33,0,12,0,210,0,34,0,12,0,211,0,35,0,12,0,212,0,36,0,12,0,213,0,37,0,12,0,214,0,38,0,12,0,215,0,39,0,12,0,108,0,40,0,12,0,109,0,41,0,12,0,218,0,42,0,12,0,219,0,43,0,12,0,84,0,44,0,12,0,85,0,45,0,12,0,86,0,46,0,12,0,87,0,47,0,12,0,100,0,48,0,12,0,101,0,49,0,12,0,82,0,50,0,12,0,83,0,51,0,12,0,36,0,52,0,12,0,55,0,53,0,12,0,56,0,54,0,12,0,39,0,55,0,12,0,40,0,56,0,12,0,88,0,57,0,12,0,89,0,58,0,12,0,43,0,59,0,12,0,44,0,60,0,12,0,90,0,61,0,12,0,102,0,62,0,12,0,103,0,63,0,10,0,15,0,64,0,12,0,200,0,128,0,12,0,201,0,192,0,12,0,91,0,0,1,12,0,51,0,64,1,12,0,52,0,128,1,12,0,53,0,192,1,13,0,108,0,0,2,13,0,109,0,64,2,13,0,74,0,128,2,13,0,75,0,192,2,13,0,76,0,0,3,13,0,77,0,64,3,13,0,114,0,128,3,13,0,115,0,192,3,13,0,116,0,0,4,13,0,117,0,64,4,13,0,118,0,128,4,13,0,119,0,192,4,13,0,82,0,0,5,13,0,83,0,64,5,13,0,84,0,128,5,13,0,85,0,192,5,13,0,90,0,0,6,13,0,91,0,64,6,13,0,100,0,128,6,13,0,101,0,192,6,11,0,8,0,0,7,11,0,12,0,64,7,11,0,13,0,128,7,12,0,18,0,192,7,12,0,19,0,0,8,12,0,20,0,64,8,12,0,21,0,128,8,12,0,22,0,192,8,12,0,23,0,0,9,12,0,28,0,64,9,12,0,29,0,128,9,12,0,30,0,192,9,12,0,31,0,0,10,12,0,1,0,255,255,9,0,1,0,254,255,10,0,1,0,254,255,11,0,1,0,254,255,12,0,0,0,254,255,7,0,3,0,0,0,6,0,3,0,0,0,3,0,3,0,0,0,1,0,1,0,0,0,3,0,2,0,0,0,6,0,2,0,0,0,7,0,2,0,0,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,192,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,160,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,224,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,144,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,208,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,176,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,240,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,200,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,168,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,232,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,152,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,216,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,184,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,248,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,196,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,164,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,228,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,148,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,212,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,180,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,244,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,204,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,172,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,236,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,156,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,220,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,188,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,252,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,194,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,162,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,226,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,146,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,210,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,178,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,242,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,202,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,170,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,234,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,154,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,218,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,186,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,250,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,198,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,166,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,230,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,150,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,214,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,182,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,246,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,206,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,174,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,238,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,158,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,222,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,190,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,254,0,96,7,0,0,0,8,80,0,0,8,16,0,20,8,115,0,18,7,31,0,0,8,112,0,0,8,48,0,0,9,193,0,16,7,10,0,0,8,96,0,0,8,32,0,0,9,161,0,0,8,0,0,0,8,128,0,0,8,64,0,0,9,225,0,16,7,6,0,0,8,88,0,0,8,24,0,0,9,145,0,19,7,59,0,0,8,120,0,0,8,56,0,0,9,209,0,17,7,17,0,0,8,104,0,0,8,40,0,0,9,177,0,0,8,8,0,0,8,136,0,0,8,72,0,0,9,241,0,16,7,4,0,0,8,84,0,0,8,20,0,21,8,227,0,19,7,43,0,0,8,116,0,0,8,52,0,0,9,201,0,17,7,13,0,0,8,100,0,0,8,36,0,0,9,169,0,0,8,4,0,0,8,132,0,0,8,68,0,0,9,233,0,16,7,8,0,0,8,92,0,0,8,28,0,0,9,153,0,20,7,83,0,0,8,124,0,0,8,60,0,0,9,217,0,18,7,23,0,0,8,108,0,0,8,44,0,0,9,185,0,0,8,12,0,0,8,140,0,0,8,76,0,0,9,249,0,16,7,3,0,0,8,82,0,0,8,18,0,21,8,163,0,19,7,35,0,0,8,114,0,0,8,50,0,0,9,197,0,17,7,11,0,0,8,98,0,0,8,34,0,0,9,165,0,0,8,2,0,0,8,130,0,0,8,66,0,0,9,229,0,16,7,7,0,0,8,90,0,0,8,26,0,0,9,149,0,20,7,67,0,0,8,122,0,0,8,58,0,0,9,213,0,18,7,19,0,0,8,106,0,0,8,42,0,0,9,181,0,0,8,10,0,0,8,138,0,0,8,74,0,0,9,245,0,16,7,5,0,0,8,86,0,0,8,22,0,64,8,0,0,19,7,51,0,0,8,118,0,0,8,54,0,0,9,205,0,17,7,15,0,0,8,102,0,0,8,38,0,0,9,173,0,0,8,6,0,0,8,134,0,0,8,70,0,0,9,237,0,16,7,9,0,0,8,94,0,0,8,30,0,0,9,157,0,20,7,99,0,0,8,126,0,0,8,62,0,0,9,221,0,18,7,27,0,0,8,110,0,0,8,46,0,0,9,189,0,0,8,14,0,0,8,142,0,0,8,78,0,0,9,253,0,96,7,0,0,0,8,81,0,0,8,17,0,21,8,131,0,18,7,31,0,0,8,113,0,0,8,49,0,0,9,195,0,16,7,10,0,0,8,97,0,0,8,33,0,0,9,163,0,0,8,1,0,0,8,129,0,0,8,65,0,0,9,227,0,16,7,6,0,0,8,89,0,0,8,25,0,0,9,147,0,19,7,59,0,0,8,121,0,0,8,57,0,0,9,211,0,17,7,17,0,0,8,105,0,0,8,41,0,0,9,179,0,0,8,9,0,0,8,137,0,0,8,73,0,0,9,243,0,16,7,4,0,0,8,85,0,0,8,21,0,16,8,2,1,19,7,43,0,0,8,117,0,0,8,53,0,0,9,203,0,17,7,13,0,0,8,101,0,0,8,37,0,0,9,171,0,0,8,5,0,0,8,133,0,0,8,69,0,0,9,235,0,16,7,8,0,0,8,93,0,0,8,29,0,0,9,155,0,20,7,83,0,0,8,125,0,0,8,61,0,0,9,219,0,18,7,23,0,0,8,109,0,0,8,45,0,0,9,187,0,0,8,13,0,0,8,141,0,0,8,77,0,0,9,251,0,16,7,3,0,0,8,83,0,0,8,19,0,21,8,195,0,19,7,35,0,0,8,115,0,0,8,51,0,0,9,199,0,17,7,11,0,0,8,99,0,0,8,35,0,0,9,167,0,0,8,3,0,0,8,131,0,0,8,67,0,0,9,231,0,16,7,7,0,0,8,91,0,0,8,27,0,0,9,151,0,20,7,67,0,0,8,123,0,0,8,59,0,0,9,215,0,18,7,19,0,0,8,107,0,0,8,43,0,0,9,183,0,0,8,11,0,0,8,139,0,0,8,75,0,0,9,247,0,16,7,5,0,0,8,87,0,0,8,23,0,64,8,0,0,19,7,51,0,0,8,119,0,0,8,55,0,0,9,207,0,17,7,15,0,0,8,103,0,0,8,39,0,0,9,175,0,0,8,7,0,0,8,135,0,0,8,71,0,0,9,239,0,16,7,9,0,0,8,95,0,0,8,31,0,0,9,159,0,20,7,99,0,0,8,127,0,0,8,63,0,0,9,223,0,18,7,27,0,0,8,111,0,0,8,47,0,0,9,191,0,0,8,15,0,0,8,143,0,0,8,79,0,0,9,255,0,16,5,1,0,23,5,1,1,19,5,17,0,27,5,1,16,17,5,5,0,25,5,1,4,21,5,65,0,29,5,1,64,16,5,3,0,24,5,1,2,20,5,33,0,28,5,1,32,18,5,9,0,26,5,1,8,22,5,129,0,64,5,0,0,16,5,2,0,23,5,129,1,19,5,25,0,27,5,1,24,17,5,7,0,25,5,1,6,21,5,97,0,29,5,1,96,16,5,4,0,24,5,1,3,20,5,49,0,28,5,1,48,18,5,13,0,26,5,1,12,22,5,193,0,64,5,0,0,16,0,17,0,18,0,0,0,8,0,7,0,9,0,6,0,10,0,5,0,11,0,4,0,12,0,3,0,13,0,2,0,14,0,1,0,15,0,1,0,2,0,3,0,4,0,5,0,7,0,9,0,13,0,17,0,25,0,33,0,49,0,65,0,97,0,129,0,193,0,1,1,129,1,1,2,1,3,1,4,1,6,1,8,1,12,1,16,1,24,1,32,1,48,1,64,1,96,0,0,0,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,13,0,15,0,17,0,19,0,23,0,27,0,31,0,35,0,43,0,51,0,59,0,67,0,83,0,99,0,115,0,131,0,163,0,195,0,227,0,2,1,0,0,0,0,16,0,16,0,16,0,16,0,17,0,17,0,18,0,18,0,19,0,19,0,20,0,20,0,21,0,21,0,22,0,22,0,23,0,23,0,24,0,24,0,25,0,25,0,26,0,26,0,27,0,27,0,28,0,28,0,29,0,29,0,64,0,64,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,16,0,17,0,17,0,17,0,17,0,18,0,18,0,18,0,18,0,19,0,19,0,19,0,19,0,20,0,20,0,20,0,20,0,21,0,21,0,21,0,21,0,16,0,72,0,78,0,12,0,8,0,140,0,8,0,76,0,8,0,204,0,8,0,44,0,8,0,172,0,8,0,108,0,8,0,236,0,8,0,28,0,8,0,156,0,8,0,92,0,8,0,220,0,8,0,60,0,8,0,188,0,8,0,124,0,8,0,252,0,8,0,2,0,8,0,130,0,8,0,66,0,8,0,194,0,8,0,34,0,8,0,162,0,8,0,98,0,8,0,226,0,8,0,18,0,8,0,146,0,8,0,82,0,8,0,210,0,8,0,50,0,8,0,178,0,8,0,114,0,8,0,242,0,8,0,10,0,8,0,138,0,8,0,74,0,8,0,202,0,8,0,42,0,8,0,170,0,8,0,106,0,8,0,234,0,8,0,26,0,8,0,154,0,8,0,90,0,8,0,218,0,8,0,58,0,8,0,186,0,8,0,122,0,8,0,250,0,8,0,6,0,8,0,134,0,8,0,70,0,8,0,198,0,8,0,38,0,8,0,166,0,8,0,102,0,8,0,230,0,8,0,22,0,8,0,150,0,8,0,86,0,8,0,214,0,8,0,54,0,8,0,182,0,8,0,118,0,8,0,246,0,8,0,14,0,8,0,142,0,8,0,78,0,8,0,206,0,8,0,46,0,8,0,174,0,8,0,110,0,8,0,238,0,8,0,30,0,8,0,158,0,8,0,94,0,8,0,222,0,8,0,62,0,8,0,190,0,8,0,126,0,8,0,254,0,8,0,1,0,8,0,129,0,8,0,65,0,8,0,193,0,8,0,33,0,8,0,161,0,8,0,97,0,8,0,225,0,8,0,17,0,8,0,145,0,8,0,81,0,8,0,209,0,8,0,49,0,8,0,177,0,8,0,113,0,8,0,241,0,8,0,9,0,8,0,137,0,8,0,73,0,8,0,201,0,8,0,41,0,8,0,169,0,8,0,105,0,8,0,233,0,8,0,25,0,8,0,153,0,8,0,89,0,8,0,217,0,8,0,57,0,8,0,185,0,8,0,121,0,8,0,249,0,8,0,5,0,8,0,133,0,8,0,69,0,8,0,197,0,8,0,37,0,8,0,165,0,8,0,101,0,8,0,229,0,8,0,21,0,8,0,149,0,8,0,85,0,8,0,213,0,8,0,53,0,8,0,181,0,8,0,117,0,8,0,245,0,8,0,13,0,8,0,141,0,8,0,77,0,8,0,205,0,8,0,45,0,8,0,173,0,8,0,109,0,8,0,237,0,8,0,29,0,8,0,157,0,8,0,93,0,8,0,221,0,8,0,61,0,8,0,189,0,8,0,125,0,8,0,253,0,8,0,19,0,9,0,19,1,9,0,147,0,9,0,147,1,9,0,83,0,9,0,83,1,9,0,211,0,9,0,211,1,9,0,51,0,9,0,51,1,9,0,179,0,9,0,179,1,9,0,115,0,9,0,115,1,9,0,243,0,9,0,243,1,9,0,11,0,9,0,11,1,9,0,139,0,9,0,139,1,9,0,75,0,9,0,75,1,9,0,203,0,9,0,203,1,9,0,43,0,9,0,43,1,9,0,171,0,9,0,171,1,9,0,107,0,9,0,107,1,9,0,235,0,9,0,235,1,9,0,27,0,9,0,27,1,9,0,155,0,9,0,155,1,9,0,91,0,9,0,91,1,9,0,219,0,9,0,219,1,9,0,59,0,9,0,59,1,9,0,187,0,9,0,187,1,9,0,123,0,9,0,123,1,9,0,251,0,9,0,251,1,9,0,7,0,9,0,7,1,9,0,135,0,9,0,135,1,9,0,71,0,9,0,71,1,9,0,199,0,9,0,199,1,9,0,39,0,9,0,39,1,9,0,167,0,9,0,167,1,9,0,103,0,9,0,103,1,9,0,231,0,9,0,231,1,9,0,23,0,9,0,23,1,9,0,151,0,9,0,151,1,9,0,87,0,9,0,87,1,9,0,215,0,9,0,215,1,9,0,55,0,9,0,55,1,9,0,183,0,9,0,183,1,9,0,119,0,9,0,119,1,9,0,247,0,9,0,247,1,9,0,15,0,9,0,15,1,9,0,143,0,9,0,143,1,9,0,79,0,9,0,79,1,9,0,207,0,9,0,207,1,9,0,47,0,9,0,47,1,9,0,175,0,9,0,175,1,9,0,111,0,9,0,111,1,9,0,239,0,9,0,239,1,9,0,31,0,9,0,31,1,9,0,159,0,9,0,159,1,9,0,95,0,9,0,95,1,9,0,223,0,9,0,223,1,9,0,63,0,9,0,63,1,9,0,191,0,9,0,191,1,9,0,127,0,9,0,127,1,9,0,255,0,9,0,255,1,9,0,0,0,7,0,64,0,7,0,32,0,7,0,96,0,7,0,16,0,7,0,80,0,7,0,48,0,7,0,112,0,7,0,8,0,7,0,72,0,7,0,40,0,7,0,104,0,7,0,24,0,7,0,88,0,7,0,56,0,7,0,120,0,7,0,4,0,7,0,68,0,7,0,36,0,7,0,100,0,7,0,20,0,7,0,84,0,7,0,52,0,7,0,116,0,7,0,3,0,8,0,131,0,8,0,67,0,8,0,195,0,8,0,35,0,8,0,163,0,8,0,99,0,8,0,227,0,8,0,0,0,5,0,16,0,5,0,8,0,5,0,24,0,5,0,4,0,5,0,20,0,5,0,12,0,5,0,28,0,5,0,2,0,5,0,18,0,5,0,10,0,5,0,26,0,5,0,6,0,5,0,22,0,5,0,14,0,5,0,30,0,5,0,1,0,5,0,17,0,5,0,9,0,5,0,25,0,5,0,5,0,5,0,21,0,5,0,13,0,5,0,29,0,5,0,3,0,5,0,19,0,5,0,11,0,5,0,27,0,5,0,7,0,5,0,23,0,5,0,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,197,88,33,123,252,115,98,104,197,88,191,69,11,48,126,24,159,83,252,115,65,109,84,98,159,83,179,65,65,45,18,23,66,75,98,104,84,98,126,88,66,75,33,59,186,40,195,20,0,64,197,88,159,83,66,75,0,64,73,50,163,34,168,17,73,50,191,69,179,65,33,59,73,50,130,39,55,27,224,13,163,34,11,48,65,45,186,40,163,34,55,27,191,18,142,9,168,17,126,24,18,23,195,20,168,17,224,13,142,9,223,4,112,115,101,117,100,111,45,0,84,73,70,70,83,101,116,70,105,101,108,100,0,37,115,58,32,85,110,107,110,111,119,110,32,37,115,116,97,103,32,37,117,0,37,115,58,32,67,97,110,110,111,116,32,109,111,100,105,102,121,32,116,97,103,32,34,37,115,34,32,119,104,105,108,101,32,119,114,105,116,105,110,103,0,116,105,102,95,100,105,114,46,99,0,84,73,70,70,65,100,118,97,110,99,101,68,105,114,101,99,116,111,114,121,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,37,115,58,32,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,95,84,73,70,70,86,71,101,116,70,105,101,108,100,0,37,115,58,32,73,110,118,97,108,105,100,32,37,115,116,97,103,32,34,37,115,34,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,99,111,100,101,99,41,0,116,118,45,62,99,111,117,110,116,32,61,61,32,49,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,119,105,100,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,78,111,110,115,116,97,110,100,97,114,100,32,116,105,108,101,32,108,101,110,103,116,104,32,37,100,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,95,84,73,70,70,86,83,101,116,70,105,101,108,100,0,37,115,58,32,83,111,114,114,121,44,32,99,97,110,110,111,116,32,110,101,115,116,32,83,117,98,73,70,68,115,0,37,115,58,32,73,110,118,97,108,105,100,32,73,110,107,78,97,109,101,115,32,118,97,108,117,101,59,32,101,120,112,101,99,116,105,110,103,32,37,100,32,110,97,109,101,115,44,32,102,111,117,110,100,32,37,100,0,37,115,58,32,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,115,112,97,99,101,32,102,111,114,32,108,105,115,116,32,111,102,32,99,117,115,116,111,109,32,118,97,108,117,101,115,0,37,115,58,32,66,97,100,32,102,105,101,108,100,32,116,121,112,101,32,37,100,32,102,111,114,32,34,37,115,34,0,102,105,112,45,62,102,105,101,108,100,95,119,114,105,116,101,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,37,115,58,32,78,117,108,108,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,32,40,116,121,112,101,32,37,100,44,32,119,114,105,116,101,99,111,117,110,116,32,37,100,44,32,112,97,115,115,99,111,117,110,116,32,37,100,41,0,99,117,115,116,111,109,32,116,97,103,32,98,105,110,97,114,121,32,111,98,106,101,99,116,0,85,110,107,110,111,119,110,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,117,32,102,111,114,32,34,37,115,34,32,116,97,103,0,37,115,58,32,66,97,100,32,118,97,108,117,101,32,37,102,32,102,111,114,32,34,37,115,34,32,116,97,103,0,84,97,103,32,0,95,84,73,70,70,83,101,116,117,112,70,105,101,108,100,115,0,83,101,116,116,105,110,103,32,117,112,32,102,105,101,108,100,32,105,110,102,111,32,102,97,105,108,101,100,0,102,111,114,32,102,105,101,108,100,115,32,97,114,114,97,121,0,95,84,73,70,70,77,101,114,103,101,70,105,101,108,100,115,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,102,105,101,108,100,115,32,97,114,114,97,121,0,84,73,70,70,70,105,101,108,100,87,105,116,104,84,97,103,0,73,110,116,101,114,110,97,108,32,101,114,114,111,114,44,32,117,110,107,110,111,119,110,32,116,97,103,32,48,120,37,120,0,84,97,103,32,37,100,0,69,120,112,111,115,117,114,101,84,105,109,101,0,70,78,117,109,98,101,114,0,69,120,112,111,115,117,114,101,80,114,111,103,114,97,109,0,83,112,101,99,116,114,97,108,83,101,110,115,105,116,105,118,105,116,121,0,73,83,79,83,112,101,101,100,82,97,116,105,110,103,115,0,79,112,116,111,101,108,101,99,116,114,105,99,67,111,110,118,101,114,115,105,111,110,70,97,99,116,111,114,0,69,120,105,102,86,101,114,115,105,111,110,0,68,97,116,101,84,105,109,101,79,114,105,103,105,110,97,108,0,68,97,116,101,84,105,109,101,68,105,103,105,116,105,122,101,100,0,67,111,109,112,111,110,101,110,116,115,67,111,110,102,105,103,117,114,97,116,105,111,110,0,67,111,109,112,114,101,115,115,101,100,66,105,116,115,80,101,114,80,105,120,101,108,0,83,104,117,116,116,101,114,83,112,101,101,100,86,97,108,117,101,0,65,112,101,114,116,117,114,101,86,97,108,117,101,0,66,114,105,103,104,116,110,101,115,115,86,97,108,117,101,0,69,120,112,111,115,117,114,101,66,105,97,115,86,97,108,117,101,0,77,97,120,65,112,101,114,116,117,114,101,86,97,108,117,101,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,0,77,101,116,101,114,105,110,103,77,111,100,101,0,76,105,103,104,116,83,111,117,114,99,101,0,70,108,97,115,104,0,70,111,99,97,108,76,101,110,103,116,104,0,83,117,98,106,101,99,116,65,114,101,97,0,77,97,107,101,114,78,111,116,101,0,85,115,101,114,67,111,109,109,101,110,116,0,83,117,98,83,101,99,84,105,109,101,0,83,117,98,83,101,99,84,105,109,101,79,114,105,103,105,110,97,108,0,83,117,98,83,101,99,84,105,109,101,68,105,103,105,116,105,122,101,100,0,70,108,97,115,104,112,105,120,86,101,114,115,105,111,110,0,67,111,108,111,114,83,112,97,99,101,0,80,105,120,101,108,88,68,105,109,101,110,115,105,111,110,0,80,105,120,101,108,89,68,105,109,101,110,115,105,111,110,0,82,101,108,97,116,101,100,83,111,117,110,100,70,105,108,101,0,70,108,97,115,104,69,110,101,114,103,121,0,83,112,97,116,105,97,108,70,114,101,113,117,101,110,99,121,82,101,115,112,111,110,115,101,0,70,111,99,97,108,80,108,97,110,101,88,82,101,115,111,108,117,116,105,111,110,0,70,111,99,97,108,80,108,97,110,101,89,82,101,115,111,108,117,116,105,111,110,0,70,111,99,97,108,80,108,97,110,101,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,83,117,98,106,101,99,116,76,111,99,97,116,105,111,110,0,69,120,112,111,115,117,114,101,73,110,100,101,120,0,83,101,110,115,105,110,103,77,101,116,104,111,100,0,70,105,108,101,83,111,117,114,99,101,0,83,99,101,110,101,84,121,112,101,0,67,70,65,80,97,116,116,101,114,110,0,67,117,115,116,111,109,82,101,110,100,101,114,101,100,0,69,120,112,111,115,117,114,101,77,111,100,101,0,87,104,105,116,101,66,97,108,97,110,99,101,0,68,105,103,105,116,97,108,90,111,111,109,82,97,116,105,111,0,70,111,99,97,108,76,101,110,103,116,104,73,110,51,53,109,109,70,105,108,109,0,83,99,101,110,101,67,97,112,116,117,114,101,84,121,112,101,0,71,97,105,110,67,111,110,116,114,111,108,0,67,111,110,116,114,97,115,116,0,83,97,116,117,114,97,116,105,111,110,0,83,104,97,114,112,110,101,115,115,0,68,101,118,105,99,101,83,101,116,116,105,110,103,68,101,115,99,114,105,112,116,105,111,110,0,83,117,98,106,101,99,116,68,105,115,116,97,110,99,101,82,97,110,103,101,0,73,109,97,103,101,85,110,105,113,117,101,73,68,0,83,117,98,102,105,108,101,84,121,112,101,0,79,108,100,83,117,98,102,105,108,101,84,121,112,101,0,73,109,97,103,101,87,105,100,116,104,0,66,105,116,115,80,101,114,83,97,109,112,108,101,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,0,84,104,114,101,115,104,104,111,108,100,105,110,103,0,67,101,108,108,87,105,100,116,104,0,67,101,108,108,76,101,110,103,116,104,0,70,105,108,108,79,114,100,101,114,0,68,111,99,117,109,101,110,116,78,97,109,101,0,73,109,97,103,101,68,101,115,99,114,105,112,116,105,111,110,0,77,97,107,101,0,77,111,100,101,108,0,79,114,105,101,110,116,97,116,105,111,110,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,82,111,119,115,80,101,114,83,116,114,105,112,0,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,88,82,101,115,111,108,117,116,105,111,110,0,89,82,101,115,111,108,117,116,105,111,110,0,80,108,97,110,97,114,67,111,110,102,105,103,117,114,97,116,105,111,110,0,80,97,103,101,78,97,109,101,0,88,80,111,115,105,116,105,111,110,0,89,80,111,115,105,116,105,111,110,0,70,114,101,101,79,102,102,115,101,116,115,0,70,114,101,101,66,121,116,101,67,111,117,110,116,115,0,71,114,97,121,82,101,115,112,111,110,115,101,85,110,105,116,0,71,114,97,121,82,101,115,112,111,110,115,101,67,117,114,118,101,0,82,101,115,111,108,117,116,105,111,110,85,110,105,116,0,80,97,103,101,78,117,109,98,101,114,0,67,111,108,111,114,82,101,115,112,111,110,115,101,85,110,105,116,0,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,0,83,111,102,116,119,97,114,101,0,68,97,116,101,84,105,109,101,0,65,114,116,105,115,116,0,72,111,115,116,67,111,109,112,117,116,101,114,0,87,104,105,116,101,80,111,105,110,116,0,80,114,105,109,97,114,121,67,104,114,111,109,97,116,105,99,105,116,105,101,115,0,67,111,108,111,114,77,97,112,0,72,97,108,102,116,111,110,101,72,105,110,116,115,0,84,105,108,101,87,105,100,116,104,0,84,105,108,101,76,101,110,103,116,104,0,84,105,108,101,66,121,116,101,67,111,117,110,116,115,0,83,117,98,73,70,68,0,73,110,107,78,97,109,101,115,0,78,117,109,98,101,114,79,102,73,110,107,115,0,68,111,116,82,97,110,103,101,0,84,97,114,103,101,116,80,114,105,110,116,101,114,0,69,120,116,114,97,83,97,109,112,108,101,115,0,83,97,109,112,108,101,70,111,114,109,97,116,0,83,77,105,110,83,97,109,112,108,101,86,97,108,117,101,0,83,77,97,120,83,97,109,112,108,101,86,97,108,117,101,0,67,108,105,112,80,97,116,104,0,88,67,108,105,112,80,97,116,104,85,110,105,116,115,0,89,67,108,105,112,80,97,116,104,85,110,105,116,115,0,89,67,98,67,114,67,111,101,102,102,105,99,105,101,110,116,115,0,89,67,98,67,114,83,117,98,115,97,109,112,108,105,110,103,0,89,67,98,67,114,80,111,115,105,116,105,111,110,105,110,103,0,82,101,102,101,114,101,110,99,101,66,108,97,99,107,87,104,105,116,101,0,88,77,76,80,97,99,107,101,116,0,77,97,116,116,101,105,110,103,0,68,97,116,97,84,121,112,101,0,73,109,97,103,101,68,101,112,116,104,0,84,105,108,101,68,101,112,116,104,0,73,109,97,103,101,70,117,108,108,87,105,100,116,104,0,73,109,97,103,101,70,117,108,108,76,101,110,103,116,104,0,84,101,120,116,117,114,101,70,111,114,109,97,116,0,84,101,120,116,117,114,101,87,114,97,112,77,111,100,101,115,0,70,105,101,108,100,79,102,86,105,101,119,67,111,116,97,110,103,101,110,116,0,77,97,116,114,105,120,87,111,114,108,100,84,111,83,99,114,101,101,110,0,77,97,116,114,105,120,87,111,114,108,100,84,111,67,97,109,101,114,97,0,67,70,65,82,101,112,101,97,116,80,97,116,116,101,114,110,68,105,109,0,67,111,112,121,114,105,103,104,116,0,82,105,99,104,84,73,70,70,73,80,84,67,0,80,104,111,116,111,115,104,111,112,0,69,88,73,70,73,70,68,79,102,102,115,101,116,0,73,67,67,32,80,114,111,102,105,108,101,0,71,80,83,73,70,68,79,102,102,115,101,116,0,70,97,120,82,101,99,118,80,97,114,97,109,115,0,70,97,120,83,117,98,65,100,100,114,101,115,115,0,70,97,120,82,101,99,118,84,105,109,101,0,70,97,120,68,99,115,0,83,116,111,78,105,116,115,0,73,110,116,101,114,111,112,101,114,97,98,105,108,105,116,121,73,70,68,79,102,102,115,101,116,0,68,78,71,86,101,114,115,105,111,110,0,68,78,71,66,97,99,107,119,97,114,100,86,101,114,115,105,111,110,0,85,110,105,113,117,101,67,97,109,101,114,97,77,111,100,101,108,0,76,111,99,97,108,105,122,101,100,67,97,109,101,114,97,77,111,100,101,108,0,67,70,65,80,108,97,110,101,67,111,108,111,114,0,67,70,65,76,97,121,111,117,116,0,76,105,110,101,97,114,105,122,97,116,105,111,110,84,97,98,108,101,0,66,108,97,99,107,76,101,118,101,108,82,101,112,101,97,116,68,105,109,0,66,108,97,99,107,76,101,118,101,108,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,72,0,66,108,97,99,107,76,101,118,101,108,68,101,108,116,97,86,0,87,104,105,116,101,76,101,118,101,108,0,68,101,102,97,117,108,116,83,99,97,108,101,0,66,101,115,116,81,117,97,108,105,116,121,83,99,97,108,101,0,68,101,102,97,117,108,116,67,114,111,112,79,114,105,103,105,110,0,68,101,102,97,117,108,116,67,114,111,112,83,105,122,101,0,67,111,108,111,114,77,97,116,114,105,120,49,0,67,111,108,111,114,77,97,116,114,105,120,50,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,49,0,67,97,109,101,114,97,67,97,108,105,98,114,97,116,105,111,110,50,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,49,0,82,101,100,117,99,116,105,111,110,77,97,116,114,105,120,50,0,65,110,97,108,111,103,66,97,108,97,110,99,101,0,65,115,83,104,111,116,78,101,117,116,114,97,108,0,65,115,83,104,111,116,87,104,105,116,101,88,89,0,66,97,115,101,108,105,110,101,69,120,112,111,115,117,114,101,0,66,97,115,101,108,105,110,101,78,111,105,115,101,0,66,97,115,101,108,105,110,101,83,104,97,114,112,110,101,115,115,0,66,97,121,101,114,71,114,101,101,110,83,112,108,105,116,0,76,105,110,101,97,114,82,101,115,112,111,110,115,101,76,105,109,105,116,0,67,97,109,101,114,97,83,101,114,105,97,108,78,117,109,98,101,114,0,76,101,110,115,73,110,102,111,0,67,104,114,111,109,97,66,108,117,114,82,97,100,105,117,115,0,65,110,116,105,65,108,105,97,115,83,116,114,101,110,103,116,104,0,83,104,97,100,111,119,83,99,97,108,101,0,68,78,71,80,114,105,118,97,116,101,68,97,116,97,0,77,97,107,101,114,78,111,116,101,83,97,102,101,116,121,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,49,0,67,97,108,105,98,114,97,116,105,111,110,73,108,108,117,109,105,110,97,110,116,50,0,82,97,119,68,97,116,97,85,110,105,113,117,101,73,68,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,78,97,109,101,0,79,114,105,103,105,110,97,108,82,97,119,70,105,108,101,68,97,116,97,0,65,99,116,105,118,101,65,114,101,97,0,77,97,115,107,101,100,65,114,101,97,115,0,65,115,83,104,111,116,73,67,67,80,114,111,102,105,108,101,0,65,115,83,104,111,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,67,117,114,114,101,110,116,73,67,67,80,114,111,102,105,108,101,0,67,117,114,114,101,110,116,80,114,101,80,114,111,102,105,108,101,77,97,116,114,105,120,0,80,101,114,83,97,109,112,108,101,0,73,110,100,101,120,101,100,0,71,108,111,98,97,108,80,97,114,97,109,101,116,101,114,115,73,70,68,0,80,114,111,102,105,108,101,84,121,112,101,0,70,97,120,80,114,111,102,105,108,101,0,67,111,100,105,110,103,77,101,116,104,111,100,115,0,86,101,114,115,105,111,110,89,101,97,114,0,77,111,100,101,78,117,109,98,101,114,0,68,101,99,111,100,101,0,73,109,97,103,101,66,97,115,101,67,111,108,111,114,0,84,56,50,79,112,116,105,111,110,115,0,83,116,114,105,112,82,111,119,67,111,117,110,116,115,0,73,109,97,103,101,76,97,121,101,114,0,84,73,70,70,67,104,101,99,107,68,105,114,79,102,102,115,101,116,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,109,111,114,101,32,116,104,97,110,32,54,53,53,51,53,32,84,73,70,70,32,100,105,114,101,99,116,111,114,105,101,115,0,102,111,114,32,73,70,68,32,108,105,115,116,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,0,70,97,105,108,101,100,32,116,111,32,114,101,97,100,32,100,105,114,101,99,116,111,114,121,32,97,116,32,111,102,102,115,101,116,32,37,108,117,0,84,73,70,70,82,101,97,100,68,105,114,101,99,116,111,114,121,67,104,101,99,107,79,114,100,101,114,0,73,110,118,97,108,105,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,59,32,116,97,103,115,32,97,114,101,32,110,111,116,32,115,111,114,116,101,100,32,105,110,32,97,115,99,101,110,100,105,110,103,32,111,114,100,101,114,0,85,110,107,110,111,119,110,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,101,110,99,111,117,110,116,101,114,101,100,0,82,101,103,105,115,116,101,114,105,110,103,32,97,110,111,110,121,109,111,117,115,32,102,105,101,108,100,32,119,105,116,104,32,116,97,103,32,37,100,32,40,48,120,37,120,41,32,102,97,105,108,101,100,0,102,105,105,32,33,61,32,70,65,73,76],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+122916);allocate([69,68,95,70,73,73,0,116,105,102,95,100,105,114,114,101,97,100,46,99,0,80,108,97,110,97,114,99,111,110,102,105,103,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,99,111,110,116,105,103,32,105,110,115,116,101,97,100,32,111,102,32,99,104,117,110,107,121,0,77,105,115,115,105,110,103,82,101,113,117,105,114,101,100,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,37,115,34,32,102,105,101,108,100,0,73,109,97,103,101,76,101,110,103,116,104,0,116,105,108,101,115,0,115,116,114,105,112,115,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,110,117,109,98,101,114,32,111,102,32,37,115,0,84,105,108,101,79,102,102,115,101,116,115,0,83,116,114,105,112,79,102,102,115,101,116,115,0,117,110,107,110,111,119,110,32,116,97,103,110,97,109,101,0,73,103,110,111,114,105,110,103,32,37,115,32,115,105,110,99,101,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,110,111,116,32,102,111,117,110,100,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,0,80,104,111,116,111,109,101,116,114,105,99,32,116,97,103,32,118,97,108,117,101,32,97,115,115,117,109,101,100,32,105,110,99,111,114,114,101,99,116,44,32,97,115,115,117,109,105,110,103,32,100,97,116,97,32,105,115,32,89,67,98,67,114,32,105,110,115,116,101,97,100,32,111,102,32,82,71,66,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,56,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,115,115,117,109,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,105,115,32,51,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,116,97,103,32,105,115,32,109,105,115,115,105,110,103,44,32,97,112,112,108,121,105,110,103,32,99,111,114,114,101,99,116,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,118,97,108,117,101,32,111,102,32,51,0,67,111,108,111,114,109,97,112,0,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,105,115,32,109,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,66,111,103,117,115,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,87,114,111,110,103,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,102,105,101,108,100,44,32,105,103,110,111,114,105,110,103,32,97,110,100,32,99,97,108,99,117,108,97,116,105,110,103,32,102,114,111,109,32,105,109,97,103,101,108,101,110,103,116,104,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,102,111,114,32,99,104,111,112,112,101,100,32,34,83,116,114,105,112,79,102,102,115,101,116,115,34,32,97,114,114,97,121,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,99,97,110,108,105,110,101,32,115,105,122,101,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,116,105,108,101,32,115,105,122,101,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,122,101,114,111,32,115,116,114,105,112,32,115,105,122,101,0,102,111,114,32,34,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,34,32,97,114,114,97,121,0,69,115,116,105,109,97,116,101,83,116,114,105,112,66,121,116,101,67,111,117,110,116,115,0,67,97,110,110,111,116,32,100,101,116,101,114,109,105,110,101,32,115,105,122,101,32,111,102,32,117,110,107,110,111,119,110,32,116,97,103,32,116,121,112,101,32,37,100,0,84,73,70,70,70,101,116,99,104,83,116,114,105,112,84,104,105,110,103,0,102,111,114,32,115,116,114,105,112,32,97,114,114,97,121,0,40,116,109,115,105,122,101,95,116,41,100,97,116,97,115,105,122,101,62,48,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,82,101,97,100,68,105,114,69,110,116,114,121,65,114,114,97,121,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,0,84,73,70,70,82,101,97,100,68,105,114,69,110,116,114,121,79,117,116,112,117,116,69,114,114,0,73,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,73,110,99,111,109,112,97,116,105,98,108,101,32,116,121,112,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,73,79,32,101,114,114,111,114,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,73,110,99,111,114,114,101,99,116,32,118,97,108,117,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,67,97,110,110,111,116,32,104,97,110,100,108,101,32,100,105,102,102,101,114,101,110,116,32,118,97,108,117,101,115,32,112,101,114,32,115,97,109,112,108,101,32,102,111,114,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,115,105,122,101,32,111,102,32,34,37,115,34,32,118,97,108,117,101,32,102,97,105,108,101,100,59,32,116,97,103,32,105,103,110,111,114,101,100,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,114,101,97,100,105,110,103,32,111,102,32,34,37,115,34,59,32,116,97,103,32,105,103,110,111,114,101,100,0,84,73,70,70,70,101,116,99,104,78,111,114,109,97,108,84,97,103,0,78,111,32,100,101,102,105,110,105,116,105,111,110,32,102,111,117,110,100,32,102,111,114,32,116,97,103,32,37,100,0,102,105,112,32,33,61,32,78,85,76,76,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,79,84,72,69,82,0,102,105,112,45,62,115,101,116,95,102,105,101,108,100,95,116,121,112,101,33,61,84,73,70,70,95,83,69,84,71,69,84,95,73,78,84,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,99,111,110,116,97,105,110,115,32,110,117,108,108,32,98,121,116,101,32,105,110,32,118,97,108,117,101,59,32,118,97,108,117,101,32,105,110,99,111,114,114,101,99,116,108,121,32,116,114,117,110,99,97,116,101,100,32,100,117,114,105,110,103,32,114,101,97,100,105,110,103,32,100,117,101,32,116,111,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,108,105,109,105,116,97,116,105,111,110,115,0,65,83,67,73,73,32,118,97,108,117,101,32,102,111,114,32,116,97,103,32,34,37,115,34,32,100,111,101,115,32,110,111,116,32,101,110,100,32,105,110,32,110,117,108,108,32,98,121,116,101,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,50,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,50,44,32,103,111,116,32,37,100,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,62,61,49,0,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,32,102,111,114,32,102,105,101,108,100,32,34,37,115,34,44,32,101,120,112,101,99,116,101,100,32,37,100,44,32,103,111,116,32,37,100,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,102,105,112,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,102,105,112,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,112,100,105,114,0,84,73,70,70,70,101,116,99,104,68,105,114,101,99,116,111,114,121,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,116,104,105,115,32,105,115,32,112,114,111,98,97,98,108,121,32,110,111,116,32,97,32,118,97,108,105,100,32,73,70,68,32,111,102,102,115,101,116,0,116,111,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,37,46,49,48,48,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,122,101,114,111,32,116,97,103,32,100,105,114,101,99,116,111,114,105,101,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,83,111,114,114,121,44,32,114,101,113,117,101,115,116,101,100,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,115,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,77,105,115,115,105,110,103,32,110,101,101,100,101,100,32,37,115,32,116,97,103,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,32,119,105,116,104,32,37,115,61,37,100,44,32,97,110,100,32,37,115,61,37,100,32,97,110,100,32,66,105,116,115,47,83,97,109,112,108,101,61,37,100,0,83,97,109,112,108,101,115,47,112,105,120,101,108,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,82,71,66,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,67,111,108,111,114,32,99,104,97,110,110,101,108,115,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,115,101,112,97,114,97,116,101,100,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,73,110,107,83,101,116,0,83,111,114,114,121,44,32,76,111,103,76,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,0,67,111,109,112,114,101,115,115,105,111,110,0,83,111,114,114,121,44,32,76,111,103,76,117,118,32,100,97,116,97,32,109,117,115,116,32,104,97,118,101,32,37,115,61,37,100,32,111,114,32,37,100,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,76,111,103,76,117,118,32,105,109,97,103,101,115,32,119,105,116,104,32,37,115,61,37,100,0,80,108,97,110,97,114,99,111,110,102,105,103,117,114,97,116,105,111,110,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,119,105,116,104,32,37,115,61,37,100,32,97,110,100,32,37,115,61,37,100,0,66,105,116,115,47,115,97,109,112,108,101,0,77,105,115,115,105,110,103,32,114,101,113,117,105,114,101,100,32,34,67,111,108,111,114,109,97,112,34,32,116,97,103,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,102,111,114,32,99,111,108,111,114,109,97,112,32,99,111,112,121,0,105,109,103,45,62,85,97,84,111,65,97,61,61,78,85,76,76,0,116,105,102,95,103,101,116,105,109,97,103,101,46,99,0,66,117,105,108,100,77,97,112,85,97,84,111,65,97,0,105,109,103,45,62,66,105,116,100,101,112,116,104,49,54,84,111,56,61,61,78,85,76,76,0,66,117,105,108,100,77,97,112,66,105,116,100,101,112,116,104,49,54,84,111,56,0,105,110,105,116,67,73,69,76,97,98,67,111,110,118,101,114,115,105,111,110,0,78,111,32,115,112,97,99,101,32,102,111,114,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,67,73,69,32,76,42,97,42,98,42,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,46,0,83,111,114,114,121,44,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,0,78,111,32,34,103,101,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,0,78,111,32,34,112,117,116,34,32,114,111,117,116,105,110,101,32,115,101,116,117,112,108,59,32,112,114,111,98,97,98,108,121,32,99,97,110,32,110,111,116,32,104,97,110,100,108,101,32,105,109,97,103,101,32,102,111,114,109,97,116,0,103,116,83,116,114,105,112,83,101,112,97,114,97,116,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,116,105,108,101,32,98,117,102,102,101,114,0,103,116,84,105,108,101,83,101,112,97,114,97,116,101,0,105,110,105,116,89,67,98,67,114,67,111,110,118,101,114,115,105,111,110,0,78,111,32,115,112,97,99,101,32,102,111,114,32,89,67,98,67,114,45,62,82,71,66,32,99,111,110,118,101,114,115,105,111,110,32,115,116,97,116,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,112,104,111,116,111,109,101,116,114,105,99,32,99,111,110,118,101,114,115,105,111,110,32,116,97,98,108,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,66,38,87,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,65,115,115,117,109,105,110,103,32,56,45,98,105,116,32,99,111,108,111,114,109,97,112,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,97,108,101,116,116,101,32,109,97,112,112,105,110,103,32,116,97,98,108,101,0,73,110,118,97,108,105,100,32,118,101,114,116,105,99,97,108,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,114,105,112,32,98,117,102,102,101,114,0,34,37,115,34,58,32,66,97,100,32,109,111,100,101,0,84,73,70,70,67,108,105,101,110,116,79,112,101,110,0,37,115,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,32,40,84,73,70,70,32,115,116,114,117,99,116,117,114,101,41,0,79,110,101,32,111,102,32,116,104,101,32,99,108,105,101,110,116,32,112,114,111,99,101,100,117,114,101,115,32,105,115,32,78,85,76,76,32,112,111,105,110,116,101,114,46,0,67,97,110,110,111,116,32,114,101,97,100,32,84,73,70,70,32,104,101,97,100,101,114,0,78,111,116,32,97,32,84,73,70,70,32,111,114,32,77,68,73,32,102,105,108,101,44,32,98,97,100,32,109,97,103,105,99,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,32,37,100,32,40,48,120,37,120,41,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,111,102,102,115,101,116,115,105,122,101,32,37,100,32,40,48,120,37,120,41,0,78,111,116,32,97,32,84,73,70,70,32,102,105,108,101,44,32,98,97,100,32,66,105,103,84,73,70,70,32,117,110,117,115,101,100,32,37,100,32,40,48,120,37,120,41,0,40,116,111,102,102,95,116,41,116,105,102,45,62,116,105,102,95,115,105,122,101,61,61,110,0,116,105,102,95,111,112,101,110,46,99,0,70,105,108,101,32,110,111,116,32,111,112,101,110,32,102,111,114,32,114,101,97,100,105,110,103,0,67,97,110,32,110,111,116,32,114,101,97,100,32,115,99,97,110,108,105,110,101,115,32,102,114,111,109,32,97,32,116,105,108,101,100,32,105,109,97,103,101,0,40,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,78,79,82,69,65,68,82,65,87,41,61,61,48,0,116,105,102,95,114,101,97,100,46,99,0,84,73,70,70,82,101,97,100,66,117,102,102,101,114,83,101,116,117,112,0,73,110,118,97,108,105,100,32,98,117,102,102,101,114,32,115,105,122,101,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,83,116,114,105,112,0,37,108,117,58,32,83,116,114,105,112,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,84,73,70,70,70,105,108,108,83,116,114,105,112,0,73,110,118,97,108,105,100,32,115,116,114,105,112,32,98,121,116,101,32,99,111,117,110,116,32,37,108,108,117,44,32,115,116,114,105,112,32,37,108,117,0,82,101,97,100,32,101,114,114,111,114,32,111,110,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,115,116,114,105,112,32,37,108,117,0,78,111,32,115,112,97,99,101,32,102,111,114,32,100,97,116,97,32,98,117,102,102,101,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,67,97,110,32,110,111,116,32,114,101,97,100,32,116,105,108,101,115,32,102,114,111,109,32,97,32,115,116,114,105,112,112,101,100,32,105,109,97,103,101,0,84,73,70,70,82,101,97,100,69,110,99,111,100,101,100,84,105,108,101,0,37,108,117,58,32,84,105,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,84,73,70,70,70,105,108,108,84,105,108,101,0,37,108,108,117,58,32,73,110,118,97,108,105,100,32,116,105,108,101,32,98,121,116,101,32,99,111,117,110,116,44,32,116,105,108,101,32,37,108,117,0,68,97,116,97,32,98,117,102,102,101,114,32,116,111,111,32,115,109,97,108,108,32,116,111,32,104,111,108,100,32,116,105,108,101,32,37,108,117,0,84,73,70,70,83,116,97,114,116,84,105,108,101,0,90,101,114,111,32,116,105,108,101,115,0,40,99,99,32,38,32,49,41,32,61,61,32,48,0,95,84,73,70,70,83,119,97,98,49,54,66,105,116,68,97,116,97,0,40,99,99,32,37,32,51,41,32,61,61,32,48,0,95,84,73,70,70,83,119,97,98,50,52,66,105,116,68,97,116,97,0,40,99,99,32,38,32,51,41,32,61,61,32,48,0,95,84,73,70,70,83,119,97,98,51,50,66,105,116,68,97,116,97,0,40,99,99,32,38,32,55,41,32,61,61,32,48,0,95,84,73,70,70,83,119,97,98,54,52,66,105,116,68,97,116,97,0,84,73,70,70,82,101,97,100,82,97,119,84,105,108,101,49,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,114,111,119,32,37,108,117,44,32,99,111,108,32,37,108,117,44,32,116,105,108,101,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,84,73,70,70,82,101,97,100,82,97,119,83,116,114,105,112,49,0,82,101,97,100,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,115,116,114,105,112,32,37,108,117,59,32,103,111,116,32,37,108,108,117,32,98,121,116,101,115,44,32,101,120,112,101,99,116,101,100,32,37,108,108,117,0,84,73,70,70,67,111,109,112,117,116,101,83,116,114,105,112,0,84,73,70,70,78,117,109,98,101,114,79,102,83,116,114,105,112,115,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,54,52,0,73,110,118,97,108,105,100,32,116,100,95,115,97,109,112,108,101,115,112,101,114,112,105,120,101,108,32,118,97,108,117,101,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,54,52,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,0,67,111,109,112,117,116,101,100,32,115,99,97,110,108,105,110,101,32,115,105,122,101,32,105,115,32,122,101,114,111,0,84,73,70,70,86,83,116,114,105,112,83,105,122,101,0,84,73,70,70,83,116,114,105,112,83,105,122,101,0,84,73,70,70,83,99,97,110,108,105,110,101,83,105,122,101,0,73,110,116,101,103,101,114,32,97,114,105,116,104,109,101,116,105,99,32,111,118,101,114,102,108,111,119,0,0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,37,108,117,58,32,67,111,108,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,37,108,117,58,32,82,111,119,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,37,108,117,58,32,68,101,112,116,104,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,37,108,117,58,32,83,97,109,112,108,101,32,111,117,116,32,111,102,32,114,97,110,103,101,44,32,109,97,120,32,37,108,117,0,84,73,70,70,78,117,109,98,101,114,79,102,84,105,108,101,115,0,84,73,70,70,84,105,108,101,82,111,119,83,105,122,101,54,52,0,84,105,108,101,32,108,101,110,103,116,104,32,105,115,32,122,101,114,111,0,84,105,108,101,32,119,105,100,116,104,32,105,115,32,122,101,114,111,0,84,73,70,70,84,105,108,101,82,111,119,83,105,122,101,0,83,97,109,112,108,101,115,32,112,101,114,32,112,105,120,101,108,32,105,115,32,122,101,114,111,0,67,111,109,112,117,116,101,100,32,116,105,108,101,32,114,111,119,32,115,105,122,101,32,105,115,32,122,101,114,111,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,0,84,73,70,70,86,84,105,108,101,83,105,122,101,54,52,0,73,110,118,97,108,105,100,32,89,67,98,67,114,32,115,117,98,115,97,109,112,108,105,110,103,32,40,37,100,120,37,100,41,0,84,73,70,70,84,105,108,101,83,105,122,101,0,116,100,45,62,116,100,95,110,115,116,114,105,112,115,32,62,32,48,0,116,105,102,95,119,114,105,116,101,46,99,0,84,73,70,70,65,112,112,101,110,100,84,111,83,116,114,105,112,0,83,101,101,107,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,87,114,105,116,101,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,0,84,73,70,70,79,112,101,110,0,37,115,58,32,37,115,0,37,115,58,32,67,97,110,110,111,116,32,111,112,101,110,0,37,115,58,32,0,46,10,0,87,97,114,110,105,110,103,44,32,0,73,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,105,110,32,37,115,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,37,115,32,40,37,108,100,32,101,108,101,109,101,110,116,115,32,111,102,32,37,108,100,32,98,121,116,101,115,32,101,97,99,104,41,0,78,111,32,115,112,97,99,101,32,102,111,114,32,34,84,114,97,110,115,102,101,114,70,117,110,99,116,105,111,110,34,32,116,97,103,0,37,115,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,115,99,97,110,108,105,110,101,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,101,110,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,37,115,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,67,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,32,37,117,32,37,115,32,100,101,99,111,100,105,110,103,32,105,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,67,111,109,112,114,101,115,115,105,111,110,32,97,108,103,111,114,105,116,104,109,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,114,97,110,100,111,109,32,97,99,99,101,115,115,0,69,114,114,111,114,32,117,112,100,97,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,84,73,70,70,82,101,119,114,105,116,101,68,105,114,101,99,116,111,114,121,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,69,114,114,111,114,32,102,101,116,99,104,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,83,97,110,105,116,121,32,99,104,101,99,107,32,111,110,32,116,97,103,32,99,111,117,110,116,32,102,97,105,108,101,100,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,84,73,70,70,0,84,73,70,70,82,101,115,101,116,70,105,101,108,100,0,77,101,109,111,114,121,32,109,97,112,112,101,100,32,102,105,108,101,115,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,111,112,101,114,97,116,105,111,110,46,0,65,116,116,101,109,112,116,32,116,111,32,114,101,115,101,116,32,102,105,101,108,100,32,111,110,32,100,105,114,101,99,116,111,114,121,32,110,111,116,32,97,108,114,101,97,100,121,32,111,110,32,100,105,115,107,46,0,37,115,58,32,83,101,101,107,32,101,114,114,111,114,32,97,99,99,101,115,115,105,110,103,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,99,111,117,110,116,0,37,115,58,32,67,97,110,32,110,111,116,32,114,101,97,100,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,37,115,58,32,67,111,117,108,100,32,110,111,116,32,102,105,110,100,32,116,97,103,32,37,100,46,0,102,111,114,32,102,105,101,108,100,32,98,117,102,102,101,114,46,0,86,97,108,117,101,32,101,120,99,101,101,100,115,32,51,50,98,105,116,32,114,97,110,103,101,32,111,102,32,111,117,116,112,117,116,32,116,121,112,101,46,0,37,115,58,32,67,97,110,32,110,111,116,32,119,114,105,116,101,32,84,73,70,70,32,100,105,114,101,99,116,111,114,121,32,101,110,116,114,121,46,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,83,101,99,0,69,114,114,111,114,32,112,111,115,116,45,101,110,99,111,100,105,110,103,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,69,114,114,111,114,32,102,108,117,115,104,105,110,103,32,100,97,116,97,32,98,101,102,111,114,101,32,100,105,114,101,99,116,111,114,121,32,119,114,105,116,101,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,104,111,114,116,80,101,114,83,97,109,112,108,101,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,111,108,111,114,109,97,112,0,99,111,117,110,116,60,48,120,56,48,48,48,48,48,48,48,0,116,105,102,95,100,105,114,119,114,105,116,101,46,99,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,104,111,114,116,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,84,114,97,110,115,102,101,114,102,117,110,99,116,105,111,110,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,117,98,105,102,100,0,112,97,32,33,61,32,48,0,42,112,97,32,60,61,32,48,120,70,70,70,70,70,70,70,70,85,76,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,65,83,67,73,73,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,48,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,83,72,79,82,84,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,49,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,76,79,78,71,0,111,45,62,102,105,101,108,100,95,116,121,112,101,61,61,84,73,70,70,95,85,78,68,69,70,73,78,69,68,0,111,45,62,102,105,101,108,100,95,114,101,97,100,99,111,117,110,116,61,61,84,73,70,70,95,86,65,82,73,65,66,76,69,50,0,111,45,62,102,105,101,108,100,95,112,97,115,115,99,111,117,110,116,61,61,49,0,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,115,104,111,114,116,65,114,114,97,121,0,99,111,117,110,116,60,48,120,52,48,48,48,48,48,48,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,65,114,114,97,121,0,99,111,117,110,116,60,48,120,50,48,48,48,48,48,48,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,76,111,110,103,56,65,114,114,97,121,0,116,105,102,45,62,116,105,102,95,102,108,97,103,115,38,84,73,70,70,95,66,73,71,84,73,70,70,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,108,111,110,103,56,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,83,114,97,116,105,111,110,97,108,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,70,108,111,97,116,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,68,111,117,98,108,101,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,73,102,100,56,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,73,102,100,73,102,100,56,65,114,114,97,121,0,65,116,116,101,109,112,116,32,116,111,32,119,114,105,116,101,32,118,97,108,117,101,32,108,97,114,103,101,114,32,116,104,97,110,32,48,120,70,70,70,70,70,70,70,70,32,105,110,32,67,108,97,115,115,105,99,32,84,73,70,70,32,102,105,108,101,46,0,84,73,70,70,76,105,110,107,68,105,114,101,99,116,111,114,121,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,83,117,98,73,70,68,32,100,105,114,101,99,116,111,114,121,32,108,105,110,107,0,69,114,114,111,114,32,119,114,105,116,105,110,103,32,84,73,70,70,32,104,101,97,100,101,114,0,77,97,120,105,109,117,109,32,84,73,70,70,32,102,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,101,100,0,110,97,60,110,100,105,114,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,100,105,114,101,99,116,111,114,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,83,97,109,112,108,101,102,111,114,109,97,116,65,114,114,97,121,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,76,111,110,103,76,111,110,103,56,65,114,114,97,121,0,118,97,108,117,101,62,61,48,46,48,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,67,104,101,99,107,101,100,82,97,116,105,111,110,97,108,0,100,105,114,91,109,93,46,116,100,105,114,95,116,97,103,33,61,116,97,103,0,84,73,70,70,87,114,105,116,101,68,105,114,101,99,116,111,114,121,84,97,103,68,97,116,97,0,73,79,32,101,114,114,111,114,32,119,114,105,116,105,110,103,32,116,97,103,32,100,97,116,97,0,100,97,116,97,108,101,110,103,116,104,60,48,120,56,48,48,48,48,48,48,48,85,76,0,78,111,110,101,0,76,90,87,0,80,97,99,107,66,105,116,115,0,84,104,117,110,100,101,114,83,99,97,110,0,78,101,88,84,0,74,80,69,71,0,79,108,100,45,115,116,121,108,101,32,74,80,69,71,0,67,67,73,84,84,32,82,76,69,0,67,67,73,84,84,32,82,76,69,47,87,0,67,67,73,84,84,32,71,114,111,117,112,32,51,0,67,67,73,84,84,32,71,114,111,117,112,32,52,0,73,83,79,32,74,66,73,71,0,68,101,102,108,97,116,101,0,65,100,111,98,101,68,101,102,108,97,116,101,0,80,105,120,97,114,76,111,103,0,83,71,73,76,111,103,0,83,71,73,76,111,103,50,52,0,76,90,77,65,0,37,100,0,37,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,32,105,115,32,110,111,116,32,99,111,110,102,105,103,117,114,101,100,0,110,32,62,32,48,0,116,105,102,95,100,117,109,112,109,111,100,101,46,99,0,68,117,109,112,77,111,100,101,69,110,99,111,100,101,0,68,117,109,112,77,111,100,101,68,101,99,111,100,101,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,101,120,112,101,99,116,101,100,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,97,116,32,109,111,115,116,32,37,108,108,100,32,98,121,116,101,115,44,32,103,111,116,32,97,32,114,101,113,117,101,115,116,32,102,111,114,32,37,108,108,100,32,98,121,116,101,115,0,0,128,192,224,240,248,252,254,255,120,32,61,61,32,108,97,115,116,120,0,116,105,102,95,102,97,120,51,46,99,0,95,84,73,70,70,70,97,120,51,102,105,108,108,114,117,110,115,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,51,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,51,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,84,73,70,70,73,110,105,116,67,67,73,84,84,70,97,120,52,0,77,101,114,103,105,110,103,32,67,67,73,84,84,32,70,97,120,32,52,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,70,97,120,51,68,101,99,111,100,101,82,76,69,0,116,105,108,101,0,115,116,114,105,112,0,66,97,100,32,99,111,100,101,32,119,111,114,100,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,80,114,101,109,97,116,117,114,101,32,69,79,70,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,80,114,101,109,97,116,117,114,101,32,69,79,76,0,76,105,110,101,32,108,101,110,103,116,104,32,109,105,115,109,97,116,99,104,0,37,115,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,103,111,116,32,37,117,44,32,101,120,112,101,99,116,101,100,32,37,117,41,0,108,101,110,103,116,104,32,60,32,57,0,70,97,120,51,80,117,116,66,105,116,115,0,70,97,120,52,69,110,99,111,100,101,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,119,114,105,116,116,101,110,0,8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+133156);allocate([112,117,116,115,112,97,110,0,116,101,45,62,114,117,110,108,101,110,32,61,61,32,54,52,42,40,115,112,97,110,62,62,54,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,7,8,70,97,120,52,68,101,99,111,100,101,0,85,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,40,110,111,116,32,115,117,112,112,111,114,116,101,100,41,32,97,116,32,108,105,110,101,32,37,117,32,111,102,32,37,115,32,37,117,32,40,120,32,37,117,41,0,71,114,111,117,112,52,79,112,116,105,111,110,115,0,71,114,111,117,112,51,79,112,116,105,111,110,115,0,73,110,105,116,67,67,73,84,84,70,97,120,51,0,77,101,114,103,105,110,103,32,99,111,109,109,111,110,32,67,67,73,84,84,32,70,97,120,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,115,116,97,116,101,32,98,108,111,99,107,0,70,97,120,51,67,108,101,97,110,117,112,0,70,97,120,51,69,110,99,111,100,101,0,116,112,97,114,109,32,60,32,57,0,70,97,120,51,80,117,116,69,79,76,0,70,97,120,51,80,114,101,69,110,99,111,100,101,0,70,97,120,51,68,101,99,111,100,101,49,68,0,70,97,120,51,80,114,101,68,101,99,111,100,101,0,70,97,120,51,83,101,116,117,112,83,116,97,116,101,0,66,105,116,115,47,115,97,109,112,108,101,32,109,117,115,116,32,98,101,32,49,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,101,110,99,111,100,105,110,103,47,100,101,99,111,100,105,110,103,0,82,111,119,32,112,105,120,101,108,115,32,105,110,116,101,103,101,114,32,111,118,101,114,102,108,111,119,32,40,114,111,119,112,105,120,101,108,115,32,37,117,41,0,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,117,110,32,97,114,114,97,121,115,0,78,111,32,115,112,97,99,101,32,102,111,114,32,71,114,111,117,112,32,51,47,52,32,114,101,102,101,114,101,110,99,101,32,108,105,110,101,0,70,97,120,51,68,101,99,111,100,101,50,68,0,70,97,120,51,80,114,105,110,116,68,105,114,0,32,32,71,114,111,117,112,32,52,32,79,112,116,105,111,110,115,58,0,37,115,117,110,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,0,32,0,32,32,71,114,111,117,112,32,51,32,79,112,116,105,111,110,115,58,0,37,115,50,45,100,32,101,110,99,111,100,105,110,103,0,43,0,37,115,69,79,76,32,112,97,100,100,105,110,103,0,32,40,37,108,117,32,61,32,48,120,37,108,120,41,10,0,32,32,70,97,120,32,68,97,116,97,58,0,32,99,108,101,97,110,0,32,114,101,99,101,105,118,101,114,32,114,101,103,101,110,101,114,97,116,101,100,0,32,117,110,99,111,114,114,101,99,116,101,100,32,101,114,114,111,114,115,0,32,40,37,117,32,61,32,48,120,37,120,41,10,0,32,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,32,32,67,111,110,115,101,99,117,116,105,118,101,32,66,97,100,32,70,97,120,32,76,105,110,101,115,58,32,37,108,117,10,0,70,97,120,51,86,83,101,116,70,105,101,108,100,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,48,0,70,97,120,51,86,71,101,116,70,105,101,108,100,0,70,97,120,77,111,100,101,0,70,97,120,70,105,108,108,70,117,110,99,0,66,97,100,70,97,120,76,105,110,101,115,0,67,108,101,97,110,70,97,120,68,97,116,97,0,67,111,110,115,101,99,117,116,105,118,101,66,97,100,70,97,120,76,105,110,101,115,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,74,80,69,71,0,116,105,102,95,106,112,101,103,46,99,0,84,73,70,70,73,110,105,116,74,80,69,71,0,77,101,114,103,105,110,103,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,32,115,116,97,116,101,32,98,108,111,99,107,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,74,80,69,71,32,116,97,98,108,101,115,0,74,80,69,71,67,108,101,97,110,117,112,0,74,80,69,71,69,110,99,111,100,101,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,100,105,115,99,97,114,100,101,100,0,70,97,105,108,101,100,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,0,74,80,69,71,80,114,101,69,110,99,111,100,101,0,33,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,83,116,114,105,112,47,116,105,108,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,74,80,69,71,0,74,80,69,71,69,110,99,111,100,101,82,97,119,0,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,80,104,111,116,111,109,101,116,114,105,99,73,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,66,105,116,115,80,101,114,83,97,109,112,108,101,32,37,100,32,110,111,116,32,97,108,108,111,119,101,100,32,102,111,114,32,74,80,69,71,0,74,80,69,71,32,116,105,108,101,32,104,101,105,103,104,116,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,74,80,69,71,32,116,105,108,101,32,119,105,100,116,104,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,0,82,111,119,115,80,101,114,83,116,114,105,112,32,109,117,115,116,32,98,101,32,109,117,108,116,105,112,108,101,32,111,102,32,37,100,32,102,111,114,32,74,80,69,71,0,0,0,0,0,0,0,0,0,0,0,84,73,70,70,106,112,101,103,95,116,97,98,108,101,115,95,100,101,115,116,0,78,111,32,115,112,97,99,101,32,102,111,114,32,74,80,69,71,84,97,98,108,101,115,0,74,80,69,71,76,105,98,0,102,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,74,80,69,71,80,114,101,68,101,99,111,100,101,0,115,112,45,62,99,105,110,102,111,46,99,111,109,109,46,105,115,95,100,101,99,111,109,112,114,101,115,115,111,114,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,74,80,69,71,32,115,116,114,105,112,47,116,105,108,101,32,115,105,122,101,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,100,105,109,101,110,115,105,111,110,115,44,32,101,120,112,101,99,116,101,100,32,37,100,120,37,100,44,32,103,111,116,32,37,100,120,37,100,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,99,111,109,112,111,110,101,110,116,32,99,111,117,110,116,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,37,100,44,37,100,10,65,112,112,97,114,101,110,116,108,121,32,115,104,111,117,108,100,32,98,101,32,37,100,44,37,100,46,0,73,109,112,114,111,112,101,114,32,74,80,69,71,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,74,80,69,71,68,101,99,111,100,101,82,97,119,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,46,0,97,112,112,108,105,99,97,116,105,111,110,32,98,117,102,102,101,114,32,110,111,116,32,108,97,114,103,101,32,101,110,111,117,103,104,32,102,111,114,32,97,108,108,32,100,97,116,97,44,32,112,111,115,115,105,98,108,101,32,115,117,98,115,97,109,112,108,105,110,103,32,105,115,115,117,101,0,84,73,70,70,82,101,97,100,83,99,97,110,108,105,110,101,0,115,99,97,110,108,105,110,101,32,111,114,105,101,110,116,101,100,32,97,99,99,101,115,115,32,105,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,100,111,119,110,115,97,109,112,108,101,100,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,105,109,97,103,101,115,44,32,99,111,110,115,105,100,101,114,32,101,110,97,98,108,105,110,103,32,84,73,70,70,95,74,80,69,71,67,79,76,79,82,77,79,68,69,32,97,115,32,74,80,69,71,67,79,76,79,82,77,79,68,69,95,82,71,66,46,0,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,66,111,103,117,115,32,74,80,69,71,84,97,98,108,101,115,32,102,105,101,108,100,0,255,217,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,0,85,110,97,98,108,101,32,116,111,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,111,102,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,109,60,48,120,56,48,48,48,48,48,48,48,85,76,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,82,101,97,100,66,121,116,101,0,74,80,69,71,70,105,120,117,112,84,97,103,115,83,117,98,115,97,109,112,108,105,110,103,83,101,99,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,104,97,118,101,32,110,111,32,84,73,70,70,32,101,113,117,105,118,97,108,101,110,116,44,32,97,117,116,111,45,99,111,114,114,101,99,116,105,111,110,32,111,102,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,102,97,105,108,101,100,0,65,117,116,111,45,99,111,114,114,101,99,116,101,100,32,102,111,114,109,101,114,32,84,73,70,70,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,116,111,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,105,110,115,105,100,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,91,37,100,44,37,100,93,0,85,110,97,98,108,101,32,116,111,32,97,117,116,111,45,99,111,114,114,101,99,116,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,44,32,108,105,107,101,108,121,32,99,111,114,114,117,112,116,32,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,32,102,105,114,115,116,32,115,116,114,105,112,47,116,105,108,101,59,32,97,117,116,111,45,99,111,114,114,101,99,116,105,110,103,32,115,107,105,112,112,101,100,0,74,80,69,71,80,114,105,110,116,68,105,114,0,32,32,74,80,69,71,32,84,97,98,108,101,115,58,32,40,37,108,117,32,98,121,116,101,115,41,10,0,74,80,69,71,86,83,101,116,70,105,101,108,100,0,74,80,69,71,86,71,101,116,70,105,101,108,100,0,74,80,69,71,84,97,98,108,101,115,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,50,52,32,124,124,32,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,83,71,73,76,79,71,0,116,105,102,95,108,117,118,46,99,0,84,73,70,70,73,110,105,116,83,71,73,76,111,103,0,77,101,114,103,105,110,103,32,83,71,73,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,37,115,58,32,78,111,32,115,112,97,99,101,32,102,111,114,32,76,111,103,76,117,118,32,115,116,97,116,101,32,98,108,111,99,107,0,85,110,107,110,111,119,110,32,100,97,116,97,32,102,111,114,109,97,116,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,76,111,103,76,117,118,86,83,101,116,70,105,101,108,100,0,85,110,107,110,111,119,110,32,101,110,99,111,100,105,110,103,32,37,100,32,102,111,114,32,76,111,103,76,117,118,32,99,111,109,112,114,101,115,115,105,111,110,0,76,111,103,76,117,118,67,108,101,97,110,117,112,0,99,99,37,114,111,119,108,101,110,32,61,61,32,48,0,76,111,103,76,117,118,69,110,99,111,100,101,84,105,108,101,0,76,111,103,76,117,118,69,110,99,111,100,101,83,116,114,105,112,0,76,111,103,76,117,118,83,101,116,117,112,69,110,99,111,100,101,0,73,110,97,112,112,114,111,112,114,105,97,116,101,32,112,104,111,116,111,109,101,116,114,105,99,32,105,110,116,101,114,112,114,101,116,97,116,105,111,110,32,37,100,32,102,111,114,32,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,59,32,37,115,0,109,117,115,116,32,98,101,32,101,105,116,104,101,114,32,76,111,103,76,85,86,32,111,114,32,76,111,103,76,0,89,44,32,76,0,88,89,90,44,32,76,117,118,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,115,117,112,112,111,114,116,101,100,32,111,110,108,121,32,102,111,114,32,37,115,44,32,111,114,32,114,97,119,32,100,97,116,97,0,115,32,61,61,32,48,0,76,111,103,76,49,54,69,110,99,111,100,101,0,115,112,45,62,116,98,117,102,108,101,110,32,62,61,32,110,112,105,120,101,108,115,0,76,111,103,76,49,54,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,0,78,111,32,115,112,97,99,101,32,102,111,114,32,83,71,73,76,111,103,32,116,114,97,110,115,108,97,116,105,111,110,32,98,117,102,102,101,114,0,76,111,103,76,117,118,69,110,99,111,100,101,51,50,0,76,111,103,76,117,118,69,110,99,111,100,101,50,52,0,76,111,103,76,117,118,73,110,105,116,83,116,97,116,101,0,116,100,45,62,116,100,95,112,104,111,116,111,109,101,116,114,105,99,32,61,61,32,80,72,79,84,79,77,69,84,82,73,67,95,76,79,71,76,85,86,0,83,71,73,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32,110,111,110,45,99,111,110,116,105,103,117,111,117,115,32,100,97,116,97,0,78,111,32,115,117,112,112,111,114,116,32,102,111,114,32,99,111,110,118,101,114,116,105,110,103,32,117,115,101,114,32,100,97,116,97,32,102,111,114,109,97,116,32,116,111,32,76,111,103,76,117,118,0,76,111,103,76,117,118,68,101,99,111,100,101,84,105,108,101,0,76,111,103,76,117,118,68,101,99,111,100,101,83,116,114,105,112,0,76,111,103,76,117,118,83,101,116,117,112,68,101,99,111,100,101,0,76,111,103,76,49,54,68,101,99,111,100,101,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,114,111,119,32,37,108,117,32,40,115,104,111,114,116,32,37,108,108,117,32,112,105,120,101,108,115,41,0,76,111,103,76,117,118,68,101,99,111,100,101,51,50,0,76,111,103,76,117,118,68,101,99,111,100,101,50,52,0,83,71,73,76,111,103,68,97,116,97,70,109,116,0,83,71,73,76,111,103,69,110,99,111,100,101,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,76,90,87,0,116,105,102,95,108,122,119,46,99,0,84,73,70,70,73,110,105,116,76,90,87,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,115,116,97,116,101,32,98,108,111,99,107,0,116,105,102,45,62,116,105,102,95,100,97,116,97,32,33,61,32,48,0,76,90,87,67,108,101,97,110,117,112,0,115,112,45,62,101,110,99,95,104,97,115,104,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,69,110,99,111,100,101,0,110,98,105,116,115,32,60,61,32,66,73,84,83,95,77,65,88,0,76,90,87,80,114,101,69,110,99,111,100,101,0,76,90,87,83,101,116,117,112,69,110,99,111,100,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,104,97,115,104,32,116,97,98,108,101,0,76,90,87,68,101,99,111,100,101,0,115,112,45,62,100,101,99,95,99,111,100,101,116,97,98,32,33,61,32,78,85,76,76,0,76,90,87,68,101,99,111,100,101,58,32,83,116,114,105,112,32,37,100,32,110,111,116,32,116,101,114,109,105,110,97,116,101,100,32,119,105,116,104,32,69,79,73,32,99,111,100,101,0,76,90,87,68,101,99,111,100,101,58,32,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,67,111,114,114,117,112,116,101,100,32,76,90,87,32,116,97,98,108,101,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,87,114,111,110,103,32,108,101,110,103,116,104,32,111,102,32,100,101,99,111,100,101,100,32,115,116,114,105,110,103,58,32,100,97,116,97,32,112,114,111,98,97,98,108,121,32,99,111,114,114,117,112,116,101,100,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,0,66,111,103,117,115,32,101,110,99,111,100,105,110,103,44,32,108,111,111,112,32,105,110,32,116,104,101,32,99,111,100,101,32,116,97,98,108,101,59,32,115,99,97,110,108,105,110,101,32,37,100,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,100,32,40,115,104,111,114,116,32,37,108,108,117,32,98,121,116,101,115,41,0,76,90,87,80,114,101,68,101,99,111,100,101,0,79,108,100,45,115,116,121,108,101,32,76,90,87,32,99,111,100,101,115,44,32,99,111,110,118,101,114,116,32,102,105,108,101,0,76,90,87,68,101,99,111,100,101,67,111,109,112,97,116,0,76,90,87,83,101,116,117,112,68,101,99,111,100,101,0,78,111,32,115,112,97,99,101,32,102,111,114,32,76,90,87,32,99,111,100,101,32,116,97,98,108,101,0,78,101,88,84,68,101,99,111,100,101,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,100,0,78,101,88,84,80,114,101,68,101,99,111,100,101,0,85,110,115,117,112,112,111,114,116,101,100,32,66,105,116,115,80,101,114,83,97,109,112,108,101,32,61,32,37,100,0,115,99,104,101,109,101,61,61,67,79,77,80,82,69,83,83,73,79,78,95,79,74,80,69,71,0,116,105,102,95,111,106,112,101,103,46,99,0,84,73,70,70,73,110,105,116,79,74,80,69,71,0,77,101,114,103,105,110,103,32,79,108,100,32,74,80,69,71,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,79,74,80,69,71,32,115,116,97,116,101,32,98,108,111,99,107,0,115,112,33,61,78,85,76,76,0,79,74,80,69,71,80,114,105,110,116,68,105,114,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,58,32,37,108,117,10,0,32,32,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,58,32,37,108,117,10,0,32,32,74,112,101,103,81,84,97,98,108,101,115,58,0,32,37,108,117,0,32,32,74,112,101,103,68,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,65,99,84,97,98,108,101,115,58,0,32,32,74,112,101,103,80,114,111,99,58,32,37,117,10,0,32,32,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118,97,108,58,32,37,117,10,0,79,74,80,69,71,86,83,101,116,70,105,101,108,100,0,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,104,97,115,32,105,110,99,111,114,114,101,99,116,32,99,111,117,110,116,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,95,100,111,110,101,61,61,48,0,79,74,80,69,71,83,117,98,115,97,109,112,108,105,110,103,67,111,114,114,101,99,116,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,110,111,116,32,97,112,112,114,111,112,114,105,97,116,101,32,102,111,114,32,116,104,105,115,32,80,104,111,116,111,109,101,116,114,105,99,32,97,110,100,47,111,114,32,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,91,37,100,44,37,100,93,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,0,83,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,105,115,32,110,111,116,32,115,101,116,44,32,121,101,116,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,101,102,97,117,108,116,32,118,97,108,117,101,115,32,91,50,44,50,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,83,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,115,117,98,115,97,109,112,108,105,110,103,32,116,97,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,40,110,111,114,32,97,110,121,32,111,116,104,101,114,32,118,97,108,117,101,115,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,41,59,32,97,115,115,117,109,105,110,103,32,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,97,116,97,32,105,115,32,99,111,114,114,101,99,116,32,97,110,100,32,100,101,115,117,98,115,97,109,112,108,105,110,103,32,105,110,115,105,100,101,32,74,80,69,71,32,100,101,99,111,109,112,114,101,115,115,105,111,110,0,83,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,32,91,37,100,44,37,100,93,32,97,114,101,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,84,73,70,70,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,62,48,0,79,74,80,69,71,82,101,97,100,66,121,116,101,80,101,101,107,0,79,74,80,69,71,82,101,97,100,66,121,116,101,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,0,115,112,45,62,105,110,95,98,117,102,102,101,114,95,116,111,103,111,61,61,48,0,79,74,80,69,71,82,101,97,100,83,107,105,112,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,114,105,0,67,111,114,114,117,112,116,32,68,82,73,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,113,116,0,67,111,114,114,117,112,116,32,68,81,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,79,74,80,69,71,82,101,97,100,66,108,111,99,107,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,68,104,116,0,67,111,114,114,117,112,116,32,68,72,84,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,108,101,110,62,48,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,102,0,67,111,114,114,117,112,116,32,83,79,70,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,115,97,109,112,108,101,115,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,110,117,109,98,101,114,32,111,102,32,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,104,101,105,103,104,116,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,119,105,100,116,104,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,109,97,103,101,32,119,105,100,116,104,32,101,120,99,101,101,100,115,32,101,120,112,101,99,116,101,100,32,105,109,97,103,101,32,119,105,100,116,104,0,74,80,69,71,32,99,111,109,112,114,101,115,115,101,100,32,100,97,116,97,32,105,110,100,105,99,97,116,101,115,32,117,110,101,120,112,101,99,116,101,100,32,115,117,98,115,97,109,112,108,105,110,103,32,118,97,108,117,101,115,0,115,112,45,62,112,108,97,110,101,95,115,97,109,112,108,101,95,111,102,102,115,101,116,61,61,48,0,85,110,107,110,111,119,110,32,109,97,114,107,101,114,32,116,121,112,101,32,37,100,32,105,110,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,81,84,97,98,108,101,0,77,105,115,115,105,110,103,32,74,80,69,71,32,116,97,98,108,101,115,0,67,111,114,114,117,112,116,32,74,112,101,103,81,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,68,99,84,97,98,108,101,0,67,111,114,114,117,112,116,32,74,112,101,103,68,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,84,97,98,108,101,115,65,99,84,97,98,108,101,0,67,111,114,114,117,112,116,32,74,112,101,103,65,99,84,97,98,108,101,115,32,116,97,103,32,118,97,108,117,101,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,99,111,114,114,101,99,116,61,61,48,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,83,101,99,83,116,114,101,97,109,83,111,115,0,67,111,114,114,117,112,116,32,83,79,83,32,109,97,114,107,101,114,32,105,110,32,74,80,69,71,32,100,97,116,97,0,110,62,48,0,79,74,80,69,71,82,101,97,100,66,117,102,102,101,114,70,105,108,108,0,110,60,61,79,74,80,69,71,95,66,85,70,70,69,82,0,40,117,105,110,116,54,52,41,110,60,61,115,112,45,62,105,110,95,98,117,102,102,101,114,95,102,105,108,101,95,116,111,103,111,0,115,112,45,62,108,105,98,106,112,101,103,95,115,101,115,115,105,111,110,95,97,99,116,105,118,101,33,61,48,0,79,74,80,69,71,76,105,98,106,112,101,103,83,101,115,115,105,111,110,65,98,111,114,116,0,79,74,80,69,71,69,110,99,111,100,101,0,79,74,80,69,71,32,101,110,99,111,100,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,59,32,117,115,101,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,105,110,115,116,101,97,100,0,79,74,80,69,71,80,111,115,116,69,110,99,111,100,101,0,79,74,80,69,71,80,114,101,69,110,99,111,100,101,0,79,74,80,69,71,83,101,116,117,112,69,110,99,111,100,101,0,79,74,80,69,71,68,101,99,111,100,101,82,97,119,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,32,110,111,116,32,114,101,97,100,0,99,99,62,48,0,79,74,80,69,71,68,101,99,111,100,101,83,99,97,110,108,105,110,101,115,0,79,74,80,69,71,80,111,115,116,68,101,99,111,100,101,0,115,112,45,62,114,101,97,100,104,101,97,100,101,114,95,100,111,110,101,61,61,48,0,79,74,80,69,71,82,101,97,100,72,101,97,100,101,114,73,110,102,111,0,83,97,109,112,108,101,115,80,101,114,80,105,120,101,108,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,102,111,114,32,116,104,105,115,32,99,111,109,112,114,101,115,115,105,111,110,32,115,99,104,101,109,101,0,73,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,116,105,99,97,108,32,115,117,98,115,97,109,112,108,105,110,103,32,97,110,100,32,105,109,97,103,101,32,115,116,114,105,112,47,116,105,108,101,32,108,101,110,103,116,104,0,115,62,48,0,79,74,80,69,71,82,101,97,100,83,101,99,111,110,100,97,114,121,83,111,115,0,115,60,51,0,115,112,45,62,115,111,115,95,101,110,100,91,48,93,46,108,111,103,33,61,48,0,115,112,45,62,115,111,115,95,101,110,100,91,115,93,46,108,111,103,61,61,48,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,98,117,102,61,61,48,0,79,74,80,69,71,87,114,105,116,101,72,101,97,100,101,114,73,110,102,111,0,115,112,45,62,115,117,98,115,97,109,112,108,105,110,103,95,99,111,110,118,101,114,116,95,121,99,98,99,114,105,109,97,103,101,61,61,48,0,79,74,80,69,71,80,114,101,68,101,99,111,100,101,83,107,105,112,83,99,97,110,108,105,110,101,115,0,76,105,98,74,112,101,103,0,85,110,101,120,112,101,99,116,101,100,32,101,114,114,111,114,0,115,112,45,62,111,117,116,95,115,116,97,116,101,60,61,111,115,111,115,69,111,105,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,0,50,53,53,62,61,56,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,51,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,102,0,50,53,53,62,61,54,43,115,112,45,62,115,97,109,112,108,101,115,95,112,101,114,95,112,105,120,101,108,95,112,101,114,95,112,108,97,110,101,42,50,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,83,111,115,0,79,74,80,69,71,87,114,105,116,101,83,116,114,101,97,109,67,111,109,112,114,101,115,115,101,100,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,100,97,116,97,0,79,74,80,69,71,83,101,116,117,112,68,101,99,111,100,101,0,68,101,112,114,101,99,105,97,116,101,100,32,97,110,100,32,116,114,111,117,98,108,101,115,111,109,101,32,111,108,100,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,109,111,100,101,44,32,112,108,101,97,115,101,32,99,111,110,118,101,114,116,32,116,111,32,110,101,119,45,115,116,121,108,101,32,74,80,69,71,32,99,111,109,112,114,101,115,115,105,111,110,32,97,110,100,32,110,111,116,105,102,121,32,118,101,110,100,111,114,32,111,102,32,119,114,105,116,105,110,103,32,115,111,102,116,119,97,114,101,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,0,74,112,101,103,73,110,116,101,114,99,104,97,110,103,101,70,111,114,109,97,116,76,101,110,103,116,104,0,74,112,101,103,81,84,97,98,108,101,115,0,74,112,101,103,68,99,84,97,98,108,101,115,0,74,112,101,103,65,99,84,97,98,108,101,115,0,74,112,101,103,80,114,111,99,0,74,112,101,103,82,101,115,116,97,114,116,73,110,116,101,114,118,97,108,0,80,97,99,107,66,105,116,115,68,101,99,111,100,101,0,68,105,115,99,97,114,100,105,110,103,32,37,108,117,32,98,121,116,101,115,32,116,111,32,97,118,111,105,100,32,98,117,102,102,101,114,32,111,118,101,114,114,117,110,0,84,101,114,109,105,110,97,116,105,110,103,32,80,97,99,107,66,105,116,115,68,101,99,111,100,101,32,100,117,101,32,116,111,32,108,97,99,107,32,111,102,32,100,97,116,97,46,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,102,111,114,32,115,99,97,110,108,105,110,101,32,37,108,117,0,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,80,73,88,65,82,76,79,71,0,116,105,102,95,112,105,120,97,114,108,111,103,46,99,0,84,73,70,70,73,110,105,116,80,105,120,97,114,76,111,103,0,77,101,114,103,105,110,103,32,80,105,120,97,114,76,111,103,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,80,105,120,97,114,76,111,103,32,115,116,97,116,101,32,98,108,111,99,107,0,80,105,120,97,114,76,111,103,86,83,101,116,70,105,101,108,100,0,80,105,120,97,114,76,111,103,67,108,101,97,110,117,112,0,80,105,120,97,114,76,111,103,69,110,99,111,100,101,0,37,100,32,98,105,116,32,105,110,112,117,116,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,80,105,120,97,114,76,111,103,0,90,76,105,98,32,99,97,110,110,111,116,32,100,101,97,108,32,119,105,116,104,32,98,117,102,102,101,114,115,32,116,104,105,115,32,115,105,122,101,0,80,105,120,97,114,76,111,103,80,111,115,116,69,110,99,111,100,101,0,80,105,120,97,114,76,111,103,80,114,101,69,110,99,111,100,101,0,80,105,120,97,114,76,111,103,83,101,116,117,112,69,110,99,111,100,101,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,37,100,32,98,105,116,32,108,105,110,101,97,114,32,101,110,99,111,100,105,110,103,115,0,80,105,120,97,114,76,111,103,68,101,99,111,100,101,0,115,116,114,105,100,101,32,37,108,117,32,105,115,32,110,111,116,32,97,32,109,117,108,116,105,112,108,101,32,111,102,32,115,97,109,112,108,101,32,99,111,117,110,116,44,32,37,108,117,44,32,100,97,116,97,32,116,114,117,110,99,97,116,101,100,46,0,85,110,115,117,112,112,111,114,116,101,100,32,98,105,116,115,47,115,97,109,112,108,101,58,32,37,100,0,80,105,120,97,114,76,111,103,80,114,101,68,101,99,111,100,101,0,80,105,120,97,114,76,111,103,83,101,116,117,112,68,101,99,111,100,101,0,80,105,120,97,114,76,111,103,32,99,111,109,112,114,101,115,115,105,111,110,32,99,97,110,39,116,32,104,97,110,100,108,101,32,98,105,116,115,32,100,101,112,116,104,47,100,97,116,97,32,102,111,114,109,97,116,32,99,111,109,98,105,110,97,116,105,111,110,32,40,100,101,112,116,104,58,32,37,100,41,0,116,105,102,95,112,114,101,100,105,99,116,46,99,0,84,73,70,70,80,114,101,100,105,99,116,111,114,73,110,105,116,0,77,101,114,103,105,110,103,32,80,114,101,100,105,99,116,111,114,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,84,73,70,70,80,114,101,100,105,99,116,111,114,67,108,101,97,110,117,112,0,40,99,99,37,40,98,112,115,42,115,116,114,105,100,101,41,41,61,61,48,0,102,112,68,105,102,102,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,84,105,108,101,0,115,112,45,62,101,110,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,115,112,45,62,101,110,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,79,117,116,32,111,102,32,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,110,103,32,37,108,100,32,98,121,116,101,32,116,101,109,112,32,98,117,102,102,101,114,46,0,114,111,119,115,105,122,101,32,62,32,48,0,40,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,80,114,101,100,105,99,116,111,114,69,110,99,111,100,101,82,111,119,0,115,112,45,62,101,110,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,40,99,99,37,40,52,42,115,116,114,105,100,101,41,41,61,61,48,0,104,111,114,68,105,102,102,51,50,0,40,99,99,37,40,50,42,115,116,114,105,100,101,41,41,61,61,48,0,104,111,114,68,105,102,102,49,54,0,40,99,99,37,115,116,114,105,100,101,41,61,61,48,0,104,111,114,68,105,102,102,56,0,80,114,101,100,105,99,116,111,114,83,101,116,117,112,0,72,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,45,98,105,116,32,115,97,109,112,108,101,115,0,70,108,111,97,116,105,110,103,32,112,111,105,110,116,32,34,80,114,101,100,105,99,116,111,114,34,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,37,100,32,100,97,116,97,32,102,111,114,109,97,116,0,34,80,114,101,100,105,99,116,111,114,34,32,118,97,108,117,101,32,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,102,112,65,99,99,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,84,105,108,101,0,115,112,45,62,100,101,99,111,100,101,116,105,108,101,32,33,61,32,78,85,76,76,0,40,111,99,99,48,37,114,111,119,115,105,122,101,41,61,61,48,0,115,112,45,62,100,101,99,111,100,101,112,102,117,110,99,32,33,61,32,78,85,76,76,0,80,114,101,100,105,99,116,111,114,68,101,99,111,100,101,82,111,119,0,115,112,45,62,100,101,99,111,100,101,114,111,119,32,33,61,32,78,85,76,76,0,104,111,114,65,99,99,51,50,0,104,111,114,65,99,99,49,54,0,104,111,114,65,99,99,56,0,32,32,80,114,101,100,105,99,116,111,114,58,32,0,110,111,110,101,32,0,104,111,114,105,122,111,110,116,97,108,32,100,105,102,102,101,114,101,110,99,105,110,103,32,0,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,112,114,101,100,105,99,116,111,114,32,0,37,117,32,40,48,120,37,120,41,10,0,80,114,101,100,105,99,116,111,114,86,83,101,116,70,105,101,108,100,0,115,112,45,62,118,115,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,80,114,101,100,105,99,116,111,114,86,71,101,116,70],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+143490);allocate([105,101,108,100,0,115,112,45,62,118,103,101,116,112,97,114,101,110,116,32,33,61,32,78,85,76,76,0,80,114,101,100,105,99,116,111,114,0,84,104,117,110,100,101,114,68,101,99,111,100,101,82,111,119,0,70,114,97,99,116,105,111,110,97,108,32,115,99,97,110,108,105,110,101,115,32,99,97,110,110,111,116,32,98,101,32,114,101,97,100,0,78,111,116,32,101,110,111,117,103,104,0,84,111,111,32,109,117,99,104,0,84,104,117,110,100,101,114,68,101,99,111,100,101,0,37,115,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,37,108,108,117,32,33,61,32,37,108,108,117,41,0,84,104,117,110,100,101,114,83,101,116,117,112,68,101,99,111,100,101,0,87,114,111,110,103,32,98,105,116,115,112,101,114,115,97,109,112,108,101,32,118,97,108,117,101,32,40,37,100,41,44,32,84,104,117,110,100,101,114,32,100,101,99,111,100,101,114,32,111,110,108,121,32,115,117,112,112,111,114,116,115,32,52,98,105,116,115,32,112,101,114,32,115,97,109,112,108,101,46,0,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,68,69,70,76,65,84,69,41,32,124,124,32,40,115,99,104,101,109,101,32,61,61,32,67,79,77,80,82,69,83,83,73,79,78,95,65,68,79,66,69,95,68,69,70,76,65,84,69,41,0,116,105,102,95,122,105,112,46,99,0,84,73,70,70,73,110,105,116,90,73,80,0,77,101,114,103,105,110,103,32,68,101,102,108,97,116,101,32,99,111,100,101,99,45,115,112,101,99,105,102,105,99,32,116,97,103,115,32,102,97,105,108,101,100,0,78,111,32,115,112,97,99,101,32,102,111,114,32,90,73,80,32,115,116,97,116,101,32,98,108,111,99,107,0,115,112,32,33,61,32,48,0,90,73,80,67,108,101,97,110,117,112,0,115,112,32,33,61,32,78,85,76,76,0,90,73,80,69,110,99,111,100,101,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,69,78,67,79,68,69,0,69,110,99,111,100,101,114,32,101,114,114,111,114,58,32,37,115,0,90,73,80,80,111,115,116,69,110,99,111,100,101,0,90,76,105,98,32,101,114,114,111,114,58,32,37,115,0,90,73,80,80,114,101,69,110,99,111,100,101,0,90,73,80,83,101,116,117,112,69,110,99,111,100,101,0,49,46,50,46,56,0,37,115,0,90,73,80,68,101,99,111,100,101,0,115,112,45,62,115,116,97,116,101,32,61,61,32,90,83,84,65,84,69,95,73,78,73,84,95,68,69,67,79,68,69,0,68,101,99,111,100,105,110,103,32,101,114,114,111,114,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,44,32,37,115,0,78,111,116,32,101,110,111,117,103,104,32,100,97,116,97,32,97,116,32,115,99,97,110,108,105,110,101,32,37,108,117,32,40,115,104,111,114,116,32,37,108,117,32,98,121,116,101,115,41,0,90,73,80,80,114,101,68,101,99,111,100,101,0,90,73,80,83,101,116,117,112,68,101,99,111,100,101,0,90,73,80,86,83,101,116,70,105,101,108,100,0,105,110,99,111,114,114,101,99,116,32,104,101,97,100,101,114,32,99,104,101,99,107,0,117,110,107,110,111,119,110,32,99,111,109,112,114,101,115,115,105,111,110,32,109,101,116,104,111,100,0,105,110,118,97,108,105,100,32,119,105,110,100,111,119,32,115,105,122,101,0,117,110,107,110,111,119,110,32,104,101,97,100,101,114,32,102,108,97,103,115,32,115,101,116,0,104,101,97,100,101,114,32,99,114,99,32,109,105,115,109,97,116,99,104,0,105,110,118,97,108,105,100,32,98,108,111,99,107,32,116,121,112,101,0,105,110,118,97,108,105,100,32,115,116,111,114,101,100,32,98,108,111,99,107,32,108,101,110,103,116,104,115,0,116,111,111,32,109,97,110,121,32,108,101,110,103,116,104,32,111,114,32,100,105,115,116,97,110,99,101,32,115,121,109,98,111,108,115,0,105,110,118,97,108,105,100,32,99,111,100,101,32,108,101,110,103,116,104,115,32,115,101,116,0,105,110,118,97,108,105,100,32,98,105,116,32,108,101,110,103,116,104,32,114,101,112,101,97,116,0,105,110,118,97,108,105,100,32,99,111,100,101,32,45,45,32,109,105,115,115,105,110,103,32,101,110,100,45,111,102,45,98,108,111,99,107,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,115,32,115,101,116,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,115,32,115,101,116,0,105,110,99,111,114,114,101,99,116,32,100,97,116,97,32,99,104,101,99,107,0,105,110,99,111,114,114,101,99,116,32,108,101,110,103,116,104,32,99,104,101,99,107,0,0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15,110,101,101,100,32,100,105,99,116,105,111,110,97,114,121,0,115,116,114,101,97,109,32,101,110,100,0,0,102,105,108,101,32,101,114,114,111,114,0,115,116,114,101,97,109,32,101,114,114,111,114,0,100,97,116,97,32,101,114,114,111,114,0,105,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,0,98,117,102,102,101,114,32,101,114,114,111,114,0,105,110,99,111,109,112,97,116,105,98,108,101,32,118,101,114,115,105,111,110,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,116,111,111,32,102,97,114,32,98,97,99,107,0,105,110,118,97,108,105,100,32,100,105,115,116,97,110,99,101,32,99,111,100,101,0,105,110,118,97,108,105,100,32,108,105,116,101,114,97,108,47,108,101,110,103,116,104,32,99,111,100,101,0,0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125,1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250,0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119,0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250,83,79,83,0,76,83,69,0,66,111,103,117,115,32,109,101,115,115,97,103,101,32,99,111,100,101,32,37,100,0,65,76,73,71,78,95,84,89,80,69,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,77,65,88,95,65,76,76,79,67,95,67,72,85,78,75,32,105,115,32,119,114,111,110,103,44,32,112,108,101,97,115,101,32,102,105,120,0,66,111,103,117,115,32,98,117,102,102,101,114,32,99,111,110,116,114,111,108,32,109,111,100,101,0,73,110,118,97,108,105,100,32,99,111,109,112,111,110,101,110,116,32,73,68,32,37,100,32,105,110,32,83,79,83,0,73,110,118,97,108,105,100,32,99,114,111,112,32,114,101,113,117,101,115,116,0,68,67,84,32,99,111,101,102,102,105,99,105,101,110,116,32,111,117,116,32,111,102,32,114,97,110,103,101,0,68,67,84,32,115,99,97,108,101,100,32,98,108,111,99,107,32,115,105,122,101,32,37,100,120,37,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,67,111,109,112,111,110,101,110,116,32,105,110,100,101,120,32,37,100,58,32,109,105,115,109,97,116,99,104,105,110,103,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,32,37,100,58,37,100,44,32,37,100,58,37,100,44,32,37,99,0,66,111,103,117,115,32,72,117,102,102,109,97,110,32,116,97,98,108,101,32,100,101,102,105,110,105,116,105,111,110,0,66,111,103,117,115,32,105,110,112,117,116,32,99,111,108,111,114,115,112,97,99,101,0,66,111,103,117,115,32,74,80,69,71,32,99,111,108,111,114,115,112,97,99,101,0,66,111,103,117,115,32,109,97,114,107,101,114,32,108,101,110,103,116,104,0,87,114,111,110,103,32,74,80,69,71,32,108,105,98,114,97,114,121,32,118,101,114,115,105,111,110,58,32,108,105,98,114,97,114,121,32,105,115,32,37,100,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,100,0,83,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,105,110,116,101,114,108,101,97,118,101,100,32,115,99,97,110,0,73,110,118,97,108,105,100,32,109,101,109,111,114,121,32,112,111,111,108,32,99,111,100,101,32,37,100,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,100,97,116,97,32,112,114,101,99,105,115,105,111,110,32,37,100,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,83,115,61,37,100,32,83,101,61,37,100,32,65,104,61,37,100,32,65,108,61,37,100,0,73,110,118,97,108,105,100,32,112,114,111,103,114,101,115,115,105,118,101,32,112,97,114,97,109,101,116,101,114,115,32,97,116,32,115,99,97,110,32,115,99,114,105,112,116,32,101,110,116,114,121,32,37,100,0,66,111,103,117,115,32,115,97,109,112,108,105,110,103,32,102,97,99,116,111,114,115,0,73,110,118,97,108,105,100,32,115,99,97,110,32,115,99,114,105,112,116,32,97,116,32,101,110,116,114,121,32,37,100,0,73,109,112,114,111,112,101,114,32,99,97,108,108,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,110,32,115,116,97,116,101,32,37,100,0,74,80,69,71,32,112,97,114,97,109,101,116,101,114,32,115,116,114,117,99,116,32,109,105,115,109,97,116,99,104,58,32,108,105,98,114,97,114,121,32,116,104,105,110,107,115,32,115,105,122,101,32,105,115,32,37,117,44,32,99,97,108,108,101,114,32,101,120,112,101,99,116,115,32,37,117,0,66,111,103,117,115,32,118,105,114,116,117,97,108,32,97,114,114,97,121,32,97,99,99,101,115,115,0,66,117,102,102,101,114,32,112,97,115,115,101,100,32,116,111,32,74,80,69,71,32,108,105,98,114,97,114,121,32,105,115,32,116,111,111,32,115,109,97,108,108,0,83,117,115,112,101,110,115,105,111,110,32,110,111,116,32,97,108,108,111,119,101,100,32,104,101,114,101,0,67,67,73,82,54,48,49,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,84,111,111,32,109,97,110,121,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,58,32,37,100,44,32,109,97,120,32,37,100,0,85,110,115,117,112,112,111,114,116,101,100,32,99,111,108,111,114,32,99,111,110,118,101,114,115,105,111,110,32,114,101,113,117,101,115,116,0,66,111,103,117,115,32,68,65,67,32,105,110,100,101,120,32,37,100,0,66,111,103,117,115,32,68,65,67,32,118,97,108,117,101,32,48,120,37,120,0,66,111,103,117,115,32,68,72,84,32,105,110,100,101,120,32,37,100,0,66,111,103,117,115,32,68,81,84,32,105,110,100,101,120,32,37,100,0,69,109,112,116,121,32,74,80,69,71,32,105,109,97,103,101,32,40,68,78,76,32,110,111,116,32,115,117,112,112,111,114,116,101,100,41,0,82,101,97,100,32,102,114,111,109,32,69,77,83,32,102,97,105,108,101,100,0,87,114,105,116,101,32,116,111,32,69,77,83,32,102,97,105,108,101,100,0,68,105,100,110,39,116,32,101,120,112,101,99,116,32,109,111,114,101,32,116,104,97,110,32,111,110,101,32,115,99,97,110,0,73,110,112,117,116,32,102,105,108,101,32,114,101,97,100,32,101,114,114,111,114,0,79,117,116,112,117,116,32,102,105,108,101,32,119,114,105,116,101,32,101,114,114,111,114,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,70,114,97,99,116,105,111,110,97,108,32,115,97,109,112,108,105,110,103,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,72,117,102,102,109,97,110,32,99,111,100,101,32,115,105,122,101,32,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,77,105,115,115,105,110,103,32,72,117,102,102,109,97,110,32,99,111,100,101,32,116,97,98,108,101,32,101,110,116,114,121,0,77,97,120,105,109,117,109,32,115,117,112,112,111,114,116,101,100,32,105,109,97,103,101,32,100,105,109,101,110,115,105,111,110,32,105,115,32,37,117,32,112,105,120,101,108,115,0,69,109,112,116,121,32,105,110,112,117,116,32,102,105,108,101,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,105,110,112,117,116,32,102,105,108,101,0,67,97,110,110,111,116,32,116,114,97,110,115,99,111,100,101,32,100,117,101,32,116,111,32,109,117,108,116,105,112,108,101,32,117,115,101,32,111,102,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,37,100,0,83,99,97,110,32,115,99,114,105,112,116,32,100,111,101,115,32,110,111,116,32,116,114,97,110,115,109,105,116,32,97,108,108,32,100,97,116,97,0,73,110,118,97,108,105,100,32,99,111,108,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,32,109,111,100,101,32,99,104,97,110,103,101,0,78,111,116,32,105,109,112,108,101,109,101,110,116,101,100,32,121,101,116,0,82,101,113,117,101,115,116,101,100,32,102,101,97,116,117,114,101,32,119,97,115,32,111,109,105,116,116,101,100,32,97,116,32,99,111,109,112,105,108,101,32,116,105,109,101,0,65,114,105,116,104,109,101,116,105,99,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,66,97,99,107,105,110,103,32,115,116,111,114,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,72,117,102,102,109,97,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,74,80,69,71,32,100,97,116,97,115,116,114,101,97,109,32,99,111,110,116,97,105,110,115,32,110,111,32,105,109,97,103,101,0,81,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,32,48,120,37,48,50,120,32,119,97,115,32,110,111,116,32,100,101,102,105,110,101,100,0,78,111,116,32,97,32,74,80,69,71,32,102,105,108,101,58,32,115,116,97,114,116,115,32,119,105,116,104,32,48,120,37,48,50,120,32,48,120,37,48,50,120,0,73,110,115,117,102,102,105,99,105,101,110,116,32,109,101,109,111,114,121,32,40,99,97,115,101,32,37,100,41,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,32,99,111,109,112,111,110,101,110,116,115,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,102,101,119,101,114,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,67,97,110,110,111,116,32,113,117,97,110,116,105,122,101,32,116,111,32,109,111,114,101,32,116,104,97,110,32,37,100,32,99,111,108,111,114,115,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,37,115,32,98,101,102,111,114,101,32,83,79,70,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,70,32,109,97,114,107,101,114,115,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,109,105,115,115,105,110,103,32,83,79,83,32,109,97,114,107,101,114,0,85,110,115,117,112,112,111,114,116,101,100,32,74,80,69,71,32,112,114,111,99,101,115,115,58,32,83,79,70,32,116,121,112,101,32,48,120,37,48,50,120,0,73,110,118,97,108,105,100,32,74,80,69,71,32,102,105,108,101,32,115,116,114,117,99,116,117,114,101,58,32,116,119,111,32,83,79,73,32,109,97,114,107,101,114,115,0,70,97,105,108,101,100,32,116,111,32,99,114,101,97,116,101,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,82,101,97,100,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,83,101,101,107,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,0,87,114,105,116,101,32,102,97,105,108,101,100,32,111,110,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,45,45,45,32,111,117,116,32,111,102,32,100,105,115,107,32,115,112,97,99,101,63,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,102,101,119,32,115,99,97,110,108,105,110,101,115,0,85,110,115,117,112,112,111,114,116,101,100,32,109,97,114,107,101,114,32,116,121,112,101,32,48,120,37,48,50,120,0,86,105,114,116,117,97,108,32,97,114,114,97,121,32,99,111,110,116,114,111,108,108,101,114,32,109,101,115,115,101,100,32,117,112,0,73,109,97,103,101,32,116,111,111,32,119,105,100,101,32,102,111,114,32,116,104,105,115,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,0,82,101,97,100,32,102,114,111,109,32,88,77,83,32,102,97,105,108,101,100,0,87,114,105,116,101,32,116,111,32,88,77,83,32,102,97,105,108,101,100,0,67,111,112,121,114,105,103,104,116,32,40,67,41,32,50,48,49,54,44,32,84,104,111,109,97,115,32,71,46,32,76,97,110,101,44,32,71,117,105,100,111,32,86,111,108,108,98,101,100,105,110,103,0,57,98,32,32,49,55,45,74,97,110,45,50,48,49,54,0,67,97,117,116,105,111,110,58,32,113,117,97,110,116,105,122,97,116,105,111,110,32,116,97,98,108,101,115,32,97,114,101,32,116,111,111,32,99,111,97,114,115,101,32,102,111,114,32,98,97,115,101,108,105,110,101,32,74,80,69,71,0,65,100,111,98,101,32,65,80,80,49,52,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,44,32,102,108,97,103,115,32,48,120,37,48,52,120,32,48,120,37,48,52,120,44,32,116,114,97,110,115,102,111,114,109,32,37,100,0,85,110,107,110,111,119,110,32,65,80,80,48,32,109,97,114,107,101,114,32,40,110,111,116,32,74,70,73,70,41,44,32,108,101,110,103,116,104,32,37,117,0,85,110,107,110,111,119,110,32,65,80,80,49,52,32,109,97,114,107,101,114,32,40,110,111,116,32,65,100,111,98,101,41,44,32,108,101,110,103,116,104,32,37,117,0,68,101,102,105,110,101,32,65,114,105,116,104,109,101,116,105,99,32,84,97,98,108,101,32,48,120,37,48,50,120,58,32,48,120,37,48,50,120,0,68,101,102,105,110,101,32,72,117,102,102,109,97,110,32,84,97,98,108,101,32,48,120,37,48,50,120,0,68,101,102,105,110,101,32,81,117,97,110,116,105,122,97,116,105,111,110,32,84,97,98,108,101,32,37,100,32,32,112,114,101,99,105,115,105,111,110,32,37,100,0,68,101,102,105,110,101,32,82,101,115,116,97,114,116,32,73,110,116,101,114,118,97,108,32,37,117,0,70,114,101,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,79,98,116,97,105,110,101,100,32,69,77,83,32,104,97,110,100,108,101,32,37,117,0,69,110,100,32,79,102,32,73,109,97,103,101,0,32,32,32,32,32,32,32,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,32,37,51,100,0,74,70,73,70,32,65,80,80,48,32,109,97,114,107,101,114,58,32,118,101,114,115,105,111,110,32,37,100,46,37,48,50,100,44,32,100,101,110,115,105,116,121,32,37,100,120,37,100,32,32,37,100,0,87,97,114,110,105,110,103,58,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,32,115,105,122,101,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,100,97,116,97,32,108,101,110,103,116,104,32,37,117,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,116,121,112,101,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,32,32,32,32,119,105,116,104,32,37,100,32,120,32,37,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,0,77,105,115,99,101,108,108,97,110,101,111,117,115,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,108,101,110,103,116,104,32,37,117,0,85,110,101,120,112,101,99,116,101,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,32,32,32,32,32,32,32,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,32,37,52,117,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,61,32,37,100,42,37,100,42,37,100,32,99,111,108,111,114,115,0,81,117,97,110,116,105,122,105,110,103,32,116,111,32,37,100,32,99,111,108,111,114,115,0,83,101,108,101,99,116,101,100,32,37,100,32,99,111,108,111,114,115,32,102,111,114,32,113,117,97,110,116,105,122,97,116,105,111,110,0,65,116,32,109,97,114,107,101,114,32,48,120,37,48,50,120,44,32,114,101,99,111,118,101,114,121,32,97,99,116,105,111,110,32,37,100,0,82,83,84,37,100,0,83,109,111,111,116,104,105,110,103,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,119,105,116,104,32,110,111,110,115,116,97,110,100,97,114,100,32,115,97,109,112,108,105,110,103,32,114,97,116,105,111,115,0,83,116,97,114,116,32,79,102,32,70,114,97,109,101,32,48,120,37,48,50,120,58,32,119,105,100,116,104,61,37,117,44,32,104,101,105,103,104,116,61,37,117,44,32,99,111,109,112,111,110,101,110,116,115,61,37,100,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,37,100,104,120,37,100,118,32,113,61,37,100,0,83,116,97,114,116,32,111,102,32,73,109,97,103,101,0,83,116,97,114,116,32,79,102,32,83,99,97,110,58,32,37,100,32,99,111,109,112,111,110,101,110,116,115,0,32,32,32,32,67,111,109,112,111,110,101,110,116,32,37,100,58,32,100,99,61,37,100,32,97,99,61,37,100,0,32,32,83,115,61,37,100,44,32,83,101,61,37,100,44,32,65,104,61,37,100,44,32,65,108,61,37,100,0,67,108,111,115,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,79,112,101,110,101,100,32,116,101,109,112,111,114,97,114,121,32,102,105,108,101,32,37,115,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,74,80,69,71,45,99,111,109,112,114,101,115,115,101,100,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,112,97,108,101,116,116,101,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,74,70,73,70,32,101,120,116,101,110,115,105,111,110,32,109,97,114,107,101,114,58,32,82,71,66,32,116,104,117,109,98,110,97,105,108,32,105,109,97,103,101,44,32,108,101,110,103,116,104,32,37,117,0,85,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,111,110,101,110,116,32,73,68,115,32,37,100,32,37,100,32,37,100,44,32,97,115,115,117,109,105,110,103,32,89,67,98,67,114,0,70,114,101,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,79,98,116,97,105,110,101,100,32,88,77,83,32,104,97,110,100,108,101,32,37,117,0,85,110,107,110,111,119,110,32,65,100,111,98,101,32,99,111,108,111,114,32,116,114,97,110,115,102,111,114,109,32,99,111,100,101,32,37,100,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,97,114,105,116,104,109,101,116,105,99,32,99,111,100,101,0,73,110,99,111,110,115,105,115,116,101,110,116,32,112,114,111,103,114,101,115,115,105,111,110,32,115,101,113,117,101,110,99,101,32,102,111,114,32,99,111,109,112,111,110,101,110,116,32,37,100,32,99,111,101,102,102,105,99,105,101,110,116,32,37,100,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,37,117,32,101,120,116,114,97,110,101,111,117,115,32,98,121,116,101,115,32,98,101,102,111,114,101,32,109,97,114,107,101,114,32,48,120,37,48,50,120,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,112,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,100,97,116,97,32,115,101,103,109,101,110,116,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,98,97,100,32,72,117,102,102,109,97,110,32,99,111,100,101,0,87,97,114,110,105,110,103,58,32,117,110,107,110,111,119,110,32,74,70,73,70,32,114,101,118,105,115,105,111,110,32,110,117,109,98,101,114,32,37,100,46,37,48,50,100,0,80,114,101,109,97,116,117,114,101,32,101,110,100,32,111,102,32,74,80,69,71,32,102,105,108,101,0,67,111,114,114,117,112,116,32,74,80,69,71,32,100,97,116,97,58,32,102,111,117,110,100,32,109,97,114,107,101,114,32,48,120,37,48,50,120,32,105,110,115,116,101,97,100,32,111,102,32,82,83,84,37,100,0,73,110,118,97,108,105,100,32,83,79,83,32,112,97,114,97,109,101,116,101,114,115,32,102,111,114,32,115,101,113,117,101,110,116,105,97,108,32,74,80,69,71,0,65,112,112,108,105,99,97,116,105,111,110,32,116,114,97,110,115,102,101,114,114,101,100,32,116,111,111,32,109,97,110,121,32,115,99,97,110,108,105,110,101,115,0,37,115,10,0,0,192,48,240,12,204,60,252,3,195,51,243,15,207,63,255,128,64,176,112,140,76,188,124,131,67,179,115,143,79,191,127,32,224,16,208,44,236,28,220,35,227,19,211,47,239,31,223,160,96,144,80,172,108,156,92,163,99,147,83,175,111,159,95,8,200,56,248,4,196,52,244,11,203,59,251,7,199,55,247,136,72,184,120,132,68,180,116,139,75,187,123,135,71,183,119,40,232,24,216,36,228,20,212,43,235,27,219,39,231,23,215,168,104,152,88,164,100,148,84,171,107,155,91,167,103,151,87,2,194,50,242,14,206,62,254,1,193,49,241,13,205,61,253,130,66,178,114,142,78,190,126,129,65,177,113,141,77,189,125,34,226,18,210,46,238,30,222,33,225,17,209,45,237,29,221,162,98,146,82,174,110,158,94,161,97,145,81,173,109,157,93,10,202,58,250,6,198,54,246,9,201,57,249,5,197,53,245,138,74,186,122,134,70,182,118,137,73,185,121,133,69,181,117,42,234,26,218,38,230,22,214,41,233,25,217,37,229,21,213,170,106,154,90,166,102,150,86,169,105,153,89,165,101,149,85,74,80,69,71,77,69,77,0,37,108,100,37,99,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,105,110,102,105,110,105,116,121,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+153730);allocate([17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+164446);var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);function copyTempFloat(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3]}function copyTempDouble(ptr){HEAP8[tempDoublePtr]=HEAP8[ptr];HEAP8[tempDoublePtr+1]=HEAP8[ptr+1];HEAP8[tempDoublePtr+2]=HEAP8[ptr+2];HEAP8[tempDoublePtr+3]=HEAP8[ptr+3];HEAP8[tempDoublePtr+4]=HEAP8[ptr+4];HEAP8[tempDoublePtr+5]=HEAP8[ptr+5];HEAP8[tempDoublePtr+6]=HEAP8[ptr+6];HEAP8[tempDoublePtr+7]=HEAP8[ptr+7]}var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can   access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;var usingDevice=false;try{fd=fs.openSync("/dev/stdin","r");usingDevice=true}catch(e){}bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null);if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["print"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module["printErr"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,"/",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.buffer.byteLength:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!=="undefined")return indexedDB;var ret=null;if(typeof window==="object")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,"IDBFS used, but indexedDB not supported");return ret}),DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error("node type not supported"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{encoding:"binary",canOwn:true})}else{return callback(new Error("node type not supported"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var errored=false;var completed=0;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,"/",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:(function(flags){flags&=~32768;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,"",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i<res;i++){buffer[offset+i]=nbuffer[i]}}return res}),write:(function(stream,buffer,offset,length,position){var nbuffer=new Buffer(buffer.subarray(offset,offset+length));var res;try{res=fs.writeSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}return res}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,"/",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split("/");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join("/");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,curr,WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split("/");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts["files"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts["blobs"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj["name"]),base(obj["name"]),WORKERFS.FILE_MODE,0,obj["data"])}));(mount.opts["packages"]||[]).forEach((function(pack){pack["metadata"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack["blob"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var _stdin=allocate(1,"i32*",ALLOC_STATIC);var _stdout=allocate(1,"i32*",ALLOC_STATIC);var _stderr=allocate(1,"i32*",ALLOC_STATIC);var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags}),flagsToPermissionString:(function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,"x");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,"wx")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,"wx");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if((flags&2097155)!==0||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}var mounts=FS.getMounts(FS.root.mount);var completed=0;function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=mounts.length){callback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdev:(function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,"w");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){if(err===ERRNO_CODES.EISDIR)err=ERRNO_CODES.EPERM;throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,"w");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module["printErr"]("read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position==="undefined"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: "+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";opts.encoding=opts.encoding||"utf8";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding==="utf8"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding==="binary"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,"x");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")}),createDefaultDevices:(function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto!=="undefined"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require("crypto").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")}),createSpecialDirectories:(function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:(function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},"/proc/self/fd")}),createStandardStreams:(function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");assert(stdin.fd===0,"invalid handle for stdin ("+stdin.fd+")");var stdout=FS.open("/dev/stdout","w");assert(stdout.fd===1,"invalid handle for stdout ("+stdout.fd+")");var stderr=FS.open("/dev/stderr","w");assert(stderr.fd===2,"invalid handle for stderr ("+stderr.fd+")")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS,"IDBFS":IDBFS,"NODEFS":NODEFS,"WORKERFS":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(Module["read"]){try{obj.contents=intArrayFromString(Module["read"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperty(lazyArray,"length",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})});Object.defineProperty(lazyArray,"chunkSize",{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperty(node,"usedBytes",{get:(function(){return this.contents.length})});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach((function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return"EM_FS_"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};Module["FS"]=FS;var PATH={splitPath:(function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((function(p){return!!p})),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))}),join2:(function(l,r){return PATH.normalize(l+"/"+r)}),resolve:(function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((function(p){return!!p})),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")})};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){setTimeout(Browser.mainLoop.runner,value)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(!window["setImmediate"]){var setImmediates=[];var emscriptenMainLoopMessageId="__emcc";function Browser_setImmediate_messageHandler(event){if(event.source===window&&event.data===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}}window.addEventListener("message",Browser_setImmediate_messageHandler,true);window["setImmediate"]=function Browser_emulated_setImmediate(func){setImmediates.push(func);window.postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){window["setImmediate"](Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop,arg,noSetTiming){Module["noExitRuntime"]=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=func;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}if(Browser.mainLoop.method==="timeout"&&Module.ctx){Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!");Browser.mainLoop.method=""}Browser.mainLoop.runIter((function(){if(typeof arg!=="undefined"){Runtime.dynCall("vi",func,[arg])}else{Runtime.dynCall("v",func)}}));if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"SimulateInfiniteLoop"}}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:(function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++}),resume:(function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;_emscripten_set_main_loop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()}),updateStatus:(function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}}),runIter:(function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()})},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:(function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([(new Uint8Array(byteArray)).buffer],{type:Browser.getMimetype(name)})}}catch(e){Runtime.warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append((new Uint8Array(byteArray)).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",(function(){finish(audio)}),false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout((function(){finish(audio)}),1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);var canvas=Module["canvas"];function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===canvas||document["mozPointerLockElement"]===canvas||document["webkitPointerLockElement"]===canvas||document["msPointerLockElement"]===canvas}if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(function(){});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(function(){});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",(function(ev){if(!Browser.pointerLock&&canvas.requestPointerLock){canvas.requestPointerLock();ev.preventDefault()}}),false)}}}),createContext:(function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}canvas.style.backgroundColor="black"}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach((function(callback){callback()}));Browser.init()}return ctx}),destroyContext:(function(canvas,useWebGL,setInModule){}),fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:(function(lockPointer,resizeCanvas,vrDevice){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;Browser.vrDevice=vrDevice;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;if(typeof Browser.vrDevice==="undefined")Browser.vrDevice=null;var canvas=Module["canvas"];function fullScreenChange(){Browser.isFullScreen=false;var canvasContainer=canvas.parentNode;if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.cancelFullScreen=document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["webkitCancelFullScreen"]||document["msExitFullscreen"]||document["exitFullscreen"]||(function(){});canvas.cancelFullScreen=canvas.cancelFullScreen.bind(document);if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullScreen=true;if(Browser.resizeCanvas)Browser.setFullScreenCanvasSize()}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas)Browser.setWindowedCanvasSize()}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullScreen);Browser.updateCanvasDimensions(canvas)}if(!Browser.fullScreenHandlersInstalled){Browser.fullScreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullScreenChange,false);document.addEventListener("mozfullscreenchange",fullScreenChange,false);document.addEventListener("webkitfullscreenchange",fullScreenChange,false);document.addEventListener("MSFullscreenChange",fullScreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullScreen=canvasContainer["requestFullScreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullScreen"]?(function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}):null);if(vrDevice){canvasContainer.requestFullScreen({vrDisplay:vrDevice})}else{canvasContainer.requestFullScreen()}}),nextRAF:0,fakeRequestAnimationFrame:(function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)}),requestAnimationFrame:function requestAnimationFrame(func){if(typeof window==="undefined"){Browser.fakeRequestAnimationFrame(func)}else{if(!window.requestAnimationFrame){window.requestAnimationFrame=window["requestAnimationFrame"]||window["mozRequestAnimationFrame"]||window["webkitRequestAnimationFrame"]||window["msRequestAnimationFrame"]||window["oRequestAnimationFrame"]||Browser.fakeRequestAnimationFrame}window.requestAnimationFrame(func)}},safeCallback:(function(func){return(function(){if(!ABORT)return func.apply(null,arguments)})}),allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=false}),resumeAsyncCallbacks:(function(){Browser.allowAsyncCallbacks=true;if(Browser.queuedAsyncCallbacks.length>0){var callbacks=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[];callbacks.forEach((function(func){func()}))}}),safeRequestAnimationFrame:(function(func){return Browser.requestAnimationFrame((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}))}),safeSetTimeout:(function(func,timeout){Module["noExitRuntime"]=true;return setTimeout((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}else{Browser.queuedAsyncCallbacks.push(func)}}),timeout)}),safeSetInterval:(function(func,timeout){Module["noExitRuntime"]=true;return setInterval((function(){if(ABORT)return;if(Browser.allowAsyncCallbacks){func()}}),timeout)}),getMimetype:(function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]}),getUserMedia:(function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)}),getMovementX:(function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0}),getMovementY:(function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0}),getMouseWheelDelta:(function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail;break;case"mousewheel":delta=event.wheelDelta;break;case"wheel":delta=event["deltaY"];break;default:throw"unrecognized mouse wheel event: "+event.type}return delta}),mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:(function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}}),xhrLoad:(function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)}),asyncLoad:(function(url,onload,onerror,noRunDep){Browser.xhrLoad(url,(function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(!noRunDep)removeRunDependency("al "+url)}),(function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}}));if(!noRunDep)addRunDependency("al "+url)}),resizeListeners:[],updateResizeListeners:(function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach((function(listener){listener(canvas.width,canvas.height)}))}),setCanvasSize:(function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()}),windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags|8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),setWindowedCanvasSize:(function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];flags=flags&~8388608;HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=flags}Browser.updateResizeListeners()}),updateCanvasDimensions:(function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["webkitFullScreenElement"]||document["webkitFullscreenElement"]||document["mozFullScreenElement"]||document["mozFullscreenElement"]||document["fullScreenElement"]||document["fullscreenElement"]||document["msFullScreenElement"]||document["msFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}}),wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:(function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle})};Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}var _SItoD=true;var _SItoF=true;Module["_memset"]=_memset;var _BDtoILow=true;Module["_bitshift64Shl"]=_bitshift64Shl;var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);ret=ret.slice(0,Math.max(0,bufsize));writeStringToMemory(ret,buf,true);return ret.length}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_malloc(len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _UItoF=true;function ___lock(){}function ___unlock(){}Module["_i64Add"]=_i64Add;var _emscripten_cleanup_setjmp=true;var _emscripten_postinvoke=true;var _floor=Math_floor;var _emscripten_prep_setjmp=true;var _sqrt=Math_sqrt;var _emscripten_check_longjmp=true;function _realloc(){throw"bad"}Module["_realloc"]=_realloc;Module["_saveSetjmp"]=_saveSetjmp;function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _emscripten_get_longjmp_result=true;function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}function __exit(status){Module["exit"](status)}function _exit(status){__exit(status)}var _UItoD=true;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _sysconf(name){switch(name){case 30:return PAGE_SIZE;case 85:return totalMemory/PAGE_SIZE;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator==="object")return navigator["hardwareConcurrency"]||1;return 1}}___setErrNo(ERRNO_CODES.EINVAL);return-1}Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_testSetjmp"]=_testSetjmp;function _longjmp(env,value){asm["setThrew"](env,value||1);throw"longjmp"}var _BDtoIHigh=true;function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}var _environ=allocate(1,"i32*",ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV["USER"]=ENV["LOGNAME"]="web_user";ENV["PATH"]="/";ENV["PWD"]="/";ENV["HOME"]="/home/web_user";ENV["LANG"]="C";ENV["_"]=Module["thisProgram"];poolPtr=allocate(TOTAL_ENV_SIZE,"i8",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,"i8*",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]==="string"){var line=key+"="+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error("Environment size exceeded TOTAL_ENV_SIZE!")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),"i8",ALLOC_NORMAL);return _getenv.ret}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function _emscripten_longjmp(env,value){_longjmp(env,value)}function ___syscall3(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.read(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall4(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get(),count=SYSCALLS.get();return FS.write(stream,HEAP8,buf,count)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var _log=Math_log;var _emscripten_setjmp=true;var _fabs=Math_abs;function _sbrk(bytes){var self=_sbrk;if(!self.called){DYNAMICTOP=alignMemoryPage(DYNAMICTOP);self.called=true;assert(Runtime.dynamicAlloc);self.alloc=Runtime.dynamicAlloc;Runtime.dynamicAlloc=(function(){abort("cannot dynamically allocate, sbrk now has control")})}var ret=DYNAMICTOP;if(bytes!=0){var success=self.alloc(bytes);if(!success)return-1>>>0}return ret}var _emscripten_preinvoke=true;var _BItoD=true;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var _atan2=Math_atan2;function _abort(){Module["abort"]()}Module["_llvm_bswap_i32"]=_llvm_bswap_i32;var _exp=Math_exp;var _llvm_pow_f64=Math_pow;function _pthread_self(){return 0}function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["requestFullScreen"]=function Module_requestFullScreen(lockPointer,resizeCanvas,vrDevice){Browser.requestFullScreen(lockPointer,resizeCanvas,vrDevice)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};FS.staticInit();__ATINIT__.unshift((function(){if(!Module["noFSInit"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));Module["FS_createFolder"]=FS.createFolder;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createLink"]=FS.createLink;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require("fs");var NODEJS_PATH=require("path");NODEFS.staticInit()}___buildEnvironment(ENV);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);staticSealed=true;STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=DYNAMICTOP=Runtime.alignMemory(STACK_MAX);assert(DYNAMIC_BASE<TOTAL_MEMORY,"TOTAL_MEMORY not big enough for stack");var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_DYNAMIC);function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiii(index,a1,a2,a3,a4,a5,a6,a7){try{Module["dynCall_viiiiiii"](index,a1,a2,a3,a4,a5,a6,a7)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12){try{Module["dynCall_viiiiiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8,a9){try{Module["dynCall_viiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8,a9)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module["dynCall_iiiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"invoke_iiii":invoke_iiii,"invoke_viiiiiii":invoke_viiiiiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_viiiiiiiiiiii":invoke_viiiiiiiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_viiiiiiiii":invoke_viiiiiiiii,"invoke_iiiii":invoke_iiiii,"invoke_iii":invoke_iii,"invoke_iiiiii":invoke_iiiiii,"invoke_viiii":invoke_viiii,"_pthread_cleanup_pop":_pthread_cleanup_pop,"_fabs":_fabs,"_exp":_exp,"_llvm_pow_f64":_llvm_pow_f64,"___syscall54":___syscall54,"_pthread_cleanup_push":_pthread_cleanup_push,"___syscall6":___syscall6,"_atan2":_atan2,"___setErrNo":___setErrNo,"___assert_fail":___assert_fail,"___buildEnvironment":___buildEnvironment,"_longjmp":_longjmp,"___syscall91":___syscall91,"_emscripten_set_main_loop_timing":_emscripten_set_main_loop_timing,"_sbrk":_sbrk,"___syscall192":___syscall192,"___syscall197":___syscall197,"_emscripten_memcpy_big":_emscripten_memcpy_big,"__exit":__exit,"___syscall195":___syscall195,"___syscall221":___syscall221,"_floor":_floor,"_pthread_self":_pthread_self,"_getenv":_getenv,"_sqrt":_sqrt,"_log":_log,"___unlock":___unlock,"_emscripten_set_main_loop":_emscripten_set_main_loop,"___syscall3":___syscall3,"_sysconf":_sysconf,"___lock":___lock,"_abort":_abort,"___syscall5":___syscall5,"___syscall4":___syscall4,"_time":_time,"_emscripten_longjmp":_emscripten_longjmp,"___syscall140":___syscall140,"_exit":_exit,"___syscall146":___syscall146,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM
80
+var asm=(function(global,env,buffer) {
81
+"use asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.tempDoublePtr|0;var u=env.ABORT|0;var v=env.cttz_i8|0;var w=0;var x=0;var y=0;var z=0;var A=global.NaN,B=global.Infinity;var C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0.0;var L=0;var M=0;var N=0;var O=0;var P=0;var Q=0;var R=0;var S=0;var T=0;var U=0;var V=global.Math.floor;var W=global.Math.abs;var X=global.Math.sqrt;var Y=global.Math.pow;var Z=global.Math.cos;var _=global.Math.sin;var $=global.Math.tan;var aa=global.Math.acos;var ba=global.Math.asin;var ca=global.Math.atan;var da=global.Math.atan2;var ea=global.Math.exp;var fa=global.Math.log;var ga=global.Math.ceil;var ha=global.Math.imul;var ia=global.Math.min;var ja=global.Math.clz32;var ka=env.abort;var la=env.assert;var ma=env.invoke_iiii;var na=env.invoke_viiiiiii;var oa=env.invoke_viiiii;var pa=env.invoke_vi;var qa=env.invoke_vii;var ra=env.invoke_iiiiiii;var sa=env.invoke_viiiiiiiiiiii;var ta=env.invoke_ii;var ua=env.invoke_viii;var va=env.invoke_viiiiiiiii;var wa=env.invoke_iiiii;var xa=env.invoke_iii;var ya=env.invoke_iiiiii;var za=env.invoke_viiii;var Aa=env._pthread_cleanup_pop;var Ba=env._fabs;var Ca=env._exp;var Da=env._llvm_pow_f64;var Ea=env.___syscall54;var Fa=env._pthread_cleanup_push;var Ga=env.___syscall6;var Ha=env._atan2;var Ia=env.___setErrNo;var Ja=env.___assert_fail;var Ka=env.___buildEnvironment;var La=env._longjmp;var Ma=env.___syscall91;var Na=env._emscripten_set_main_loop_timing;var Oa=env._sbrk;var Pa=env.___syscall192;var Qa=env.___syscall197;var Ra=env._emscripten_memcpy_big;var Sa=env.__exit;var Ta=env.___syscall195;var Ua=env.___syscall221;var Va=env._floor;var Wa=env._pthread_self;var Xa=env._getenv;var Ya=env._sqrt;var Za=env._log;var _a=env.___unlock;var $a=env._emscripten_set_main_loop;var ab=env.___syscall3;var bb=env._sysconf;var cb=env.___lock;var db=env._abort;var eb=env.___syscall5;var fb=env.___syscall4;var gb=env._time;var hb=env._emscripten_longjmp;var ib=env.___syscall140;var jb=env._exit;var kb=env.___syscall146;var lb=0.0;function mb(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true}
82
+// EMSCRIPTEN_START_FUNCS
83
+function mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0.0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;r=d;return h|0}}n=qc(a,b,e,8,f)|0;b=k[f>>2]|0;f=b;if((n|0)!=0|(b|0)==0){k[c>>2]=0;h=n;r=d;return h|0}if((j[g>>1]|0)==12){if(k[a+12>>2]&128)Wd(b,k[e>>2]|0);k[c>>2]=f;h=0;r=d;return h|0}f=k[e>>2]|0;e=me(f<<3)|0;if(!e){ne(b);h=7;r=d;return h|0}do switch(m[g>>1]|0){case 1:{if(f){n=b;q=e;s=0;while(1){p[q>>3]=+(l[n>>0]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{n=n+1|0;q=q+8|0}}}break}case 6:{if(f){q=b;n=e;s=0;while(1){p[n>>3]=+(i[q>>0]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+1|0;n=n+8|0}}}break}case 3:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){if(k[n>>2]&128)Qd(q);p[s>>3]=+(m[q>>1]|0);t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+2|0;s=s+8|0}}}break}case 8:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){if(k[s>>2]&128)Qd(q);p[t>>3]=+(j[q>>1]|0);n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+2|0;t=t+8|0}}}break}case 4:{if(f){t=a+12|0;q=b;n=e;s=0;while(1){if(k[t>>2]&128)Rd(q);p[n>>3]=+((k[q>>2]|0)>>>0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+4|0;n=n+8|0}}}break}case 9:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){if(k[n>>2]&128)Rd(q);p[s>>3]=+(k[q>>2]|0);t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+4|0;s=s+8|0}}}break}case 16:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){if(k[s>>2]&128)Sd(q);u=q;p[t>>3]=+((k[u>>2]|0)>>>0)+4294967296.0*+((k[u+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+8|0;t=t+8|0}}}break}case 17:{if(f){t=a+12|0;q=b;n=e;s=0;while(1){if(k[t>>2]&128)Sd(q);u=q;p[n>>3]=+((k[u>>2]|0)>>>0)+4294967296.0*+(k[u+4>>2]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+8|0;n=n+8|0}}}break}case 5:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){u=k[n>>2]|0;if(!(u&128))v=u;else{Rd(q);v=k[n>>2]|0}u=q+4|0;w=k[q>>2]|0;if(v&128)Rd(u);x=k[u>>2]|0;if(!x)y=0.0;else y=+(w>>>0)/+(x>>>0);p[s>>3]=y;t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+8|0;s=s+8|0}}}break}case 10:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){x=k[s>>2]|0;if(!(x&128))z=x;else{Rd(q);z=k[s>>2]|0}x=k[q>>2]|0;w=q+4|0;if(z&128)Rd(w);u=k[w>>2]|0;if(!u)A=0.0;else A=+(x|0)/+(u>>>0);p[t>>3]=A;n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+8|0;t=t+8|0}}}break}case 11:{if(k[a+12>>2]&128)Vd(b,f);if(f){t=b;q=e;n=0;while(1){p[q>>3]=+o[t>>2];n=n+1|0;if(n>>>0>=f>>>0)break;else{t=t+4|0;q=q+8|0}}}break}default:{}}while(0);ne(b);k[c>>2]=e;h=0;r=d;return h|0}function nc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;f=e;g=pc(a,b,f)|0;if(g){h=cc(a,m[b>>1]|0)|0;if(!h)i=133413;else i=k[h+28>>2]|0;lc(a,g,134332,i,0);j=0;r=e;return j|0}i=b+8|0;b=i;if((k[b+4>>2]|0)==0?(k[b>>2]|0)==(c|0):0)l=k[f>>2]|0;else{b=Ee(a,c,8,134352)|0;if(!b){ne(k[f>>2]|0);j=0;r=e;return j|0}a=i;g=k[a>>2]|0;h=k[a+4>>2]|0;a=k[f>>2]|0;if(h>>>0<0|(h|0)==0&g>>>0<c>>>0){qe(b,a,g<<3);g=k[i>>2]|0;pe(b+(g<<3)|0,0,c-g<<3)}else qe(b,a,c<<3);ne(a);k[f>>2]=b;l=b}k[d>>2]=l;j=1;r=e;return j|0}function oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=r;r=r+16|0;e=d;f=a+176|0;g=k[f>>2]|0;if(g)ne(g);g=a+168|0;h=Ee(a,k[g>>2]|0,8,134235)|0;k[f>>2]=h;if(!h){i=-1;r=d;return i|0}do if((j[a+88>>1]|0)==1)if(!(k[a+12>>2]&1024)){h=Ld(a)|0;l=k[g>>2]|0;if(!l)break;n=Dr(((k[a+60>>2]|0)>>>0)/((k[a+164>>2]|0)>>>0)|0|0,0,h|0,L|0)|0;h=L;o=k[f>>2]|0;p=0;do{q=o+(p<<3)|0;k[q>>2]=n;k[q+4>>2]=h;p=p+1|0}while(p>>>0<l>>>0)}else{l=fe(a)|0;p=L;h=k[g>>2]|0;if(!h)break;n=k[f>>2]|0;o=0;do{q=n+(o<<3)|0;k[q>>2]=l;k[q+4>>2]=p;o=o+1|0}while(o>>>0<h>>>0)}else{h=a+628|0;o=ub[k[a+648>>2]&63](k[h>>2]|0)|0;p=L;l=a+12|0;n=c&65535;q=(k[l>>2]&524288|0)==0?(n*12|0)+14|0:(n*20|0)+32|0;a:do if(!(c<<16>>16)){s=q;t=0}else{n=q;u=0;v=b;w=c;while(1){x=v+2|0;y=ac(m[x>>1]|0)|0;if(!y){z=x;break}x=v+8|0;A=Dr(k[x>>2]|0,k[x+4>>2]|0,y|0,0)|0;y=L;x=(k[l>>2]&524288|0)==0?y>>>0<0|(y|0)==0&A>>>0<5:y>>>0<0|(y|0)==0&A>>>0<9;B=sr((x?0:A)|0,(x?0:y)|0,n|0,u|0)|0;y=L;w=w+-1<<16>>16;if(!(w<<16>>16)){s=B;t=y;break a}else{n=B;u=y;v=v+24|0}}v=k[h>>2]|0;k[e>>2]=m[z>>1];vc(v,134263,134287,e);i=-1;r=d;return i|0}while(0);h=pr(o|0,p|0,s|0,t|0)|0;l=L;if((j[a+126>>1]|0)==2){q=Er(h|0,l|0,m[a+98>>1]|0,0)|0;C=q;D=L}else{C=h;D=l}l=k[g>>2]|0;h=k[f>>2]|0;if(!l)E=-1;else{q=l>>>0>1;v=0;do{u=h+(v<<3)|0;k[u>>2]=C;k[u+4>>2]=D;v=v+1|0}while(v>>>0<l>>>0);E=q?l+-1|0:0}v=(k[a+172>>2]|0)+(E<<3)|0;u=k[v>>2]|0;n=k[v+4>>2]|0;v=h+(E<<3)|0;w=v;y=sr(k[w>>2]|0,k[w+4>>2]|0,u|0,n|0)|0;w=L;if(w>>>0>p>>>0|(w|0)==(p|0)&y>>>0>o>>>0){y=pr(o|0,p|0,u|0,n|0)|0;n=v;k[n>>2]=y;k[n+4>>2]=L}}while(0);E=a+40|0;D=k[E>>2]|0;k[E>>2]=D|16777216;if(D&131072){i=1;r=d;return i|0}k[a+100>>2]=k[a+60>>2];i=1;r=d;return i|0}function pc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;r=d;return h|0}}n=qc(a,b,e,8,f)|0;b=k[f>>2]|0;f=b;if((n|0)!=0|(b|0)==0){k[c>>2]=0;h=n;r=d;return h|0}switch(m[g>>1]|0|0){case 16:{k[c>>2]=b;if(!(k[a+12>>2]&128)){h=0;r=d;return h|0}Wd(b,k[e>>2]|0);h=0;r=d;return h|0}case 17:{n=k[e>>2]|0;a:do if(n){o=a+12|0;p=b;q=0;while(1){if(k[o>>2]&128)Sd(p);s=p;t=k[s+4>>2]|0;if(!((t|0)>-1|(t|0)==-1&(k[s>>2]|0)>>>0>4294967295))break;q=q+1|0;if(q>>>0>=n>>>0)break a;else p=p+8|0}ne(b);h=4;r=d;return h|0}while(0);k[c>>2]=f;h=0;r=d;return h|0}default:{f=k[e>>2]|0;e=me(f<<3)|0;if(!e){ne(b);h=7;r=d;return h|0}b:do switch(m[g>>1]|0|0){case 1:{if(!f)u=46;else{n=b;p=e;q=0;while(1){o=p;k[o>>2]=l[n>>0];k[o+4>>2]=0;q=q+1|0;if(q>>>0>=f>>>0){u=46;break}else{n=n+1|0;p=p+8|0}}}break}case 6:{if(!f)u=46;else{p=b;n=e;q=0;while(1){o=i[p>>0]|0;if(o<<24>>24<=-1){v=4;u=45;break b}s=o<<24>>24;o=n;k[o>>2]=s;k[o+4>>2]=((s|0)<0)<<31>>31;q=q+1|0;if(q>>>0>=f>>>0){u=46;break}else{p=p+1|0;n=n+8|0}}}break}case 3:{if(!f)u=46;else{n=a+12|0;p=b;q=e;s=0;while(1){if(k[n>>2]&128)Qd(p);o=q;k[o>>2]=m[p>>1];k[o+4>>2]=0;s=s+1|0;if(s>>>0>=f>>>0){u=46;break}else{p=p+2|0;q=q+8|0}}}break}case 8:{if(!f)u=46;else{q=a+12|0;p=b;s=e;n=0;while(1){if(k[q>>2]&128)Qd(p);o=j[p>>1]|0;if(o<<16>>16<=-1){v=4;u=45;break b}t=o<<16>>16;o=s;k[o>>2]=t;k[o+4>>2]=((t|0)<0)<<31>>31;n=n+1|0;if(n>>>0>=f>>>0){u=46;break}else{p=p+2|0;s=s+8|0}}}break}case 4:{if(!f)u=46;else{s=a+12|0;p=b;n=e;q=0;while(1){if(k[s>>2]&128)Rd(p);t=n;k[t>>2]=k[p>>2];k[t+4>>2]=0;q=q+1|0;if(q>>>0>=f>>>0){u=46;break}else{p=p+4|0;n=n+8|0}}}break}case 9:{if(!f)u=46;else{n=a+12|0;p=b;q=e;s=0;while(1){if(k[n>>2]&128)Rd(p);t=k[p>>2]|0;o=t>>31&4;if(o){v=o;u=45;break b}o=q;k[o>>2]=t;k[o+4>>2]=((t|0)<0)<<31>>31;s=s+1|0;if(s>>>0>=f>>>0){u=46;break}else{p=p+4|0;q=q+8|0}}}break}default:u=46}while(0);if((u|0)==45){ne(b);ne(e);h=v;r=d;return h|0}else if((u|0)==46){ne(b);k[c>>2]=e;h=0;r=d;return h|0}}}return 0}function qc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;f=r;r=r+16|0;g=f+8|0;h=f;i=ac(m[b+2>>1]|0)|0;j=b+8|0;l=k[j>>2]|0;n=k[j+4>>2]|0;if((i|0)==0|(l|0)==0&(n|0)==0){k[e>>2]=0;o=0;r=f;return o|0}j=2147483647/(i|0)|0;p=((j|0)<0)<<31>>31;if(p>>>0<n>>>0|(p|0)==(n|0)&j>>>0<l>>>0){o=6;r=f;return o|0}if(0<n>>>0|(0==(n|0)?(2147483647/(d>>>0)|0)>>>0<l>>>0:0)){o=6;r=f;return o|0}k[c>>2]=l;c=ha(l,i)|0;if((c|0)<=0)Ja(134368,133171,790,134389);d=Ee(a,l,i,134411)|0;if(!d){o=7;r=f;return o|0}i=a+12|0;l=k[i>>2]|0;do if(!(l&524288)){n=b+16|0;if(c>>>0<5){qe(d,n,c);break}j=k[n>>2]|0;k[g>>2]=j;if(!(l&128)){q=l;s=j}else{Rd(g);q=k[i>>2]|0;s=k[g>>2]|0}if(!(q&2048)){j=a+628|0;n=xb[k[a+640>>2]&63](k[j>>2]|0,s,0,0)|0;if((n|0)==(s|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[j>>2]|0,d,c)|0)==(c|0):0)break}else{j=s+c|0;if(!(j>>>0<c>>>0|j>>>0<s>>>0)?j>>>0<=(k[a+616>>2]|0)>>>0:0){qe(d,(k[a+612>>2]|0)+s|0,c);break}}ne(d);o=3;r=f;return o|0}else{if(c>>>0<9){qe(d,b+16|0,c);break}j=b+16|0;n=k[j>>2]|0;p=k[j+4>>2]|0;j=h;k[j>>2]=n;k[j+4>>2]=p;if(!(l&128)){t=l;u=n;v=p}else{Sd(h);p=h;t=k[i>>2]|0;u=k[p>>2]|0;v=k[p+4>>2]|0}if(!(t&2048)){p=a+628|0;n=xb[k[a+640>>2]&63](k[p>>2]|0,u,v,0)|0;if((n|0)==(u|0)&(L|0)==(v|0)?(nb[k[a+632>>2]&63](k[p>>2]|0,d,c)|0)==(c|0):0)break}else{p=u+c|0;if(!(p>>>0<c>>>0|((u|0)!=(u|0)|0!=(v|0)|p>>>0<u>>>0))?p>>>0<=(k[a+616>>2]|0)>>>0:0){qe(d,(k[a+612>>2]|0)+u|0,c);break}}ne(d);o=3;r=f;return o|0}while(0);k[e>>2]=d;o=0;r=f;return o|0}function rc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:case 2:break;default:{h=2;r=d;return h|0}}l=qc(a,b,e,1,f)|0;b=k[f>>2]|0;n=b;if((l|0)!=0|(b|0)==0){k[c>>2]=0;h=l;r=d;return h|0}switch(m[g>>1]|0){case 1:case 7:case 2:{k[c>>2]=n;h=0;r=d;return h|0}case 6:{l=k[e>>2]|0;a:do if(l){o=b;p=0;while(1){if((i[o>>0]|0)<=-1)break;p=p+1|0;if(p>>>0>=l>>>0)break a;else o=o+1|0}ne(b);h=4;r=d;return h|0}while(0);k[c>>2]=n;h=0;r=d;return h|0}default:{n=k[e>>2]|0;l=me(n)|0;if(!l){ne(b);h=7;r=d;return h|0}b:do switch(m[g>>1]|0){case 3:{if(!n)q=51;else{o=a+12|0;p=b;s=l;t=0;while(1){if(k[o>>2]&128)Qd(p);u=j[p>>1]|0;if((u&65535)>=256){q=50;break b}i[s>>0]=u;t=t+1|0;if(t>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+2|0;s=s+1|0}}}break}case 8:{if(!n)q=51;else{s=a+12|0;p=b;t=l;o=0;while(1){if(k[s>>2]&128)Qd(p);u=j[p>>1]|0;if((u&65535)>=256){q=50;break b}i[t>>0]=u;o=o+1|0;if(o>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+2|0;t=t+1|0}}}break}case 4:{if(!n)q=51;else{t=a+12|0;p=b;o=l;s=0;while(1){if(k[t>>2]&128)Rd(p);u=k[p>>2]|0;if(u>>>0>=256){q=50;break b}i[o>>0]=u;s=s+1|0;if(s>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+4|0;o=o+1|0}}}break}case 9:{if(!n)q=51;else{o=a+12|0;p=b;s=l;t=0;while(1){if(k[o>>2]&128)Rd(p);u=k[p>>2]|0;if(u>>>0>=256){q=50;break b}i[s>>0]=u;t=t+1|0;if(t>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+4|0;s=s+1|0}}}break}case 16:{if(!n)q=51;else{s=a+12|0;p=b;t=l;o=0;while(1){if(k[s>>2]&128)Sd(p);u=p;v=k[u>>2]|0;w=k[u+4>>2]|0;if(!(w>>>0<0|(w|0)==0&v>>>0<256)){q=50;break b}i[t>>0]=v;o=o+1|0;if(o>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+8|0;t=t+1|0}}}break}case 17:{if(!n)q=51;else{t=a+12|0;p=b;o=l;s=0;while(1){if(k[t>>2]&128)Sd(p);v=p;w=k[v>>2]|0;u=k[v+4>>2]|0;if(!(u>>>0<0|(u|0)==0&w>>>0<256)){q=50;break b}i[o>>0]=w;s=s+1|0;if(s>>>0>=(k[e>>2]|0)>>>0){q=51;break}else{p=p+8|0;o=o+1|0}}}break}default:q=51}while(0);if((q|0)==50){ne(k[f>>2]|0);ne(l);h=4;r=d;return h|0}else if((q|0)==51){ne(k[f>>2]|0);k[c>>2]=l;h=0;r=d;return h|0}}}return 0}function sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;r=d;return h|0}}n=qc(a,b,e,4,f)|0;b=k[f>>2]|0;f=b;if((n|0)!=0|(b|0)==0){k[c>>2]=0;h=n;r=d;return h|0}switch(m[g>>1]|0|0){case 4:{k[c>>2]=b;if(!(k[a+12>>2]&128)){h=0;r=d;return h|0}Vd(b,k[e>>2]|0);h=0;r=d;return h|0}case 9:{n=k[e>>2]|0;a:do if(n){o=a+12|0;p=b;q=0;while(1){if(k[o>>2]&128)Rd(p);s=k[p>>2]>>31&4;if(s){t=s;break}q=q+1|0;if(q>>>0>=n>>>0)break a;else p=p+4|0}ne(b);h=t;r=d;return h|0}while(0);k[c>>2]=f;h=0;r=d;return h|0}default:{f=k[e>>2]|0;t=me(f<<2)|0;if(!t){ne(b);h=7;r=d;return h|0}b:do switch(m[g>>1]|0|0){case 1:{if(!f)u=47;else{n=b;p=t;q=0;while(1){k[p>>2]=l[n>>0];q=q+1|0;if(q>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{n=n+1|0;p=p+4|0}}}break}case 6:{if(!f)u=47;else{p=b;n=t;q=0;while(1){o=i[p>>0]|0;if(o<<24>>24<=-1){u=46;break b}k[n>>2]=o<<24>>24;q=q+1|0;if(q>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{p=p+1|0;n=n+4|0}}}break}case 3:{if(!f)u=47;else{n=a+12|0;p=b;q=t;o=0;while(1){if(k[n>>2]&128)Qd(p);k[q>>2]=m[p>>1];o=o+1|0;if(o>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{p=p+2|0;q=q+4|0}}}break}case 8:{if(!f)u=47;else{q=a+12|0;p=b;o=t;n=0;while(1){if(k[q>>2]&128)Qd(p);s=j[p>>1]|0;if(s<<16>>16<=-1){u=46;break b}k[o>>2]=s<<16>>16;n=n+1|0;if(n>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{p=p+2|0;o=o+4|0}}}break}case 16:{if(!f)u=47;else{o=a+12|0;p=b;n=t;q=0;while(1){if(k[o>>2]&128)Sd(p);s=p;v=k[s>>2]|0;w=k[s+4>>2]|0;if(!(w>>>0<1|(w|0)==1&v>>>0<0)){u=46;break b}k[n>>2]=v;q=q+1|0;if(q>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{p=p+8|0;n=n+4|0}}}break}case 17:{if(!f)u=47;else{n=a+12|0;p=b;q=t;o=0;while(1){if(k[n>>2]&128)Sd(p);v=p;w=k[v>>2]|0;s=k[v+4>>2]|0;if(!(s>>>0<1|(s|0)==1&w>>>0<0)){u=46;break b}k[q>>2]=w;o=o+1|0;if(o>>>0>=(k[e>>2]|0)>>>0){u=47;break}else{p=p+8|0;q=q+4|0}}}break}default:u=47}while(0);if((u|0)==46){ne(b);ne(t);h=4;r=d;return h|0}else if((u|0)==47){ne(b);k[c>>2]=t;h=0;r=d;return h|0}}}return 0}function tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0.0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0){case 12:case 11:case 10:case 5:case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;r=d;return h|0}}n=qc(a,b,e,4,f)|0;b=k[f>>2]|0;f=b;if((n|0)!=0|(b|0)==0){k[c>>2]=0;h=n;r=d;return h|0}if((j[g>>1]|0)==11){if(k[a+12>>2]&128)Vd(b,k[e>>2]|0);k[c>>2]=f;h=0;r=d;return h|0}f=k[e>>2]|0;e=me(f<<2)|0;if(!e){ne(b);h=7;r=d;return h|0}do switch(m[g>>1]|0){case 1:{if(f){n=b;q=e;s=0;while(1){o[q>>2]=+(l[n>>0]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{n=n+1|0;q=q+4|0}}}break}case 6:{if(f){q=b;n=e;s=0;while(1){o[n>>2]=+(i[q>>0]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+1|0;n=n+4|0}}}break}case 3:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){if(k[n>>2]&128)Qd(q);o[s>>2]=+(m[q>>1]|0);t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+2|0;s=s+4|0}}}break}case 8:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){if(k[s>>2]&128)Qd(q);o[t>>2]=+(j[q>>1]|0);n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+2|0;t=t+4|0}}}break}case 4:{if(f){t=a+12|0;q=b;n=e;s=0;while(1){if(k[t>>2]&128)Rd(q);o[n>>2]=+((k[q>>2]|0)>>>0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+4|0;n=n+4|0}}}break}case 9:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){if(k[n>>2]&128)Rd(q);o[s>>2]=+(k[q>>2]|0);t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+4|0;s=s+4|0}}}break}case 16:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){if(k[s>>2]&128)Sd(q);u=q;o[t>>2]=+((k[u>>2]|0)>>>0)+4294967296.0*+((k[u+4>>2]|0)>>>0);n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+8|0;t=t+4|0}}}break}case 17:{if(f){t=a+12|0;q=b;n=e;s=0;while(1){if(k[t>>2]&128)Sd(q);u=q;o[n>>2]=+((k[u>>2]|0)>>>0)+4294967296.0*+(k[u+4>>2]|0);s=s+1|0;if(s>>>0>=f>>>0)break;else{q=q+8|0;n=n+4|0}}}break}case 5:{if(f){n=a+12|0;q=b;s=e;t=0;while(1){u=k[n>>2]|0;if(!(u&128))v=u;else{Rd(q);v=k[n>>2]|0}u=q+4|0;w=k[q>>2]|0;if(v&128)Rd(u);x=k[u>>2]|0;if(!x)y=0.0;else y=+(w>>>0)/+(x>>>0);o[s>>2]=y;t=t+1|0;if(t>>>0>=f>>>0)break;else{q=q+8|0;s=s+4|0}}}break}case 10:{if(f){s=a+12|0;q=b;t=e;n=0;while(1){x=k[s>>2]|0;if(!(x&128))z=x;else{Rd(q);z=k[s>>2]|0}x=k[q>>2]|0;w=q+4|0;if(z&128)Rd(w);u=k[w>>2]|0;if(!u)A=0.0;else A=+(x|0)/+(u>>>0);o[t>>2]=A;n=n+1|0;if(n>>>0>=f>>>0)break;else{q=q+8|0;t=t+4|0}}}break}case 12:{if(k[a+12>>2]&128)Wd(b,f);if(f){t=b;q=e;n=0;while(1){o[q>>2]=+p[t>>3];n=n+1|0;if(n>>>0>=f>>>0)break;else{t=t+8|0;q=q+4|0}}}break}default:{}}while(0);ne(b);k[c>>2]=e;h=0;r=d;return h|0}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0|0){case 18:case 13:case 16:case 4:break;default:{h=2;r=d;return h|0}}i=qc(a,b,e,8,f)|0;b=k[f>>2]|0;if((i|0)!=0|(b|0)==0){k[c>>2]=0;h=i;r=d;return h|0}switch(m[g>>1]|0|0){case 18:case 16:{k[c>>2]=b;if(!(k[a+12>>2]&128)){h=0;r=d;return h|0}Wd(b,k[e>>2]|0);h=0;r=d;return h|0}default:{}}i=k[e>>2]|0;e=me(i<<3)|0;if(!e){ne(b);h=7;r=d;return h|0}switch(m[g>>1]|0|0){case 13:case 4:{if(i){g=a+12|0;a=b;f=e;j=0;while(1){if(k[g>>2]&128)Rd(a);l=f;k[l>>2]=k[a>>2];k[l+4>>2]=0;j=j+1|0;if(j>>>0>=i>>>0)break;else{a=a+4|0;f=f+8|0}}}break}default:{}}ne(b);k[c>>2]=e;h=0;r=d;return h|0}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=k[1934]|0;if(d)vb[d&127](b,c,f);d=k[1910]|0;if(!d){r=e;return}Ab[d&31](a,b,c,f);r=e;return}function wc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;b=r;r=r+48|0;c=b+24|0;d=b+16|0;e=b+8|0;f=b;g=b+32|0;h=b+28|0;i=a+8|0;if(!(k[i>>2]|0)){j=1;r=b;return j|0}l=a+12|0;m=k[l>>2]|0;do if(m&64){if((m&4096|0)!=0?(k[l>>2]=m&-4097,(ub[k[a+528>>2]&63](a)|0)==0):0){j=0;r=b;return j|0}if(!(je(a)|0)){j=0;r=b;return j|0}else{n=k[l>>2]|0;break}}else n=m;while(0);do if((n&2097160|0)==2097152?(k[i>>2]|0)==2:0){k[g>>2]=0;k[h>>2]=0;if(!(rd(a)|0)){k[d>>2]=g;if(!(Pb(a,273,d)|0))break;k[c>>2]=h;if(!(Pb(a,279,c)|0))break;m=a+168|0;if(!($e(a,273,16,k[m>>2]|0,k[g>>2]|0)|0))break;if(!($e(a,279,16,k[m>>2]|0,k[h>>2]|0)|0))break;k[l>>2]=k[l>>2]&-2097217;j=1;r=b;return j|0}else{k[f>>2]=g;if(!(Pb(a,324,f)|0))break;k[e>>2]=h;if(!(Pb(a,325,e)|0))break;m=a+168|0;if(!($e(a,324,16,k[m>>2]|0,k[g>>2]|0)|0))break;if(!($e(a,325,16,k[m>>2]|0,k[h>>2]|0)|0))break;k[l>>2]=k[l>>2]&-2097217;j=1;r=b;return j|0}}while(0);if((k[l>>2]&2097160|0)!=0?(_e(a)|0)==0:0){j=0;r=b;return j|0}j=1;r=b;return j|0}function xc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;c=r;r=r+160|0;d=c+136|0;e=c+120|0;f=c+112|0;g=c+104|0;h=c+88|0;l=c+80|0;n=c+72|0;o=c+64|0;p=c+56|0;q=c+48|0;s=c+24|0;t=c+16|0;u=c+8|0;v=c;w=c+146|0;x=c+144|0;if(!(k[a+500>>2]|0)){y=b;z=135926;A=y+54|0;do{i[y>>0]=i[z>>0]|0;y=y+1|0;z=z+1|0}while((y|0)<(A|0));B=0;r=c;return B|0}z=a+84|0;y=m[z>>1]|0;switch(y|0){case 16:case 8:case 4:case 2:case 1:break;default:{k[v>>2]=y;Bq(b,135980,v)|0;B=0;r=c;return B|0}}v=a+98|0;y=(m[v>>1]|0)-(m[a+156>>1]|0)|0;k[u>>2]=w;a:do if(!(Pb(a,262,u)|0))switch(y|0){case 1:{j[w>>1]=1;C=1;break a;break}case 3:{j[w>>1]=2;C=2;break a;break}default:{k[t>>2]=130805;Bq(b,136029,t)|0;B=0;r=c;return B|0}}else C=j[w>>1]|0;while(0);w=C&65535;b:do if((w|0)<5){switch(w|0){case 3:case 1:case 0:break;case 2:{if((y|0)>=3){B=1;r=c;return B|0}k[q>>2]=136187;k[q+4>>2]=y;Bq(b,136144,q)|0;B=0;r=c;return B|0}default:break b}if((j[a+126>>1]|0)!=1){B=1;r=c;return B|0}C=j[v>>1]|0;if(C<<16>>16==1){B=1;r=c;return B|0}t=j[z>>1]|0;if((t&65535)>=8){B=1;r=c;return B|0}k[s>>2]=130805;k[s+4>>2]=w;k[s+8>>2]=136130;k[s+12>>2]=C&65535;k[s+16>>2]=t&65535;Bq(b,136051,s)|0;B=0;r=c;return B|0}else{if((w|0)<8){switch(w|0){case 5:break;case 6:{B=1;r=c;return B|0}default:break b}k[p>>2]=x;Ge(a,332,p)|0;t=j[x>>1]|0;if(t<<16>>16!=1){k[o>>2]=136251;k[o+4>>2]=t&65535;Bq(b,136202,o)|0;B=0;r=c;return B|0}t=j[v>>1]|0;if((t&65535)>=4){B=1;r=c;return B|0}k[n>>2]=136130;k[n+4>>2]=t&65535;Bq(b,136202,n)|0;B=0;r=c;return B|0}if((w|0)<32844){switch(w|0){case 8:break;default:break b}t=j[v>>1]|0;C=j[z>>1]|0;if(t<<16>>16==3&C<<16>>16==8){B=1;r=c;return B|0}k[e>>2]=136130;k[e+4>>2]=t&65535;k[e+8>>2]=136499;k[e+12>>2]=C&65535;Bq(b,136450,e)|0;B=0;r=c;return B|0}switch(w|0){case 32844:{if((j[a+88>>1]|0)==-30860){B=1;r=c;return B|0}k[l>>2]=136291;k[l+4>>2]=34676;Bq(b,136258,l)|0;B=0;r=c;return B|0}case 32845:break;default:break b}if((j[a+88>>1]&-2)<<16>>16!=-30860){k[h>>2]=136291;k[h+4>>2]=34676;k[h+8>>2]=34677;Bq(b,136303,h)|0;B=0;r=c;return B|0}C=j[a+126>>1]|0;if(C<<16>>16!=1){k[g>>2]=136391;k[g+4>>2]=C&65535;Bq(b,136344,g)|0;B=0;r=c;return B|0}C=j[v>>1]|0;if(C<<16>>16==3){B=1;r=c;return B|0}k[f>>2]=136130;k[f+4>>2]=C&65535;Bq(b,136411,f)|0;B=0;r=c;return B|0}while(0);k[d>>2]=130805;k[d+4>>2]=w;Bq(b,136411,d)|0;B=0;r=c;return B|0}function yc(a){a=a|0;var b=0,c=0,d=0;b=a+56|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+60|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+64|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+68|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+72|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+76|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+80|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+36|0;c=k[b>>2]|0;if(!c)return;ne(c);c=a+40|0;ne(k[c>>2]|0);d=a+44|0;ne(k[d>>2]|0);k[d>>2]=0;k[c>>2]=0;k[b>>2]=0;return}function zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0.0;e=r;r=r+384|0;f=e+344|0;g=e+336|0;h=e+328|0;l=e+320|0;n=e+312|0;p=e+304|0;q=e+296|0;s=e+288|0;t=e+280|0;u=e+272|0;v=e+264|0;w=e+256|0;x=e+248|0;y=e+240|0;z=e+224|0;A=e+216|0;B=e+208|0;C=e+200|0;D=e+192|0;E=e+176|0;F=e+168|0;G=e+160|0;H=e+152|0;I=e+144|0;J=e+136|0;K=e+128|0;L=e+120|0;M=e+96|0;N=e+80|0;O=e+72|0;P=e+64|0;Q=e+56|0;R=e+48|0;S=e+40|0;T=e+32|0;U=e+24|0;V=e+16|0;W=e+8|0;X=e;Y=e+364|0;Z=e+374|0;_=e+372|0;$=e+370|0;aa=e+360|0;ba=e+356|0;ca=e+352|0;da=e+368|0;k[a+84>>2]=0;k[a+88>>2]=0;ea=a+36|0;k[ea>>2]=0;fa=a+40|0;k[fa>>2]=0;ga=a+44|0;k[ga>>2]=0;j[a+30>>1]=4;k[a>>2]=b;k[a+4>>2]=c;c=a+24|0;k[X>>2]=c;Ge(b,258,X)|0;X=m[c>>1]|0;a:do switch(X|0){case 16:case 8:case 4:case 2:case 1:{ia=a+12|0;k[ia>>2]=0;ja=a+26|0;k[V>>2]=ja;Ge(b,277,V)|0;k[U>>2]=Z;k[U+4>>2]=Y;Ge(b,338,U)|0;b:do if(j[Z>>1]|0){ka=m[k[Y>>2]>>1]|0;switch(ka|0){case 0:break;case 2:case 1:{k[ia>>2]=ka;break b;break}default:break b}if((m[ja>>1]|0)>3)k[ia>>2]=1}while(0);ka=a+32|0;k[T>>2]=ka;if(!(Pb(b,262,T)|0))j[ka>>1]=0;la=j[Z>>1]|0;ma=j[ja>>1]|0;if(!(la<<16>>16))if(ma<<16>>16==4)if((j[ka>>1]|0)==2){k[ia>>2]=1;j[Z>>1]=1;na=4;oa=1}else{na=4;oa=0}else{na=ma;oa=0}else{na=ma;oa=la}la=(na&65535)-(oa&65535)|0;k[S>>2]=$;Ge(b,259,S)|0;k[R>>2]=_;Ge(b,284,R)|0;k[Q>>2]=ka;c:do if(!(Pb(b,262,Q)|0))switch(la|0){case 1:{k[P>>2]=Q;Pb(b,259,P)|0;ma=j[Q>>1]|0;d:do if(ma<<16>>16<3)if(ma<<16>>16<2)switch(ma<<16>>16){case -32765:{pa=18;break d;break}default:{pa=19;break d}}else switch(ma<<16>>16){case 2:{pa=18;break d;break}default:{pa=19;break d}}else switch(ma<<16>>16){case 4:case 3:{pa=18;break}default:pa=19}while(0);if((pa|0)==18){j[ka>>1]=0;qa=0;break c}else if((pa|0)==19){j[ka>>1]=1;qa=1;break c}break}case 3:{j[ka>>1]=2;qa=2;break c;break}default:{k[O>>2]=130805;Bq(d,136029,O)|0;break a}}else qa=j[ka>>1]|0;while(0);ma=qa&65535;e:do if((ma|0)<5){switch(ma|0){case 3:{pa=23;break}case 1:case 0:break;case 2:{if((la|0)>=3)break e;k[K>>2]=136187;k[K+4>>2]=la;Bq(d,136144,K)|0;break a;break}default:{pa=49;break e}}do if((pa|0)==23){k[N>>2]=aa;k[N+4>>2]=ba;k[N+8>>2]=ca;if(!(Pb(b,320,N)|0)){ra=d;sa=136511;ta=ra+32|0;do{i[ra>>0]=i[sa>>0]|0;ra=ra+1|0;sa=sa+1|0}while((ra|0)<(ta|0));break a}ua=2<<m[c>>1];va=me(ua)|0;k[ea>>2]=va;va=me(ua)|0;k[fa>>2]=va;va=me(ua)|0;k[ga>>2]=va;wa=k[ea>>2]|0;if((wa|0)!=0?!((va|0)==0|(k[fa>>2]|0)==0):0){qe(wa,k[aa>>2]|0,ua);qe(k[fa>>2]|0,k[ba>>2]|0,ua);qe(k[ga>>2]|0,k[ca>>2]|0,ua);break}ra=d;sa=136543;ta=ra+32|0;do{i[ra>>0]=i[sa>>0]|0;ra=ra+1|0;sa=sa+1|0}while((ra|0)<(ta|0));break a}while(0);if(((j[_>>1]|0)==1?(ua=j[ja>>1]|0,wa=ua&65535,ua<<16>>16!=1):0)?(ua=j[c>>1]|0,(ua&65535)<8):0){va=m[ka>>1]|0;k[M>>2]=130805;k[M+4>>2]=va;k[M+8>>2]=136130;k[M+12>>2]=wa;k[M+16>>2]=ua&65535;Bq(d,136051,M)|0;break a}}else{if((ma|0)<8){switch(ma|0){case 6:{if(!((j[_>>1]|0)==1&(j[$>>1]|0)==7))break e;k[L>>2]=1;Ob(b,65538,L)|0;j[ka>>1]=2;break e;break}case 5:break;default:{pa=49;break e}}k[J>>2]=da;Ge(b,332,J)|0;ua=j[da>>1]|0;if(ua<<16>>16!=1){k[I>>2]=136251;k[I+4>>2]=ua&65535;Bq(d,136202,I)|0;break a}ua=j[ja>>1]|0;if((ua&65535)>=4)break;k[H>>2]=136130;k[H+4>>2]=ua&65535;Bq(d,136202,H)|0;break a}if((ma|0)<32844)switch(ma|0){case 8:{break e;break}default:{pa=49;break e}}switch(ma|0){case 32844:{if((j[$>>1]|0)==-30860){k[F>>2]=3;Ob(b,65560,F)|0;j[ka>>1]=1;j[c>>1]=8;break e}else{k[G>>2]=136291;k[G+4>>2]=34676;Bq(d,136258,G)|0;break a}break}case 32845:break;default:{pa=49;break e}}if((j[$>>1]&-2)<<16>>16!=-30860){k[E>>2]=136291;k[E+4>>2]=34676;k[E+8>>2]=34677;Bq(d,136303,E)|0;break a}ua=j[_>>1]|0;if(ua<<16>>16==1){k[C>>2]=3;Ob(b,65560,C)|0;j[ka>>1]=2;j[c>>1]=8;break}k[D>>2]=136391;k[D+4>>2]=ua&65535;Bq(d,136344,D)|0;xa=0;r=e;return xa|0}while(0);if((pa|0)==49){k[B>>2]=130805;k[B+4>>2]=ma;Bq(d,136411,B)|0;break a}la=a+56|0;ua=a+72|0;wa=a+76|0;va=a+80|0;k[la>>2]=0;k[la+4>>2]=0;k[la+8>>2]=0;k[la+12>>2]=0;k[la+16>>2]=0;k[la+20>>2]=0;k[la+24>>2]=0;k[A>>2]=a+16;Pb(b,256,A)|0;k[z>>2]=a+20;Pb(b,257,z)|0;k[y>>2]=a+28;Ge(b,274,y)|0;if((j[_>>1]|0)==2){ya=(m[ja>>1]|0)<2;k[a+8>>2]=ya&1;if(!ya){ya=(rd(k[a>>2]|0)|0)!=0;za=a+48|0;k[za>>2]=ya?3:4;ya=a+52|0;k[ya>>2]=0;f:do switch(m[ka>>1]|0){case 2:case 1:case 0:{switch(m[c>>1]|0){case 8:{switch(k[ia>>2]|0){case 1:{k[ya>>2]=1;break f;break}case 2:{if(k[wa>>2]|0)Ja(136575,136593,2728,136608);Aa=me(65536)|0;k[wa>>2]=Aa;if(!Aa){vc(k[(k[a>>2]|0)+628>>2]|0,136608,150005,n);break f}else{Ba=0;Ca=Aa}while(1){Aa=0;Da=Ca;while(1){Ea=((((ha(Aa,Ba)|0)+127|0)>>>0)/255|0)&255;i[Da>>0]=Ea;Aa=Aa+1|0;if((Aa|0)==256)break;else Da=Da+1|0}Ba=Ba+1|0;if((Ba|0)==256)break;else Ca=Ca+256|0}k[ya>>2]=2;break f;break}default:{k[ya>>2]=3;break f}}break}case 16:break;default:break f}Da=k[ia>>2]|0;if((Da|0)==1){if(k[va>>2]|0)Ja(136623,136593,2750,136648);Aa=me(65536)|0;k[va>>2]=Aa;if(!Aa){vc(k[(k[a>>2]|0)+628>>2]|0,136648,150005,l);break f}else{Fa=Aa;Ga=0}while(1){i[Fa>>0]=((Ga+128|0)>>>0)/257|0;Ga=Ga+1|0;if((Ga|0)==65536)break;else Fa=Fa+1|0}k[ya>>2]=4;break f}Aa=(Da|0)==2;if(k[va>>2]|0)Ja(136623,136593,2750,136648);Ea=me(65536)|0;k[va>>2]=Ea;if(!Ea){vc(k[(k[a>>2]|0)+628>>2]|0,136648,150005,h);Ha=0}else{Ia=Ea;Ea=0;while(1){i[Ia>>0]=((Ea+128|0)>>>0)/257|0;Ea=Ea+1|0;if((Ea|0)==65536){Ha=1;break}else Ia=Ia+1|0}}if(!Aa){if(!Ha)break f;k[ya>>2]=6;break f}if(Ha){if(k[wa>>2]|0)Ja(136575,136593,2728,136608);Ia=me(65536)|0;k[wa>>2]=Ia;if(!Ia){vc(k[(k[a>>2]|0)+628>>2]|0,136608,150005,g);break f}else{Ka=0;La=Ia}while(1){Ia=0;Ea=La;while(1){Da=((((ha(Ia,Ka)|0)+127|0)>>>0)/255|0)&255;i[Ea>>0]=Da;Ia=Ia+1|0;if((Ia|0)==256)break;else Ea=Ea+1|0}Ka=Ka+1|0;if((Ka|0)==256)break;else La=La+256|0}k[ya>>2]=5}break}case 5:{if((j[c>>1]|0)==8?(j[ja>>1]|0)==4:0){k[ia>>2]=1;k[ya>>2]=7}break}case 6:{if((((j[c>>1]|0)==8?(j[ja>>1]|0)==3:0)?(Xc(a)|0)!=0:0)?(Aa=k[a>>2]|0,k[f>>2]=y,k[f+4>>2]=z,Ge(Aa,530,f)|0,(m[y>>1]<<4|m[z>>1]|0)==17):0)k[ya>>2]=8;break}default:{}}while(0);if(k[za>>2]|0)if(k[ya>>2]|0){xa=1;r=e;return xa|0}ra=d;sa=136793;ta=ra+28|0;do{i[ra>>0]=i[sa>>0]|0;ra=ra+1|0;sa=sa+1|0}while((ra|0)<(ta|0));break a}}else k[a+8>>2]=1;ya=(rd(k[a>>2]|0)|0)!=0;za=a+48|0;k[za>>2]=ya?1:2;ya=a+52|0;k[ya>>2]=0;g:do switch(m[ka>>1]|0){case 2:{switch(m[c>>1]|0){case 8:{switch(k[ia>>2]|0){case 1:{k[ya>>2]=1;break g;break}case 2:{if(k[wa>>2]|0)Ja(136575,136593,2728,136608);ma=me(65536)|0;k[wa>>2]=ma;if(!ma){vc(k[(k[a>>2]|0)+628>>2]|0,136608,150005,x);break g}else{Ma=0;Na=ma}while(1){ma=0;Aa=Na;while(1){Ea=((((ha(ma,Ma)|0)+127|0)>>>0)/255|0)&255;i[Aa>>0]=Ea;ma=ma+1|0;if((ma|0)==256)break;else Aa=Aa+1|0}Ma=Ma+1|0;if((Ma|0)==256)break;else Na=Na+256|0}k[ya>>2]=2;break g;break}default:{k[ya>>2]=3;break g}}break}case 16:break;default:break g}Aa=k[ia>>2]|0;if((Aa|0)==1){if(k[va>>2]|0)Ja(136623,136593,2750,136648);ma=me(65536)|0;k[va>>2]=ma;if(!ma){vc(k[(k[a>>2]|0)+628>>2]|0,136648,150005,w);break g}else{Oa=ma;Pa=0}while(1){i[Oa>>0]=((Pa+128|0)>>>0)/257|0;Pa=Pa+1|0;if((Pa|0)==65536)break;else Oa=Oa+1|0}k[ya>>2]=4;break g}ma=(Aa|0)==2;if(k[va>>2]|0)Ja(136623,136593,2750,136648);Ea=me(65536)|0;k[va>>2]=Ea;if(!Ea){vc(k[(k[a>>2]|0)+628>>2]|0,136648,150005,v);Qa=0}else{Ia=Ea;Ea=0;while(1){i[Ia>>0]=((Ea+128|0)>>>0)/257|0;Ea=Ea+1|0;if((Ea|0)==65536){Qa=1;break}else Ia=Ia+1|0}}if(!ma){if(!Qa)break g;k[ya>>2]=6;break g}if(Qa){if(k[wa>>2]|0)Ja(136575,136593,2728,136608);Ia=me(65536)|0;k[wa>>2]=Ia;if(!Ia){vc(k[(k[a>>2]|0)+628>>2]|0,136608,150005,u);break g}else{Ra=0;Sa=Ia}while(1){Ia=0;Ea=Sa;while(1){Aa=((((ha(Ia,Ra)|0)+127|0)>>>0)/255|0)&255;i[Ea>>0]=Aa;Ia=Ia+1|0;if((Ia|0)==256)break;else Ea=Ea+1|0}Ra=Ra+1|0;if((Ra|0)==256)break;else Sa=Sa+256|0}k[ya>>2]=5}break}case 5:{if((Kc(a)|0)!=0?(j[c>>1]|0)==8:0)if(!(k[la>>2]|0)){k[ya>>2]=7;break g}else{k[ya>>2]=8;break g}break}case 3:{if(Kc(a)|0)switch(m[c>>1]|0){case 8:{k[ya>>2]=9;break g;break}case 4:{k[ya>>2]=10;break g;break}case 2:{k[ya>>2]=11;break g;break}case 1:{k[ya>>2]=12;break g;break}default:break g}break}case 1:case 0:{if(Kc(a)|0)switch(m[c>>1]|0){case 16:{k[ya>>2]=13;break g;break}case 8:{if((k[ia>>2]|0)!=0?(j[ja>>1]|0)==2:0){k[ya>>2]=14;break g}k[ya>>2]=15;break g;break}case 4:{k[ya>>2]=16;break g;break}case 2:{k[ya>>2]=17;break g;break}case 1:{k[ya>>2]=18;break g;break}default:break g}break}case 6:{if(((j[c>>1]|0)==8?(j[ja>>1]|0)==3:0)?(Xc(a)|0)!=0:0){ma=k[a>>2]|0;k[t>>2]=A;k[t+4>>2]=Q;Ge(ma,530,t)|0;switch(m[A>>1]<<4|m[Q>>1]|0){case 68:{k[ya>>2]=19;break g;break}case 66:{k[ya>>2]=20;break g;break}case 65:{k[ya>>2]=21;break g;break}case 34:{k[ya>>2]=22;break g;break}case 33:{k[ya>>2]=23;break g;break}case 18:{k[ya>>2]=24;break g;break}case 17:{k[ya>>2]=25;break g;break}default:break g}}break}case 8:{if((Kc(a)|0)!=0?(j[c>>1]|0)==8:0){if((k[ua>>2]|0)==0?(ma=me(18124)|0,k[ua>>2]=ma,(ma|0)==0):0){vc(k[(k[a>>2]|0)+628>>2]|0,136670,136691,s);Ta=0}else{ma=k[a>>2]|0;k[q>>2]=y;Ge(ma,318,q)|0;o[z+4>>2]=100.0;ma=k[y>>2]|0;Ea=ma+4|0;o[z>>2]=+o[ma>>2]/+o[Ea>>2]*100.0;Ua=+o[Ea>>2];o[z+8>>2]=(1.0-+o[ma>>2]-Ua)/Ua*100.0;if((Je(k[ua>>2]|0,7644,z)|0)<0){vc(k[(k[a>>2]|0)+628>>2]|0,136670,136738,p);ne(k[ua>>2]|0);Ta=0}else Ta=26}k[ya>>2]=Ta}break}default:{}}while(0);if(k[za>>2]|0)if(k[ya>>2]|0){xa=1;r=e;return xa|0}ra=d;sa=136793;ta=ra+28|0;do{i[ra>>0]=i[sa>>0]|0;ra=ra+1|0;sa=sa+1|0}while((ra|0)<(ta|0));break}default:{k[W>>2]=X;Bq(d,135980,W)|0}}while(0);ne(k[ea>>2]|0);ne(k[fa>>2]|0);ne(k[ga>>2]|0);k[ga>>2]=0;k[fa>>2]=0;k[ea>>2]=0;xa=0;r=e;return xa|0}function Ac(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;g=r;r=r+1136|0;h=g+16|0;i=g+8|0;l=g;m=g+112|0;n=g+20|0;qr(m|0,0,1024)|0;if((xc(a,m)|0)!=0?(zc(n,a,f,m)|0)!=0:0){j[n+30>>1]=e;e=k[n+20>>2]|0;f=d+((ha(c-e|0,b)|0)<<2)|0;c=k[n+48>>2]|0;do if(c)if(!(k[n+52>>2]|0)){d=k[n>>2]|0;o=k[d+628>>2]|0;vc(o,qd(d)|0,136844,i);p=0;break}else{p=xb[c&63](n,f,b,e)|0;break}else{d=k[n>>2]|0;o=k[d+628>>2]|0;vc(o,qd(d)|0,136821,l);p=0}while(0);yc(n);q=p;r=g;return q|0}p=k[a+628>>2]|0;n=qd(a)|0;k[h>>2]=m;vc(p,n,154321,h);q=0;r=g;return q|0}function Bc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return Ac(a,b,c,d,4,e)|0}function Cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;e=r;r=r+32|0;f=e+16|0;g=e+8|0;h=e;i=e+24|0;l=e+20|0;n=k[a>>2]|0;o=k[a+52>>2]|0;p=me(ge(n)|0)|0;if(!p){q=k[n+628>>2]|0;s=qd(n)|0;k[h>>2]=136922;vc(q,s,154321,h);t=0;r=e;return t|0}pe(p,0,ge(n)|0);k[g>>2]=i;Pb(n,322,g)|0;k[f>>2]=l;Pb(n,323,f)|0;a:do switch(m[a+28>>1]|0){case 5:case 1:{switch(j[a+30>>1]|0){case 6:case 2:{u=2;v=17;break a;break}case 7:case 3:{w=3;v=16;break a;break}case 8:case 4:{w=1;v=16;break a;break}default:{u=0;v=17;break a}}break}case 6:case 2:{switch(j[a+30>>1]|0){case 5:case 1:{u=2;v=17;break a;break}case 7:case 3:{w=1;v=16;break a;break}case 8:case 4:{w=3;v=16;break a;break}default:{u=0;v=17;break a}}break}case 7:case 3:{switch(j[a+30>>1]|0){case 5:case 1:{w=3;v=16;break a;break}case 8:case 4:{u=2;v=17;break a;break}case 6:case 2:{w=1;v=16;break a;break}default:{u=0;v=17;break a}}break}case 8:case 4:{switch(j[a+30>>1]|0){case 5:case 1:{w=1;v=16;break a;break}case 7:case 3:{u=2;v=17;break a;break}case 6:case 2:{w=3;v=16;break a;break}default:{u=0;v=17;break a}}break}default:{u=0;v=17}}while(0);if((v|0)==16){f=k[i>>2]|0;x=w;y=f;z=1;A=0-(f+c)|0;B=d+-1|0}else if((v|0)==17){v=k[i>>2]|0;x=u;y=v;z=0;A=c-v|0;B=0}v=a+88|0;u=((k[v>>2]|0)>>>0)%(y>>>0)|0;f=y-u|0;y=u+A|0;w=(d|0)==0;if(w)C=1;else{g=a+84|0;h=a+4|0;s=(c|0)==0;q=a+26|0;D=1;E=0;F=B;while(1){B=k[l>>2]|0;G=k[g>>2]|0;H=B-(((G+E|0)>>>0)%(B>>>0)|0)|0;B=(H+E|0)>>>0>d>>>0?d-E|0:H;b:do if(s)I=D;else{H=ha(F,c)|0;J=G;K=k[v>>2]|0;L=u;M=y;N=f;O=0;while(1){if((yd(n,p,K,J+E|0,0,0)|0)==-1?(k[h>>2]|0)!=0:0){I=0;break b}P=(((k[g>>2]|0)+E|0)>>>0)%((k[l>>2]|0)>>>0)|0;Q=ha(de(n)|0,P)|0;P=(ha(m[q>>1]|0,L)|0)+Q|0;if((O+N|0)>>>0>c>>>0){Q=c-O|0;R=(k[i>>2]|0)-Q|0;S=R;T=R+A|0;U=Q}else{S=L;T=M;U=N}wb[o&31](a,b+(O+H<<2)|0,O,F,U,B,S,T,p+P|0);P=U+O|0;if(P>>>0>=c>>>0){I=D;break b}J=k[g>>2]|0;K=U+K|0;L=0;M=A;N=k[i>>2]|0;O=P}}while(0);E=B+E|0;if(E>>>0>=d>>>0){C=I;break}else{D=I;F=(z?0-B|0:B)+F|0}}}ne(p);if((x&2|0)==0|w){t=C;r=e;return t|0}w=c+-1|0;x=0;do{p=ha(x,c)|0;F=w+p|0;if((p|0)<(F|0)){z=b+(p<<2)|0;p=b+(F<<2)|0;do{F=k[z>>2]|0;k[z>>2]=k[p>>2];k[p>>2]=F;z=z+4|0;p=p+-4|0}while(z>>>0<p>>>0)}x=x+1|0}while((x|0)!=(d|0));t=C;r=e;return t|0}function Dc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;e=r;r=r+48|0;f=e+24|0;g=e;h=e+28|0;i=e+32|0;l=k[a>>2]|0;n=k[a+52>>2]|0;o=k[a+16>>2]|0;k[g>>2]=e+34;k[g+4>>2]=i;Ge(l,530,g)|0;if(!(j[i>>1]|0)){g=k[l+628>>2]|0;vc(g,qd(l)|0,137155,e+8|0);p=0;r=e;return p|0}g=me(Nd(l)|0)|0;if(!g){q=k[l+628>>2]|0;vc(q,qd(l)|0,137190,e+16|0);p=0;r=e;return p|0}pe(g,0,Nd(l)|0);a:do switch(m[a+28>>1]|0){case 5:case 1:{switch(j[a+30>>1]|0){case 6:case 2:{s=2;t=0;u=0;v=0;break a;break}case 7:case 3:{w=3;x=18;break a;break}case 8:case 4:{w=1;x=18;break a;break}default:{s=0;t=0;u=0;v=0;break a}}break}case 6:case 2:{switch(j[a+30>>1]|0){case 5:case 1:{s=2;t=0;u=0;v=0;break a;break}case 7:case 3:{w=1;x=18;break a;break}case 8:case 4:{w=3;x=18;break a;break}default:{s=0;t=0;u=0;v=0;break a}}break}case 7:case 3:{switch(j[a+30>>1]|0){case 5:case 1:{w=3;x=18;break a;break}case 8:case 4:{s=2;t=0;u=0;v=0;break a;break}case 6:case 2:{w=1;x=18;break a;break}default:{s=0;t=0;u=0;v=0;break a}}break}case 8:case 4:{switch(j[a+30>>1]|0){case 5:case 1:{w=1;x=18;break a;break}case 7:case 3:{s=2;t=0;u=0;v=0;break a;break}case 6:case 2:{w=3;x=18;break a;break}default:{s=0;t=0;u=0;v=0;break a}}break}default:{s=0;t=0;u=0;v=0}}while(0);if((x|0)==18){s=w;t=1;u=0-(c<<1)|0;v=d+-1|0}k[f>>2]=h;Ge(l,278,f)|0;f=Pd(l)|0;w=o>>>0>c>>>0?o-c|0:0;o=a+4|0;x=(d|0)==0;b:do if(!x){q=a+84|0;y=a+88|0;z=a+26|0;if(t){A=0;B=v;while(1){C=k[h>>2]|0;D=(k[q>>2]|0)+A|0;E=C-((D>>>0)%(C>>>0)|0)|0;C=(E+A|0)>>>0>d>>>0?d-A|0:E;E=m[i>>1]|0;F=(C>>>0)%(E>>>0)|0;G=Id(l,D,0)|0;if((vd(l,G,g,ha(C+((F|0)==0?0:E-F|0)+((((k[q>>2]|0)+A|0)>>>0)%((k[h>>2]|0)>>>0)|0)|0,f)|0)|0)==-1?(k[o>>2]|0)!=0:0){H=0;break b}F=ha((((k[q>>2]|0)+A|0)>>>0)%((k[h>>2]|0)>>>0)|0,f)|0;E=b+((ha(B,c)|0)<<2)|0;G=g+((ha(m[z>>1]|0,k[y>>2]|0)|0)+F)|0;wb[n&31](a,E,0,B,c,C,w,u,G);A=C+A|0;if(A>>>0>=d>>>0){H=1;break}else B=B-C|0}}else{B=0;A=v;while(1){C=k[h>>2]|0;G=(k[q>>2]|0)+B|0;E=C-((G>>>0)%(C>>>0)|0)|0;C=(E+B|0)>>>0>d>>>0?d-B|0:E;E=m[i>>1]|0;F=(C>>>0)%(E>>>0)|0;D=Id(l,G,0)|0;if((vd(l,D,g,ha(C+((F|0)==0?0:E-F|0)+((((k[q>>2]|0)+B|0)>>>0)%((k[h>>2]|0)>>>0)|0)|0,f)|0)|0)==-1?(k[o>>2]|0)!=0:0){H=0;break b}F=ha((((k[q>>2]|0)+B|0)>>>0)%((k[h>>2]|0)>>>0)|0,f)|0;E=b+((ha(A,c)|0)<<2)|0;D=g+((ha(m[z>>1]|0,k[y>>2]|0)|0)+F)|0;wb[n&31](a,E,0,A,c,C,w,u,D);B=C+B|0;if(B>>>0>=d>>>0){H=1;break}else A=C+A|0}}}else H=1;while(0);if(!((s&2|0)==0|x)){x=c+-1|0;s=0;do{u=ha(s,c)|0;w=x+u|0;if((u|0)<(w|0)){a=b+(u<<2)|0;u=b+(w<<2)|0;do{w=k[a>>2]|0;k[a>>2]=k[u>>2];k[u>>2]=w;a=a+4|0;u=u+-4|0}while(a>>>0<u>>>0)}s=s+1|0}while((s|0)!=(d|0))}ne(g);p=H;r=e;return p|0}function Ec(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0;d=m[a+26>>1]|0;a=ha(d,g)|0;if(!f)return;g=e>>>0>7;c=d+1|0;j=d+2|0;n=d+3|0;o=d<<1;p=o|1;q=o+2|0;r=o+3|0;s=d*3|0;t=s+1|0;u=s+2|0;v=s+3|0;w=d<<2;x=w|1;y=w|2;z=w|3;A=d*5|0;B=A+1|0;C=A+2|0;D=A+3|0;E=d*6|0;F=E|1;G=E+2|0;H=E+3|0;I=d*7|0;J=I+1|0;K=I+2|0;L=I+3|0;M=d<<3;N=e+-8|0;O=N&-8;P=N-O|0;N=O+8|0;O=ha(N,d)|0;Q=i;i=b;b=f;while(1){b=b+-1|0;if(g){f=Q+O|0;R=Q;S=i;T=e;while(1){k[S>>2]=(l[R+1>>0]|0)<<8|(l[R>>0]|0)|(l[R+2>>0]|0)<<16|(l[R+3>>0]|0)<<24;k[S+4>>2]=(l[R+c>>0]|0)<<8|(l[R+d>>0]|0)|(l[R+j>>0]|0)<<16|(l[R+n>>0]|0)<<24;k[S+8>>2]=(l[R+p>>0]|0)<<8|(l[R+o>>0]|0)|(l[R+q>>0]|0)<<16|(l[R+r>>0]|0)<<24;k[S+12>>2]=(l[R+t>>0]|0)<<8|(l[R+s>>0]|0)|(l[R+u>>0]|0)<<16|(l[R+v>>0]|0)<<24;k[S+16>>2]=(l[R+x>>0]|0)<<8|(l[R+w>>0]|0)|(l[R+y>>0]|0)<<16|(l[R+z>>0]|0)<<24;k[S+20>>2]=(l[R+B>>0]|0)<<8|(l[R+A>>0]|0)|(l[R+C>>0]|0)<<16|(l[R+D>>0]|0)<<24;k[S+24>>2]=(l[R+F>>0]|0)<<8|(l[R+E>>0]|0)|(l[R+G>>0]|0)<<16|(l[R+H>>0]|0)<<24;k[S+28>>2]=(l[R+J>>0]|0)<<8|(l[R+I>>0]|0)|(l[R+K>>0]|0)<<16|(l[R+L>>0]|0)<<24;T=T+-8|0;if(T>>>0<=7)break;else{R=R+M|0;S=S+32|0}}U=i+(N<<2)|0;V=f;W=P}else{U=i;V=Q;W=e}switch(W|0){case 1:{X=U;Y=V;Z=14;break}case 7:{k[U>>2]=(l[V+1>>0]|0)<<8|(l[V>>0]|0)|(l[V+2>>0]|0)<<16|(l[V+3>>0]|0)<<24;_=U+4|0;$=V+d|0;Z=9;break}case 6:{_=U;$=V;Z=9;break}case 5:{aa=U;ba=V;Z=10;break}case 4:{ca=U;da=V;Z=11;break}case 3:{ea=U;fa=V;Z=12;break}case 2:{ga=U;ia=V;Z=13;break}default:{ja=U;ka=V}}if((Z|0)==9){Z=0;k[_>>2]=(l[$+1>>0]|0)<<8|(l[$>>0]|0)|(l[$+2>>0]|0)<<16|(l[$+3>>0]|0)<<24;aa=_+4|0;ba=$+d|0;Z=10}if((Z|0)==10){Z=0;k[aa>>2]=(l[ba+1>>0]|0)<<8|(l[ba>>0]|0)|(l[ba+2>>0]|0)<<16|(l[ba+3>>0]|0)<<24;ca=aa+4|0;da=ba+d|0;Z=11}if((Z|0)==11){Z=0;k[ca>>2]=(l[da+1>>0]|0)<<8|(l[da>>0]|0)|(l[da+2>>0]|0)<<16|(l[da+3>>0]|0)<<24;ea=ca+4|0;fa=da+d|0;Z=12}if((Z|0)==12){Z=0;k[ea>>2]=(l[fa+1>>0]|0)<<8|(l[fa>>0]|0)|(l[fa+2>>0]|0)<<16|(l[fa+3>>0]|0)<<24;ga=ea+4|0;ia=fa+d|0;Z=13}if((Z|0)==13){Z=0;k[ga>>2]=(l[ia+1>>0]|0)<<8|(l[ia>>0]|0)|(l[ia+2>>0]|0)<<16|(l[ia+3>>0]|0)<<24;X=ga+4|0;Y=ia+d|0;Z=14}if((Z|0)==14){Z=0;k[X>>2]=(l[Y+1>>0]|0)<<8|(l[Y>>0]|0)|(l[Y+2>>0]|0)<<16|(l[Y+3>>0]|0)<<24;ja=X+4|0;ka=Y+d|0}if(!b)break;else{Q=ka+a|0;i=ja+(h<<2)|0}}return}function Fc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=m[a+26>>1]|0;c=ha(d,g)|0;if(!f)return;g=(e|0)==0;j=a+76|0;a=ha(d,e)|0;n=b;b=i;i=f;while(1){i=i+-1|0;if(g){o=n;p=b}else{f=b+a|0;q=k[j>>2]|0;r=e;s=b;t=n;while(1){r=r+-1|0;u=l[s+3>>0]|0;v=u<<8;k[t>>2]=l[q+(l[s>>0]|0|v)>>0]|0|u<<24|(l[q+(l[s+1>>0]|0|v)>>0]|0)<<8|(l[q+(l[s+2>>0]|0|v)>>0]|0)<<16;if(!r)break;else{s=s+d|0;t=t+4|0}}o=n+(e<<2)|0;p=f}if(!i)break;else{n=o+(h<<2)|0;b=p+c|0}}return}function Gc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=m[a+26>>1]|0;a=ha(d,g)|0;if(!f)return;g=e>>>0>7;c=d+1|0;j=d+2|0;n=d<<1;o=n|1;p=n+2|0;q=d*3|0;r=q+1|0;s=q+2|0;t=d<<2;u=t|1;v=t|2;w=d*5|0;x=w+1|0;y=w+2|0;z=d*6|0;A=z|1;B=z+2|0;C=d*7|0;D=C+1|0;E=C+2|0;F=d<<3;G=e+-8|0;H=G&-8;I=G-H|0;G=H+8|0;H=ha(G,d)|0;J=i;i=b;b=f;while(1){b=b+-1|0;if(g){f=J+H|0;K=J;L=i;M=e;while(1){k[L>>2]=l[K>>0]|0|(l[K+1>>0]|0)<<8|(l[K+2>>0]|0)<<16|-16777216;k[L+4>>2]=l[K+d>>0]|0|(l[K+c>>0]|0)<<8|(l[K+j>>0]|0)<<16|-16777216;k[L+8>>2]=l[K+n>>0]|0|(l[K+o>>0]|0)<<8|(l[K+p>>0]|0)<<16|-16777216;k[L+12>>2]=l[K+q>>0]|0|(l[K+r>>0]|0)<<8|(l[K+s>>0]|0)<<16|-16777216;k[L+16>>2]=l[K+t>>0]|0|(l[K+u>>0]|0)<<8|(l[K+v>>0]|0)<<16|-16777216;k[L+20>>2]=l[K+w>>0]|0|(l[K+x>>0]|0)<<8|(l[K+y>>0]|0)<<16|-16777216;k[L+24>>2]=l[K+z>>0]|0|(l[K+A>>0]|0)<<8|(l[K+B>>0]|0)<<16|-16777216;k[L+28>>2]=l[K+C>>0]|0|(l[K+D>>0]|0)<<8|(l[K+E>>0]|0)<<16|-16777216;M=M+-8|0;if(M>>>0<=7)break;else{K=K+F|0;L=L+32|0}}N=i+(G<<2)|0;O=f;P=I}else{N=i;O=J;P=e}switch(P|0){case 1:{Q=N;R=O;S=14;break}case 7:{k[N>>2]=l[O>>0]|0|(l[O+1>>0]|0)<<8|(l[O+2>>0]|0)<<16|-16777216;T=N+4|0;U=O+d|0;S=9;break}case 6:{T=N;U=O;S=9;break}case 5:{V=N;W=O;S=10;break}case 4:{X=N;Y=O;S=11;break}case 3:{Z=N;_=O;S=12;break}case 2:{$=N;aa=O;S=13;break}default:{ba=N;ca=O}}if((S|0)==9){S=0;k[T>>2]=l[U>>0]|0|(l[U+1>>0]|0)<<8|(l[U+2>>0]|0)<<16|-16777216;V=T+4|0;W=U+d|0;S=10}if((S|0)==10){S=0;k[V>>2]=l[W>>0]|0|(l[W+1>>0]|0)<<8|(l[W+2>>0]|0)<<16|-16777216;X=V+4|0;Y=W+d|0;S=11}if((S|0)==11){S=0;k[X>>2]=l[Y>>0]|0|(l[Y+1>>0]|0)<<8|(l[Y+2>>0]|0)<<16|-16777216;Z=X+4|0;_=Y+d|0;S=12}if((S|0)==12){S=0;k[Z>>2]=l[_>>0]|0|(l[_+1>>0]|0)<<8|(l[_+2>>0]|0)<<16|-16777216;$=Z+4|0;aa=_+d|0;S=13}if((S|0)==13){S=0;k[$>>2]=l[aa>>0]|0|(l[aa+1>>0]|0)<<8|(l[aa+2>>0]|0)<<16|-16777216;Q=$+4|0;R=aa+d|0;S=14}if((S|0)==14){S=0;k[Q>>2]=l[R>>0]|0|(l[R+1>>0]|0)<<8|(l[R+2>>0]|0)<<16|-16777216;ba=Q+4|0;ca=R+d|0}if(!b)break;else{J=ca+a|0;i=ba+(h<<2)|0}}return}function Hc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=m[a+26>>1]|0;c=ha(d,g)|0;if(!f)return;g=(e|0)==0;j=a+80|0;a=ha(d,e)|0;n=b;b=f;f=i;while(1){b=b+-1|0;if(g){o=n;p=f}else{i=f+(a<<1)|0;q=k[j>>2]|0;r=e;s=n;t=f;while(1){r=r+-1|0;k[s>>2]=(l[q+(m[t+2>>1]|0)>>0]|0)<<8|(l[q+(m[t>>1]|0)>>0]|0)|(l[q+(m[t+4>>1]|0)>>0]|0)<<16|(l[q+(m[t+6>>1]|0)>>0]|0)<<24;if(!r)break;else{s=s+4|0;t=t+(d<<1)|0}}o=n+(e<<2)|0;p=i}if(!b)break;else{n=o+(h<<2)|0;f=p+(c<<1)|0}}return}function Ic(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;d=m[a+26>>1]|0;c=ha(d,g)|0;if(!f)return;g=(e|0)==0;j=a+80|0;n=a+76|0;a=ha(d,e)|0;o=b;b=f;f=i;while(1){b=b+-1|0;if(g){p=o;q=f}else{i=f+(a<<1)|0;r=k[j>>2]|0;s=k[n>>2]|0;t=e;u=o;v=f;while(1){t=t+-1|0;w=l[r+(m[v+6>>1]|0)>>0]|0;x=w<<8;k[u>>2]=l[s+(l[r+(m[v>>1]|0)>>0]|0|x)>>0]|0|w<<24|(l[s+(l[r+(m[v+2>>1]|0)>>0]|0|x)>>0]|0)<<8|(l[s+(l[r+(m[v+4>>1]|0)>>0]|0|x)>>0]|0)<<16;if(!t)break;else{u=u+4|0;v=v+(d<<1)|0}}p=o+(e<<2)|0;q=i}if(!b)break;else{o=p+(h<<2)|0;f=q+(c<<1)|0}}return}function Jc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=m[a+26>>1]|0;c=ha(d,g)|0;if(!f)return;g=(e|0)==0;j=a+80|0;a=ha(d,e)|0;n=b;b=f;f=i;while(1){b=b+-1|0;if(g){o=n;p=f}else{i=f+(a<<1)|0;q=k[j>>2]|0;r=e;s=n;t=f;while(1){r=r+-1|0;k[s>>2]=l[q+(m[t>>1]|0)>>0]|0|(l[q+(m[t+2>>1]|0)>>0]|0)<<8|(l[q+(m[t+4>>1]|0)>>0]|0)<<16|-16777216;if(!r)break;else{s=s+4|0;t=t+(d<<1)|0}}o=n+(e<<2)|0;p=i}if(!b)break;else{n=o+(h<<2)|0;f=p+(c<<1)|0}}return}function Kc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=r;r=r+32|0;c=b+24|0;d=b+16|0;e=b+8|0;f=b;g=a+32|0;switch(m[g>>1]|0){case 5:case 6:case 2:{if((j[a+24>>1]|0)==8){h=1;r=b;return h|0}break}case 0:case 1:break;case 3:{n=a+36|0;o=k[n>>2]|0;p=a+40|0;q=k[p>>2]|0;s=a+44|0;t=k[s>>2]|0;u=a+24|0;v=j[u>>1]|0;w=1<<(v&65535);x=t;y=q;z=w;A=o;while(1){if((z|0)<=0){B=36;break}if((m[A>>1]|0)>255){B=34;break}if((m[y>>1]|0)>255){B=34;break}if((m[x>>1]|0)>255){B=34;break}else{x=x+2|0;y=y+2|0;z=z+-1|0;A=A+2|0}}if((B|0)==34)if(v<<16>>16==31){h=1;r=b;return h|0}else{v=w;do{w=v;v=v+-1|0;A=o+(v<<1)|0;j[A>>1]=(m[A>>1]|0)>>>8;A=q+(v<<1)|0;j[A>>1]=(m[A>>1]|0)>>>8;A=t+(v<<1)|0;j[A>>1]=(m[A>>1]|0)>>>8}while((w|0)>1)}else if((B|0)==36){B=k[a>>2]|0;v=k[B+628>>2]|0;ie(v,qd(B)|0,137096,d)}d=j[u>>1]|0;if((d&65535)>=9){h=1;r=b;return h|0}u=d&65535;d=k[n>>2]|0;n=k[p>>2]|0;p=k[s>>2]|0;s=me(((8/(u>>>0)|0)<<10)+1024|0)|0;B=a+64|0;k[B>>2]=s;if(!s){v=k[a>>2]|0;t=k[v+628>>2]|0;vc(t,qd(v)|0,137120,c);h=0;r=b;return h|0}c=s;v=0;t=s+1024|0;while(1){k[c+(v<<2)>>2]=t;switch(u|0){case 1:{s=v>>>7&1;k[t>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>6&1;k[t+4>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>5&1;k[t+8>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>4&1;k[t+12>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>3&1;k[t+16>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>2&1;k[t+20>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>1&1;k[t+24>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v&1;k[t+28>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;C=t+32|0;break}case 2:{s=v>>>6&3;k[t>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>4&3;k[t+4>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v>>>2&3;k[t+8>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v&3;k[t+12>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;C=t+16|0;break}case 4:{s=v>>>4&15;k[t>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;s=v&15;k[t+4>>2]=m[d+(s<<1)>>1]&255|m[n+(s<<1)>>1]<<8&65280|m[p+(s<<1)>>1]<<16|-16777216;C=t+8|0;break}case 8:{k[t>>2]=m[d+(v<<1)>>1]&255|m[n+(v<<1)>>1]<<8&65280|m[p+(v<<1)>>1]<<16|-16777216;C=t+4|0;break}default:C=t}s=v+1|0;if((s|0)==256){h=1;break}c=k[B>>2]|0;v=s;t=C}r=b;return h|0}default:{h=1;r=b;return h|0}}C=a+24|0;t=j[C>>1]|0;v=t<<16>>16==16?255:(1<<(t&65535))+-1|0;t=v+1|0;B=me(t)|0;c=a+56|0;k[c>>2]=B;if(!B){p=k[a>>2]|0;n=k[p+628>>2]|0;vc(n,qd(p)|0,137023,f);h=0;r=b;return h|0}f=(v|0)<0;if(!(j[g>>1]|0)){if(!f?(i[B>>0]=-1,(v|0)!=0):0){p=1;do{i[(k[c>>2]|0)+p>>0]=((v-p|0)*255|0)/(v|0)|0;p=p+1|0}while((p|0)!=(t|0))}}else if(!f?(i[B>>0]=0,(v|0)!=0):0){B=1;do{i[(k[c>>2]|0)+B>>0]=(B*255|0)/(v|0)|0;B=B+1|0}while((B|0)!=(t|0))}t=j[C>>1]|0;if((t&65535)>=17){h=1;r=b;return h|0}if((m[g>>1]|0)>=2){h=1;r=b;return h|0}g=k[c>>2]|0;C=t&65535;B=8/(C>>>0)|0;v=me((B|0)==0?2048:(B<<10)+1024|0)|0;B=a+60|0;k[B>>2]=v;if(!v){f=k[a>>2]|0;a=k[f+628>>2]|0;vc(a,qd(f)|0,137065,e);h=0;r=b;return h|0}e=v+1024|0;a:do switch(t<<16>>16){case 1:{f=v;a=0;p=e;while(1){k[f+(a<<2)>>2]=p;n=l[g+(a>>7)>>0]|0;k[p>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>6&1)>>0]|0;k[p+4>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>5&1)>>0]|0;k[p+8>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>4&1)>>0]|0;k[p+12>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>3&1)>>0]|0;k[p+16>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>2&1)>>0]|0;k[p+20>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>1&1)>>0]|0;k[p+24>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a&1)>>0]|0;k[p+28>>2]=n|n<<8|n<<16|-16777216;n=a+1|0;if((n|0)==256)break a;f=k[B>>2]|0;a=n;p=p+32|0}break}case 2:{p=v;a=0;f=e;while(1){k[p+(a<<2)>>2]=f;n=l[g+(a>>6)>>0]|0;k[f>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>4&3)>>0]|0;k[f+4>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a>>>2&3)>>0]|0;k[f+8>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a&3)>>0]|0;k[f+12>>2]=n|n<<8|n<<16|-16777216;if((a|0)==255)break a;p=k[B>>2]|0;a=a+1|0;f=f+16|0}break}case 16:{k[v>>2]=e;f=l[g>>0]|0;k[e>>2]=f|f<<8|f<<16|-16777216;f=1;a=e;do{a=a+4|0;k[(k[B>>2]|0)+(f<<2)>>2]=a;p=l[g+f>>0]|0;k[a>>2]=p|p<<8|p<<16|-16777216;f=f+1|0}while((f|0)!=256);break}default:{f=v;a=0;p=e;while(1){k[f+(a<<2)>>2]=p;switch(C|0){case 8:case 16:{n=l[g+a>>0]|0;k[p>>2]=n|n<<8|n<<16|-16777216;D=p+4|0;break}case 4:{n=l[g+(a>>4)>>0]|0;k[p>>2]=n|n<<8|n<<16|-16777216;n=l[g+(a&15)>>0]|0;k[p+4>>2]=n|n<<8|n<<16|-16777216;D=p+8|0;break}default:D=p}n=a+1|0;if((n|0)>=256)break a;f=k[B>>2]|0;a=n;p=D}}}while(0);ne(k[c>>2]|0);k[c>>2]=0;h=1;r=b;return h|0}function Lc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;d=m[a+26>>1]|0;a=ha(d,g)|0;if(!f)return;g=e>>>0>7;c=d+3|0;j=d+1|0;n=d+2|0;o=d<<1;p=o+3|0;q=o|1;r=o+2|0;s=d*3|0;t=s+3|0;u=s+1|0;v=s+2|0;w=d<<2;x=w|3;y=w|1;z=w|2;A=d*5|0;B=A+3|0;C=A+1|0;D=A+2|0;E=d*6|0;F=E+3|0;G=E|1;H=E+2|0;I=d*7|0;J=I+3|0;K=I+1|0;L=I+2|0;M=d<<3;N=e+-8|0;O=N&-8;P=N-O|0;N=O+8|0;O=ha(N,d)|0;Q=i;i=b;b=f;while(1){b=b+-1|0;if(g){f=Q+O|0;R=Q;S=i;T=e;while(1){U=(l[R+3>>0]|0)^255;V=((ha((l[R>>0]|0)^255,U)|0)>>>0)/255|0;W=((ha((l[R+1>>0]|0)^255,U)|0)>>>0)/255|0;X=V|W<<8|(((ha((l[R+2>>0]|0)^255,U)|0)>>>0)/255|0)<<16|-16777216;k[S>>2]=X;X=(l[R+c>>0]|0)^255;U=((ha((l[R+d>>0]|0)^255,X)|0)>>>0)/255|0;W=((ha((l[R+j>>0]|0)^255,X)|0)>>>0)/255|0;V=U|W<<8|(((ha((l[R+n>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k[S+4>>2]=V;V=(l[R+p>>0]|0)^255;X=((ha((l[R+o>>0]|0)^255,V)|0)>>>0)/255|0;W=((ha((l[R+q>>0]|0)^255,V)|0)>>>0)/255|0;U=X|W<<8|(((ha((l[R+r>>0]|0)^255,V)|0)>>>0)/255|0)<<16|-16777216;k[S+8>>2]=U;U=(l[R+t>>0]|0)^255;V=((ha((l[R+s>>0]|0)^255,U)|0)>>>0)/255|0;W=((ha((l[R+u>>0]|0)^255,U)|0)>>>0)/255|0;X=V|W<<8|(((ha((l[R+v>>0]|0)^255,U)|0)>>>0)/255|0)<<16|-16777216;k[S+12>>2]=X;X=(l[R+x>>0]|0)^255;U=((ha((l[R+w>>0]|0)^255,X)|0)>>>0)/255|0;W=((ha((l[R+y>>0]|0)^255,X)|0)>>>0)/255|0;V=U|W<<8|(((ha((l[R+z>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k[S+16>>2]=V;V=(l[R+B>>0]|0)^255;X=((ha((l[R+A>>0]|0)^255,V)|0)>>>0)/255|0;W=((ha((l[R+C>>0]|0)^255,V)|0)>>>0)/255|0;U=X|W<<8|(((ha((l[R+D>>0]|0)^255,V)|0)>>>0)/255|0)<<16|-16777216;k[S+20>>2]=U;U=(l[R+F>>0]|0)^255;V=((ha((l[R+E>>0]|0)^255,U)|0)>>>0)/255|0;W=((ha((l[R+G>>0]|0)^255,U)|0)>>>0)/255|0;X=V|W<<8|(((ha((l[R+H>>0]|0)^255,U)|0)>>>0)/255|0)<<16|-16777216;k[S+24>>2]=X;X=(l[R+J>>0]|0)^255;U=((ha((l[R+I>>0]|0)^255,X)|0)>>>0)/255|0;W=((ha((l[R+K>>0]|0)^255,X)|0)>>>0)/255|0;V=U|W<<8|(((ha((l[R+L>>0]|0)^255,X)|0)>>>0)/255|0)<<16|-16777216;k[S+28>>2]=V;T=T+-8|0;if(T>>>0<=7)break;else{R=R+M|0;S=S+32|0}}Y=i+(N<<2)|0;Z=f;_=P}else{Y=i;Z=Q;_=e}switch(_|0){case 1:{$=Y;aa=Z;ba=14;break}case 7:{S=(l[Z+3>>0]|0)^255;R=((ha((l[Z>>0]|0)^255,S)|0)>>>0)/255|0;T=R|(((ha((l[Z+1>>0]|0)^255,S)|0)>>>0)/255|0)<<8|(((ha((l[Z+2>>0]|0)^255,S)|0)>>>0)/255|0)<<16|-16777216;k[Y>>2]=T;ca=Y+4|0;da=Z+d|0;ba=9;break}case 6:{ca=Y;da=Z;ba=9;break}case 5:{ea=Y;fa=Z;ba=10;break}case 4:{ga=Y;ia=Z;ba=11;break}case 3:{ja=Y;ka=Z;ba=12;break}case 2:{la=Y;ma=Z;ba=13;break}default:{na=Y;oa=Z}}if((ba|0)==9){ba=0;T=(l[da+3>>0]|0)^255;S=((ha((l[da>>0]|0)^255,T)|0)>>>0)/255|0;R=((ha((l[da+1>>0]|0)^255,T)|0)>>>0)/255|0;V=S|R<<8|(((ha((l[da+2>>0]|0)^255,T)|0)>>>0)/255|0)<<16|-16777216;k[ca>>2]=V;ea=ca+4|0;fa=da+d|0;ba=10}if((ba|0)==10){ba=0;V=(l[fa+3>>0]|0)^255;T=((ha((l[fa>>0]|0)^255,V)|0)>>>0)/255|0;R=((ha((l[fa+1>>0]|0)^255,V)|0)>>>0)/255|0;S=T|R<<8|(((ha((l[fa+2>>0]|0)^255,V)|0)>>>0)/255|0)<<16|-16777216;k[ea>>2]=S;ga=ea+4|0;ia=fa+d|0;ba=11}if((ba|0)==11){ba=0;S=(l[ia+3>>0]|0)^255;V=((ha((l[ia>>0]|0)^255,S)|0)>>>0)/255|0;R=((ha((l[ia+1>>0]|0)^255,S)|0)>>>0)/255|0;T=V|R<<8|(((ha((l[ia+2>>0]|0)^255,S)|0)>>>0)/255|0)<<16|-16777216;k[ga>>2]=T;ja=ga+4|0;ka=ia+d|0;ba=12}if((ba|0)==12){ba=0;T=(l[ka+3>>0]|0)^255;S=((ha((l[ka>>0]|0)^255,T)|0)>>>0)/255|0;R=((ha((l[ka+1>>0]|0)^255,T)|0)>>>0)/255|0;V=S|R<<8|(((ha((l[ka+2>>0]|0)^255,T)|0)>>>0)/255|0)<<16|-16777216;k[ja>>2]=V;la=ja+4|0;ma=ka+d|0;ba=13}if((ba|0)==13){ba=0;V=(l[ma+3>>0]|0)^255;T=((ha((l[ma>>0]|0)^255,V)|0)>>>0)/255|0;R=((ha((l[ma+1>>0]|0)^255,V)|0)>>>0)/255|0;S=T|R<<8|(((ha((l[ma+2>>0]|0)^255,V)|0)>>>0)/255|0)<<16|-16777216;k[la>>2]=S;$=la+4|0;aa=ma+d|0;ba=14}if((ba|0)==14){ba=0;S=(l[aa+3>>0]|0)^255;V=((ha((l[aa>>0]|0)^255,S)|0)>>>0)/255|0;R=((ha((l[aa+1>>0]|0)^255,S)|0)>>>0)/255|0;T=V|R<<8|(((ha((l[aa+2>>0]|0)^255,S)|0)>>>0)/255|0)<<16|-16777216;k[$>>2]=T;na=$+4|0;oa=aa+d|0}if(!b)break;else{Q=oa+a|0;i=na+(h<<2)|0}}return}function Mc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=m[a+26>>1]|0;c=k[a+56>>2]|0;a=ha(d,g)|0;if(!f)return;g=(e|0)==0;j=ha(d,e)|0;n=b;b=i;i=f;while(1){i=i+-1|0;if(g){o=n;p=b}else{f=b+j|0;q=e;r=b;s=n;while(1){q=q+-1|0;t=(l[r+3>>0]|0)^255;u=((ha((l[r>>0]|0)^255,t)|0)>>>0)/255|0;v=((ha((l[r+1>>0]|0)^255,t)|0)>>>0)/255|0;w=((ha((l[r+2>>0]|0)^255,t)|0)>>>0)/255|0;k[s>>2]=l[c+u>>0]|0|(l[c+v>>0]|0)<<8|(l[c+w>>0]|0)<<16|-16777216;if(!q)break;else{r=r+d|0;s=s+4|0}}o=n+(e<<2)|0;p=f}if(!i)break;else{n=o+(h<<2)|0;b=p+a|0}}return}function Nc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0;d=k[a+64>>2]|0;c=m[a+26>>1]|0;if(!f)return;a=(e|0)==0;j=ha(c,e)|0;n=b;b=i;i=f;while(1){i=i+-1|0;if(a){o=n;p=b}else{f=b+j|0;q=e;r=b;s=n;while(1){q=q+-1|0;k[s>>2]=k[k[d+((l[r>>0]|0)<<2)>>2]>>2];if(!q)break;else{r=r+c|0;s=s+4|0}}o=n+(e<<2)|0;p=f}if(!i)break;else{n=o+(h<<2)|0;b=p+g|0}}return}function Oc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=k[a+64>>2]|0;a=(g|0)/2|0;if(!f)return;g=e>>>0>1;c=e+-2|0;j=c>>>1;m=j<<1;n=c-m|0;c=m+2|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];q=q+-2|0;if(q>>>0<=1)break;else{o=o+1|0;p=p+8|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}if(!u){v=s;w=t}else{k[s>>2]=k[k[d+((l[t>>0]|0)<<2)>>2]>>2];v=s+4|0;w=t+1|0}if(!i)break;else{j=v+(h<<2)|0;b=w+a|0}}return}function Pc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;d=k[a+64>>2]|0;a=(g|0)/4|0;if(!f)return;g=e>>>0>3;c=e+-4|0;j=c>>>2;m=j<<2;n=c-m|0;c=m+4|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];k[p+8>>2]=k[r+8>>2];k[p+12>>2]=k[r+12>>2];q=q+-4|0;if(q>>>0<=3)break;else{o=o+1|0;p=p+16|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}a:do if(!u){v=t;w=s}else{p=t+1|0;o=k[d+((l[t>>0]|0)<<2)>>2]|0;switch(u|0){case 3:{k[s>>2]=k[o>>2];x=s+4|0;y=o+4|0;z=10;break}case 2:{x=s;y=o;z=10;break}case 1:{A=s;B=o;break}default:{v=p;w=s;break a}}if((z|0)==10){z=0;k[x>>2]=k[y>>2];A=x+4|0;B=y+4|0}k[A>>2]=k[B>>2];v=p;w=A+4|0}while(0);if(!i)break;else{j=w+(h<<2)|0;b=v+a|0}}return}function Qc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=k[a+64>>2]|0;a=(g|0)/8|0;if(!f)return;g=e>>>0>7;c=e+-8|0;j=c>>>3;m=j<<3;n=c-m|0;c=m+8|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];k[p+8>>2]=k[r+8>>2];k[p+12>>2]=k[r+12>>2];k[p+16>>2]=k[r+16>>2];k[p+20>>2]=k[r+20>>2];k[p+24>>2]=k[r+24>>2];k[p+28>>2]=k[r+28>>2];q=q+-8|0;if(q>>>0<=7)break;else{o=o+1|0;p=p+32|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}a:do if(!u){v=t;w=s}else{p=t+1|0;o=k[d+((l[t>>0]|0)<<2)>>2]|0;switch(u|0){case 7:{k[s>>2]=k[o>>2];x=s+4|0;y=o+4|0;z=10;break}case 6:{x=s;y=o;z=10;break}case 5:{A=s;B=o;z=11;break}case 4:{C=s;D=o;z=12;break}case 3:{E=s;F=o;z=13;break}case 2:{G=s;H=o;z=14;break}case 1:{I=s;J=o;break}default:{v=p;w=s;break a}}if((z|0)==10){z=0;k[x>>2]=k[y>>2];A=x+4|0;B=y+4|0;z=11}if((z|0)==11){z=0;k[A>>2]=k[B>>2];C=A+4|0;D=B+4|0;z=12}if((z|0)==12){z=0;k[C>>2]=k[D>>2];E=C+4|0;F=D+4|0;z=13}if((z|0)==13){z=0;k[E>>2]=k[F>>2];G=E+4|0;H=F+4|0;z=14}if((z|0)==14){z=0;k[G>>2]=k[H>>2];I=G+4|0;J=H+4|0}k[I>>2]=k[J>>2];v=p;w=I+4|0}while(0);if(!i)break;else{j=w+(h<<2)|0;b=v+a|0}}return}function Rc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,l=0,n=0,o=0,p=0,q=0,r=0;d=m[a+26>>1]|0;c=k[a+60>>2]|0;if(!f)return;a=(e|0)==0;j=(ha(d,e)|0)<<1;l=b;b=i;i=f;while(1){i=i+-1|0;if(a){n=l;o=b}else{f=b+j|0;p=e;q=l;r=b;while(1){p=p+-1|0;k[q>>2]=k[k[c+((m[r>>1]|0)>>>8<<2)>>2]>>2];if(!p)break;else{q=q+4|0;r=r+(d<<1)|0}}n=l+(e<<2)|0;o=f}if(!i)break;else{l=n+(h<<2)|0;b=o+g|0}}return}function Sc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0;d=m[a+26>>1]|0;c=k[a+60>>2]|0;if(!f)return;a=(e|0)==0;j=ha(d,e)|0;n=b;b=i;i=f;while(1){i=i+-1|0;if(a){o=n;p=b}else{f=b+j|0;q=e;r=b;s=n;while(1){q=q+-1|0;k[s>>2]=((l[r+1>>0]|0)<<24|16777215)&k[k[c+((l[r>>0]|0)<<2)>>2]>>2];if(!q)break;else{r=r+d|0;s=s+4|0}}o=n+(e<<2)|0;p=f}if(!i)break;else{n=o+(h<<2)|0;b=p+g|0}}return}function Tc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,n=0,o=0,p=0,q=0,r=0,s=0;d=m[a+26>>1]|0;c=k[a+60>>2]|0;if(!f)return;a=(e|0)==0;j=ha(d,e)|0;n=b;b=i;i=f;while(1){i=i+-1|0;if(a){o=n;p=b}else{f=b+j|0;q=e;r=b;s=n;while(1){q=q+-1|0;k[s>>2]=k[k[c+((l[r>>0]|0)<<2)>>2]>>2];if(!q)break;else{r=r+d|0;s=s+4|0}}o=n+(e<<2)|0;p=f}if(!i)break;else{n=o+(h<<2)|0;b=p+g|0}}return}function Uc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;d=k[a+60>>2]|0;a=(g|0)/2|0;if(!f)return;g=e>>>0>1;c=e+-2|0;j=c>>>1;m=j<<1;n=c-m|0;c=m+2|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];q=q+-2|0;if(q>>>0<=1)break;else{o=o+1|0;p=p+8|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}if(!u){v=s;w=t}else{k[s>>2]=k[k[d+((l[t>>0]|0)<<2)>>2]>>2];v=s+4|0;w=t+1|0}if(!i)break;else{j=v+(h<<2)|0;b=w+a|0}}return}function Vc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;d=k[a+60>>2]|0;a=(g|0)/4|0;if(!f)return;g=e>>>0>3;c=e+-4|0;j=c>>>2;m=j<<2;n=c-m|0;c=m+4|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];k[p+8>>2]=k[r+8>>2];k[p+12>>2]=k[r+12>>2];q=q+-4|0;if(q>>>0<=3)break;else{o=o+1|0;p=p+16|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}a:do if(!u){v=t;w=s}else{p=t+1|0;o=k[d+((l[t>>0]|0)<<2)>>2]|0;switch(u|0){case 3:{k[s>>2]=k[o>>2];x=s+4|0;y=o+4|0;z=10;break}case 2:{x=s;y=o;z=10;break}case 1:{A=s;B=o;break}default:{v=p;w=s;break a}}if((z|0)==10){z=0;k[x>>2]=k[y>>2];A=x+4|0;B=y+4|0}k[A>>2]=k[B>>2];v=p;w=A+4|0}while(0);if(!i)break;else{j=w+(h<<2)|0;b=v+a|0}}return}function Wc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=k[a+60>>2]|0;a=(g|0)/8|0;if(!f)return;g=e>>>0>7;c=e+-8|0;j=c>>>3;m=j<<3;n=c-m|0;c=m+8|0;m=j+1|0;j=b;b=i;i=f;while(1){i=i+-1|0;if(g){f=j+(c<<2)|0;o=b;p=j;q=e;while(1){r=k[d+((l[o>>0]|0)<<2)>>2]|0;k[p>>2]=k[r>>2];k[p+4>>2]=k[r+4>>2];k[p+8>>2]=k[r+8>>2];k[p+12>>2]=k[r+12>>2];k[p+16>>2]=k[r+16>>2];k[p+20>>2]=k[r+20>>2];k[p+24>>2]=k[r+24>>2];k[p+28>>2]=k[r+28>>2];q=q+-8|0;if(q>>>0<=7)break;else{o=o+1|0;p=p+32|0}}s=f;t=b+m|0;u=n}else{s=j;t=b;u=e}a:do if(!u){v=t;w=s}else{p=t+1|0;o=k[d+((l[t>>0]|0)<<2)>>2]|0;switch(u|0){case 7:{k[s>>2]=k[o>>2];x=s+4|0;y=o+4|0;z=10;break}case 6:{x=s;y=o;z=10;break}case 5:{A=s;B=o;z=11;break}case 4:{C=s;D=o;z=12;break}case 3:{E=s;F=o;z=13;break}case 2:{G=s;H=o;z=14;break}case 1:{I=s;J=o;break}default:{v=p;w=s;break a}}if((z|0)==10){z=0;k[x>>2]=k[y>>2];A=x+4|0;B=y+4|0;z=11}if((z|0)==11){z=0;k[A>>2]=k[B>>2];C=A+4|0;D=B+4|0;z=12}if((z|0)==12){z=0;k[C>>2]=k[D>>2];E=C+4|0;F=D+4|0;z=13}if((z|0)==13){z=0;k[E>>2]=k[F>>2];G=E+4|0;H=F+4|0;z=14}if((z|0)==14){z=0;k[G>>2]=k[H>>2];I=G+4|0;J=H+4|0}k[I>>2]=k[J>>2];v=p;w=I+4|0}while(0);if(!i)break;else{j=w+(h<<2)|0;b=v+a|0}}return}function Xc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;f=b+24|0;g=b+20|0;h=a+68|0;if((k[h>>2]|0)==0?(i=me(6168)|0,k[h>>2]=i,(i|0)==0):0){vc(k[(k[a>>2]|0)+628>>2]|0,136962,136982,e);j=0;r=b;return j|0}e=k[a>>2]|0;k[d>>2]=f;Ge(e,529,d)|0;d=k[a>>2]|0;k[c>>2]=g;Ge(d,532,c)|0;j=(Le(k[h>>2]|0,k[f>>2]|0,k[g>>2]|0)|0)>>>31^1;r=b;return j|0}function Yc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0;d=r;r=r+384|0;c=d+380|0;j=d+376|0;m=d+372|0;n=d+368|0;o=d+364|0;p=d+360|0;q=d+356|0;s=d+352|0;t=d+348|0;u=d+344|0;v=d+340|0;w=d+336|0;x=d+332|0;y=d+328|0;z=d+324|0;A=d+320|0;B=d+316|0;C=d+312|0;D=d+308|0;E=d+304|0;F=d+300|0;G=d+296|0;H=d+292|0;I=d+288|0;J=d+284|0;K=d+280|0;L=d+276|0;M=d+272|0;N=d+268|0;O=d+264|0;P=d+260|0;Q=d+256|0;R=d+252|0;S=d+248|0;T=d+244|0;U=d+240|0;V=d+236|0;W=d+232|0;X=d+228|0;Y=d+224|0;Z=d+220|0;_=d+216|0;$=d+212|0;aa=d+208|0;ba=d+204|0;ca=d+200|0;da=d+196|0;ea=d+192|0;fa=d+188|0;ga=d+184|0;ha=d+180|0;ia=d+176|0;ja=d+172|0;ka=d+168|0;la=d+164|0;ma=d+160|0;na=d+156|0;oa=d+152|0;pa=d+148|0;qa=d+144|0;ra=d+140|0;sa=d+136|0;ta=d+132|0;ua=d+128|0;va=d+124|0;wa=d+120|0;xa=d+116|0;ya=d+112|0;za=d+108|0;Aa=d+104|0;Ba=d+100|0;Ca=d+96|0;Da=d+92|0;Ea=d+88|0;Fa=d+84|0;Ga=d+80|0;Ha=d+76|0;Ia=d+72|0;Ja=d+68|0;Ka=d+64|0;La=d+60|0;Ma=d+56|0;Na=d+52|0;Oa=d+48|0;Pa=d+44|0;Qa=d+40|0;Ra=d+36|0;Sa=d+32|0;Ta=d+28|0;Ua=d+24|0;Va=d+20|0;Wa=d+16|0;Xa=d+12|0;Ya=d+8|0;Za=d+4|0;_a=d;$a=h+e|0;ab=b+($a<<2)|0;bb=b+($a<<1<<2)|0;cb=b+($a*3<<2)|0;$a=(h<<2)+(e*3|0)|0;h=(g*18|0)/4|0;if(!((f|e)&3)){if(f>>>0<=3){r=d;return}g=e>>>2;db=a+68|0;eb=g<<2;fb=eb+$a|0;gb=eb+$a|0;hb=eb+$a|0;ib=eb+$a|0;eb=(g*18|0)+h|0;jb=b;kb=f;lb=i;mb=ab;nb=bb;ob=cb;while(1){pb=g;qb=jb;rb=lb;sb=mb;tb=nb;ub=ob;while(1){vb=l[rb+16>>0]|0;wb=l[rb+17>>0]|0;Ke(k[db>>2]|0,l[rb>>0]|0,vb,wb,c,j,m);k[qb>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+1>>0]|0,vb,wb,n,o,p);k[qb+4>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+2>>0]|0,vb,wb,q,s,t);k[qb+8>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+3>>0]|0,vb,wb,u,v,w);k[qb+12>>2]=k[u>>2]|k[v>>2]<<8|k[w>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+4>>0]|0,vb,wb,x,y,z);k[sb>>2]=k[x>>2]|k[y>>2]<<8|k[z>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+5>>0]|0,vb,wb,A,B,C);k[sb+4>>2]=k[A>>2]|k[B>>2]<<8|k[C>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+6>>0]|0,vb,wb,D,E,F);k[sb+8>>2]=k[D>>2]|k[E>>2]<<8|k[F>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+7>>0]|0,vb,wb,G,H,I);k[sb+12>>2]=k[G>>2]|k[H>>2]<<8|k[I>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+8>>0]|0,vb,wb,J,K,L);k[tb>>2]=k[J>>2]|k[K>>2]<<8|k[L>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+9>>0]|0,vb,wb,M,N,O);k[tb+4>>2]=k[M>>2]|k[N>>2]<<8|k[O>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+10>>0]|0,vb,wb,P,Q,R);k[tb+8>>2]=k[P>>2]|k[Q>>2]<<8|k[R>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+11>>0]|0,vb,wb,S,T,U);k[tb+12>>2]=k[S>>2]|k[T>>2]<<8|k[U>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+12>>0]|0,vb,wb,V,W,X);k[ub>>2]=k[V>>2]|k[W>>2]<<8|k[X>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+13>>0]|0,vb,wb,Y,Z,_);k[ub+4>>2]=k[Y>>2]|k[Z>>2]<<8|k[_>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+14>>0]|0,vb,wb,$,aa,ba);k[ub+8>>2]=k[$>>2]|k[aa>>2]<<8|k[ba>>2]<<16|-16777216;Ke(k[db>>2]|0,l[rb+15>>0]|0,vb,wb,ca,da,ea);k[ub+12>>2]=k[ca>>2]|k[da>>2]<<8|k[ea>>2]<<16|-16777216;pb=pb+-1|0;if(!pb)break;else{qb=qb+16|0;rb=rb+18|0;sb=sb+16|0;tb=tb+16|0;ub=ub+16|0}}kb=kb+-4|0;if(kb>>>0<=3)break;else{jb=jb+(fb<<2)|0;lb=lb+eb|0;mb=mb+(gb<<2)|0;nb=nb+(hb<<2)|0;ob=ob+(ib<<2)|0}}r=d;return}if(!f){r=d;return}ib=(e|0)==0;ob=a+68|0;a=f;f=b;b=i;i=ab;ab=bb;bb=cb;while(1){a:do if(ib){xb=f;yb=b;zb=i;Ab=ab;Bb=bb}else{cb=e;hb=f;nb=b;gb=i;mb=ab;eb=bb;while(1){lb=l[nb+16>>0]|0;fb=l[nb+17>>0]|0;switch(cb|0){case 3:{Cb=16;break}case 2:{Cb=21;break}case 1:break;default:{switch(a|0){case 3:{Cb=13;break}case 2:{Cb=14;break}case 1:break;default:{Ke(k[ob>>2]|0,l[nb+15>>0]|0,lb,fb,fa,ga,ha);k[eb+12>>2]=k[fa>>2]|k[ga>>2]<<8|k[ha>>2]<<16|-16777216;Cb=13}}if((Cb|0)==13){Cb=0;Ke(k[ob>>2]|0,l[nb+11>>0]|0,lb,fb,ia,ja,ka);k[mb+12>>2]=k[ia>>2]|k[ja>>2]<<8|k[ka>>2]<<16|-16777216;Cb=14}if((Cb|0)==14){Cb=0;Ke(k[ob>>2]|0,l[nb+7>>0]|0,lb,fb,la,ma,na);k[gb+12>>2]=k[la>>2]|k[ma>>2]<<8|k[na>>2]<<16|-16777216}Ke(k[ob>>2]|0,l[nb+3>>0]|0,lb,fb,oa,pa,qa);k[hb+12>>2]=k[oa>>2]|k[pa>>2]<<8|k[qa>>2]<<16|-16777216;Cb=16}}if((Cb|0)==16){Cb=0;switch(a|0){case 3:{Cb=18;break}case 2:{Cb=19;break}case 1:break;default:{Ke(k[ob>>2]|0,l[nb+14>>0]|0,lb,fb,ra,sa,ta);k[eb+8>>2]=k[ra>>2]|k[sa>>2]<<8|k[ta>>2]<<16|-16777216;Cb=18}}if((Cb|0)==18){Cb=0;Ke(k[ob>>2]|0,l[nb+10>>0]|0,lb,fb,ua,va,wa);k[mb+8>>2]=k[ua>>2]|k[va>>2]<<8|k[wa>>2]<<16|-16777216;Cb=19}if((Cb|0)==19){Cb=0;Ke(k[ob>>2]|0,l[nb+6>>0]|0,lb,fb,xa,ya,za);k[gb+8>>2]=k[xa>>2]|k[ya>>2]<<8|k[za>>2]<<16|-16777216}Ke(k[ob>>2]|0,l[nb+2>>0]|0,lb,fb,Aa,Ba,Ca);k[hb+8>>2]=k[Aa>>2]|k[Ba>>2]<<8|k[Ca>>2]<<16|-16777216;Cb=21}if((Cb|0)==21){Cb=0;switch(a|0){case 3:{Cb=23;break}case 2:{Cb=24;break}case 1:break;default:{Ke(k[ob>>2]|0,l[nb+13>>0]|0,lb,fb,Da,Ea,Fa);k[eb+4>>2]=k[Da>>2]|k[Ea>>2]<<8|k[Fa>>2]<<16|-16777216;Cb=23}}if((Cb|0)==23){Cb=0;Ke(k[ob>>2]|0,l[nb+9>>0]|0,lb,fb,Ga,Ha,Ia);k[mb+4>>2]=k[Ga>>2]|k[Ha>>2]<<8|k[Ia>>2]<<16|-16777216;Cb=24}if((Cb|0)==24){Cb=0;Ke(k[ob>>2]|0,l[nb+5>>0]|0,lb,fb,Ja,Ka,La);k[gb+4>>2]=k[Ja>>2]|k[Ka>>2]<<8|k[La>>2]<<16|-16777216}Ke(k[ob>>2]|0,l[nb+1>>0]|0,lb,fb,Ma,Na,Oa);k[hb+4>>2]=k[Ma>>2]|k[Na>>2]<<8|k[Oa>>2]<<16|-16777216}switch(a|0){case 3:{Cb=28;break}case 2:{Cb=29;break}case 1:break;default:{Ke(k[ob>>2]|0,l[nb+12>>0]|0,lb,fb,Pa,Qa,Ra);k[eb>>2]=k[Pa>>2]|k[Qa>>2]<<8|k[Ra>>2]<<16|-16777216;Cb=28}}if((Cb|0)==28){Cb=0;Ke(k[ob>>2]|0,l[nb+8>>0]|0,lb,fb,Sa,Ta,Ua);k[mb>>2]=k[Sa>>2]|k[Ta>>2]<<8|k[Ua>>2]<<16|-16777216;Cb=29}if((Cb|0)==29){Cb=0;Ke(k[ob>>2]|0,l[nb+4>>0]|0,lb,fb,Va,Wa,Xa);k[gb>>2]=k[Va>>2]|k[Wa>>2]<<8|k[Xa>>2]<<16|-16777216}Ke(k[ob>>2]|0,l[nb>>0]|0,lb,fb,Ya,Za,_a);k[hb>>2]=k[Ya>>2]|k[Za>>2]<<8|k[_a>>2]<<16|-16777216;if(cb>>>0<4){Db=cb;Eb=hb;Fb=nb;Gb=gb;Hb=mb;Ib=eb;break}fb=hb+16|0;lb=gb+16|0;jb=mb+16|0;kb=eb+16|0;cb=cb+-4|0;ea=nb+18|0;if(!cb){xb=fb;yb=ea;zb=lb;Ab=jb;Bb=kb;break a}else{hb=fb;nb=ea;gb=lb;mb=jb;eb=kb}}xb=Eb+(Db<<2)|0;yb=Fb+18|0;zb=Gb+(Db<<2)|0;Ab=Hb+(Db<<2)|0;Bb=Ib+(Db<<2)|0}while(0);if(a>>>0<5){Cb=35;break}a=a+-4|0;if(!a){Cb=35;break}else{f=xb+($a<<2)|0;b=yb+h|0;i=zb+($a<<2)|0;ab=Ab+($a<<2)|0;bb=Bb+($a<<2)|0}}if((Cb|0)==35){r=d;return}}function Zc(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;d=r;r=r+192|0;c=d+188|0;j=d+184|0;m=d+180|0;n=d+176|0;o=d+172|0;p=d+168|0;q=d+164|0;s=d+160|0;t=d+156|0;u=d+152|0;v=d+148|0;w=d+144|0;x=d+140|0;y=d+136|0;z=d+132|0;A=d+128|0;B=d+124|0;C=d+120|0;D=d+116|0;E=d+112|0;F=d+108|0;G=d+104|0;H=d+100|0;I=d+96|0;J=d+92|0;K=d+88|0;L=d+84|0;M=d+80|0;N=d+76|0;O=d+72|0;P=d+68|0;Q=d+64|0;R=d+60|0;S=d+56|0;T=d+52|0;U=d+48|0;V=d+44|0;W=d+40|0;X=d+36|0;Y=d+32|0;Z=d+28|0;_=d+24|0;$=d+20|0;aa=d+16|0;ba=d+12|0;ca=d+8|0;da=d+4|0;ea=d;fa=b+(h+e<<2)|0;ga=(h<<1)+e|0;h=(g*10|0)/4|0;if(!(f&1|e&3)){if(f>>>0<=1){r=d;return}g=e>>>2;ha=a+68|0;ia=g<<2;ja=ia+ga|0;ka=ia+ga|0;ia=(g*10|0)+h|0;la=b;ma=f;na=i;oa=fa;while(1){pa=g;qa=la;ra=na;sa=oa;while(1){ta=l[ra+8>>0]|0;ua=l[ra+9>>0]|0;Ke(k[ha>>2]|0,l[ra>>0]|0,ta,ua,c,j,m);k[qa>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+1>>0]|0,ta,ua,n,o,p);k[qa+4>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+2>>0]|0,ta,ua,q,s,t);k[qa+8>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+3>>0]|0,ta,ua,u,v,w);k[qa+12>>2]=k[u>>2]|k[v>>2]<<8|k[w>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+4>>0]|0,ta,ua,x,y,z);k[sa>>2]=k[x>>2]|k[y>>2]<<8|k[z>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+5>>0]|0,ta,ua,A,B,C);k[sa+4>>2]=k[A>>2]|k[B>>2]<<8|k[C>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+6>>0]|0,ta,ua,D,E,F);k[sa+8>>2]=k[D>>2]|k[E>>2]<<8|k[F>>2]<<16|-16777216;Ke(k[ha>>2]|0,l[ra+7>>0]|0,ta,ua,G,H,I);k[sa+12>>2]=k[G>>2]|k[H>>2]<<8|k[I>>2]<<16|-16777216;pa=pa+-1|0;if(!pa)break;else{qa=qa+16|0;ra=ra+10|0;sa=sa+16|0}}ma=ma+-2|0;if(ma>>>0<=1)break;else{la=la+(ja<<2)|0;na=na+ia|0;oa=oa+(ka<<2)|0}}r=d;return}if(!f){r=d;return}ka=(e|0)==0;oa=a+68|0;a=f;f=i;i=b;b=fa;while(1){a:do if(ka){va=i;wa=f;xa=b}else{fa=(a|0)==1;ia=e;na=f;ja=i;la=b;while(1){ma=l[na+8>>0]|0;I=l[na+9>>0]|0;switch(ia|0){case 3:{ya=15;break}case 2:{ya=18;break}case 1:break;default:{if(!fa){Ke(k[oa>>2]|0,l[na+7>>0]|0,ma,I,J,K,L);k[la+12>>2]=k[J>>2]|k[K>>2]<<8|k[L>>2]<<16|-16777216}Ke(k[oa>>2]|0,l[na+3>>0]|0,ma,I,M,N,O);k[ja+12>>2]=k[M>>2]|k[N>>2]<<8|k[O>>2]<<16|-16777216;ya=15}}if((ya|0)==15){ya=0;if(!fa){Ke(k[oa>>2]|0,l[na+6>>0]|0,ma,I,P,Q,R);k[la+8>>2]=k[P>>2]|k[Q>>2]<<8|k[R>>2]<<16|-16777216}Ke(k[oa>>2]|0,l[na+2>>0]|0,ma,I,S,T,U);k[ja+8>>2]=k[S>>2]|k[T>>2]<<8|k[U>>2]<<16|-16777216;ya=18}if((ya|0)==18){ya=0;if(!fa){Ke(k[oa>>2]|0,l[na+5>>0]|0,ma,I,V,W,X);k[la+4>>2]=k[V>>2]|k[W>>2]<<8|k[X>>2]<<16|-16777216}Ke(k[oa>>2]|0,l[na+1>>0]|0,ma,I,Y,Z,_);k[ja+4>>2]=k[Y>>2]|k[Z>>2]<<8|k[_>>2]<<16|-16777216}if(!fa){Ke(k[oa>>2]|0,l[na+4>>0]|0,ma,I,$,aa,ba);k[la>>2]=k[$>>2]|k[aa>>2]<<8|k[ba>>2]<<16|-16777216}Ke(k[oa>>2]|0,l[na>>0]|0,ma,I,ca,da,ea);k[ja>>2]=k[ca>>2]|k[da>>2]<<8|k[ea>>2]<<16|-16777216;I=ia>>>0<4;ma=I?la+(ia<<2)|0:la+16|0;H=I?ja+(ia<<2)|0:ja+16|0;G=na+10|0;ia=I?0:ia+-4|0;if(!ia){va=H;wa=G;xa=ma;break a}else{na=G;ja=H;la=ma}}}while(0);if(a>>>0<3){ya=26;break}a=a+-2|0;if(!a){ya=26;break}else{f=wa+h|0;i=va+(ga<<2)|0;b=xa+(ga<<2)|0}}if((ya|0)==26){r=d;return}}function _c(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;d=r;r=r+96|0;c=d+80|0;j=d+76|0;m=d+72|0;n=d+68|0;o=d+64|0;p=d+60|0;q=d+56|0;s=d+52|0;t=d+48|0;u=d+44|0;v=d+40|0;w=d+36|0;x=d+32|0;y=d+28|0;z=d+24|0;A=d+20|0;B=d+16|0;C=d+12|0;D=d+8|0;E=d+4|0;F=d;G=e>>>2;H=(G|0)==0;I=e&3;e=(I|0)==0;J=a+68|0;a=G*6|0;K=G<<2;L=b;b=f;f=i;while(1){if(H){M=L;N=f}else{i=f+a|0;O=G;P=L;Q=f;while(1){R=l[Q+4>>0]|0;S=l[Q+5>>0]|0;Ke(k[J>>2]|0,l[Q>>0]|0,R,S,c,j,m);k[P>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[J>>2]|0,l[Q+1>>0]|0,R,S,n,o,p);k[P+4>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;Ke(k[J>>2]|0,l[Q+2>>0]|0,R,S,q,s,t);k[P+8>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;Ke(k[J>>2]|0,l[Q+3>>0]|0,R,S,u,v,w);k[P+12>>2]=k[u>>2]|k[v>>2]<<8|k[w>>2]<<16|-16777216;O=O+-1|0;if(!O)break;else{P=P+16|0;Q=Q+6|0}}M=L+(K<<2)|0;N=i}if(e){T=M;U=N}else{Q=l[N+4>>0]|0;P=l[N+5>>0]|0;switch(I|0){case 3:{Ke(k[J>>2]|0,l[N+2>>0]|0,Q,P,x,y,z);k[M+8>>2]=k[x>>2]|k[y>>2]<<8|k[z>>2]<<16|-16777216;V=9;break}case 2:{V=9;break}case 1:{V=10;break}default:{}}if((V|0)==9){V=0;Ke(k[J>>2]|0,l[N+1>>0]|0,Q,P,A,B,C);k[M+4>>2]=k[A>>2]|k[B>>2]<<8|k[C>>2]<<16|-16777216;V=10}if((V|0)==10){V=0;Ke(k[J>>2]|0,l[N>>0]|0,Q,P,D,E,F);k[M>>2]=k[D>>2]|k[E>>2]<<8|k[F>>2]<<16|-16777216}T=M+(I<<2)|0;U=N+6|0}b=b+-1|0;if(!b)break;else{L=T+(h<<2)|0;f=U+g|0}}r=d;return}function $c(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;d=r;r=r+112|0;c=d+104|0;j=d+100|0;m=d+96|0;n=d+92|0;o=d+88|0;p=d+84|0;q=d+80|0;s=d+76|0;t=d+72|0;u=d+68|0;v=d+64|0;w=d+60|0;x=d+56|0;y=d+52|0;z=d+48|0;A=d+44|0;B=d+40|0;C=d+36|0;D=d+32|0;E=d+28|0;F=d+24|0;G=d+20|0;H=d+16|0;I=d+12|0;J=d+8|0;K=d+4|0;L=d;M=(h<<1)+e|0;N=((g|0)/2|0)*6|0;if(f>>>0>1){g=e>>>0>1;O=a+68|0;P=e+-2|0;Q=P>>>1;R=Q<<1;S=P-R|0;P=(Q*6|0)+6|0;Q=R+2|0;R=b;T=f;U=i;V=b+(h+e<<2)|0;while(1){if(g){h=V+(Q<<2)|0;W=e;X=R;Y=U;Z=V;while(1){_=l[Y+4>>0]|0;$=l[Y+5>>0]|0;Ke(k[O>>2]|0,l[Y>>0]|0,_,$,c,j,m);k[X>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[O>>2]|0,l[Y+1>>0]|0,_,$,n,o,p);k[X+4>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;Ke(k[O>>2]|0,l[Y+2>>0]|0,_,$,q,s,t);k[Z>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;Ke(k[O>>2]|0,l[Y+3>>0]|0,_,$,u,v,w);k[Z+4>>2]=k[u>>2]|k[v>>2]<<8|k[w>>2]<<16|-16777216;W=W+-2|0;if(W>>>0<=1)break;else{X=X+8|0;Y=Y+6|0;Z=Z+8|0}}aa=S;ba=R+(Q<<2)|0;ca=U+P|0;da=h}else{aa=e;ba=R;ca=U;da=V}if((aa|0)==1){Z=l[ca+4>>0]|0;Y=l[ca+5>>0]|0;Ke(k[O>>2]|0,l[ca>>0]|0,Z,Y,x,y,z);k[ba>>2]=k[x>>2]|k[y>>2]<<8|k[z>>2]<<16|-16777216;Ke(k[O>>2]|0,l[ca+2>>0]|0,Z,Y,A,B,C);k[da>>2]=k[A>>2]|k[B>>2]<<8|k[C>>2]<<16|-16777216;ea=ba+4|0;fa=ca+6|0;ga=da+4|0}else{ea=ba;fa=ca;ga=da}Y=ea+(M<<2)|0;Z=fa+N|0;T=T+-2|0;if(T>>>0<=1){ha=Y;ia=Z;break}else{R=Y;U=Z;V=ga+(M<<2)|0}}ja=ha;ka=f&1;la=ia}else{ja=b;ka=f;la=i}if((ka|0)!=1){r=d;return}if(e>>>0>1){ka=a+68|0;i=e+-2|0;f=i>>>1;b=f<<1;ia=(f*6|0)+6|0;f=b+2|0;ha=e;M=ja;ga=la;while(1){V=l[ga+4>>0]|0;U=l[ga+5>>0]|0;Ke(k[ka>>2]|0,l[ga>>0]|0,V,U,D,E,F);k[M>>2]=k[D>>2]|k[E>>2]<<8|k[F>>2]<<16|-16777216;Ke(k[ka>>2]|0,l[ga+1>>0]|0,V,U,G,H,I);k[M+4>>2]=k[G>>2]|k[H>>2]<<8|k[I>>2]<<16|-16777216;ha=ha+-2|0;if(ha>>>0<=1)break;else{M=M+8|0;ga=ga+6|0}}ma=i-b|0;na=ja+(f<<2)|0;oa=la+ia|0}else{ma=e;na=ja;oa=la}if((ma|0)!=1){r=d;return}Ke(k[a+68>>2]|0,l[oa>>0]|0,l[oa+4>>0]|0,l[oa+5>>0]|0,J,K,L);k[na>>2]=k[J>>2]|k[K>>2]<<8|k[L>>2]<<16|-16777216;r=d;return}function ad(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;d=r;r=r+48|0;c=d+32|0;j=d+28|0;m=d+24|0;n=d+20|0;o=d+16|0;p=d+12|0;q=d+8|0;s=d+4|0;t=d;u=g<<1;g=e>>>1;v=(g|0)==0;w=(e&1|0)==0;e=a+68|0;a=g<<2;x=g<<1;y=b;b=f;f=i;while(1){if(v){z=y;A=f}else{i=f+a|0;B=g;C=f;D=y;while(1){E=l[C+2>>0]|0;F=l[C+3>>0]|0;Ke(k[e>>2]|0,l[C>>0]|0,E,F,c,j,m);k[D>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[e>>2]|0,l[C+1>>0]|0,E,F,n,o,p);k[D+4>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;B=B+-1|0;if(!B)break;else{C=C+4|0;D=D+8|0}}z=y+(x<<2)|0;A=i}if(w){G=z;H=A}else{Ke(k[e>>2]|0,l[A>>0]|0,l[A+2>>0]|0,l[A+3>>0]|0,q,s,t);k[z>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;G=z+4|0;H=A+4|0}b=b+-1|0;if(!b)break;else{y=G+(h<<2)|0;f=H+u|0}}r=d;return}function bd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;d=r;r=r+48|0;c=d+32|0;j=d+28|0;m=d+24|0;n=d+20|0;o=d+16|0;p=d+12|0;q=d+8|0;s=d+4|0;t=d;if(f>>>0>1){u=h+e|0;v=(g|0)/2|0;g=a+68|0;w=e+1+(h<<1)|0;x=e+-1|0;y=e<<2;z=f+-2|0;A=z>>>1;B=A<<1;C=v<<2;D=(ha(A,C+y|0)|0)+C+y|0;C=(ha(A,u)|0)+h+e<<1;h=x+w|0;A=x+w|0;w=y+(v<<2)|0;v=b;y=f;x=i;E=b+(u<<2)|0;while(1){u=e;F=v;G=x;H=E;while(1){I=l[G+2>>0]|0;J=l[G+3>>0]|0;Ke(k[g>>2]|0,l[G>>0]|0,I,J,c,j,m);k[F>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;Ke(k[g>>2]|0,l[G+1>>0]|0,I,J,n,o,p);k[H>>2]=k[n>>2]|k[o>>2]<<8|k[p>>2]<<16|-16777216;u=u+-1|0;if(!u)break;else{F=F+4|0;G=G+4|0;H=H+4|0}}y=y+-2|0;if(y>>>0<=1)break;else{v=v+(h<<2)|0;x=x+w|0;E=E+(A<<2)|0}}K=b+(C<<2)|0;L=z-B|0;M=i+D|0}else{K=b;L=f;M=i}if((L|0)!=1){r=d;return}L=a+68|0;a=e;e=K;K=M;while(1){Ke(k[L>>2]|0,l[K>>0]|0,l[K+2>>0]|0,l[K+3>>0]|0,q,s,t);k[e>>2]=k[q>>2]|k[s>>2]<<8|k[t>>2]<<16|-16777216;a=a+-1|0;if(!a)break;else{e=e+4|0;K=K+4|0}}r=d;return}function cd(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,m=0,n=0,o=0,p=0;d=r;r=r+16|0;c=d+8|0;j=d+4|0;m=d;n=a+68|0;a=e+h|0;h=(e+g|0)*3|0;g=b;b=i;i=f;while(1){f=e;o=g;p=b;while(1){Ke(k[n>>2]|0,l[p>>0]|0,l[p+1>>0]|0,l[p+2>>0]|0,c,j,m);k[o>>2]=k[c>>2]|k[j>>2]<<8|k[m>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{o=o+4|0;p=p+3|0}}i=i+-1|0;if(!i)break;else{g=g+(a<<2)|0;b=b+h|0}}r=d;return}function dd(a,b,c,d,e,f,g,h,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=r;r=r+32|0;c=d+20|0;m=d+16|0;n=d+12|0;p=d+8|0;q=d+4|0;s=d;t=g*3|0;if(!f){r=d;return}g=(e|0)==0;u=a+72|0;a=e*3|0;v=j;j=b;b=f;while(1){b=b+-1|0;if(g){w=v;x=j}else{f=v+a|0;y=e;z=j;A=v;while(1){y=y+-1|0;He(k[u>>2]|0,l[A>>0]|0,i[A+1>>0]|0,i[A+2>>0]|0,c,m,n);Ie(k[u>>2]|0,+o[c>>2],+o[m>>2],+o[n>>2],p,q,s);k[z>>2]=k[p>>2]|k[q>>2]<<8|k[s>>2]<<16|-16777216;if(!y)break;else{z=z+4|0;A=A+3|0}}w=f;x=j+(e<<2)|0}if(!b)break;else{v=w+t|0;j=x+(h<<2)|0}}r=d;return}function ed(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;e=r;r=r+48|0;f=e+24|0;g=e+16|0;h=e+8|0;i=e;l=e+32|0;n=e+28|0;o=k[a>>2]|0;p=k[a+52>>2]|0;q=k[a+12>>2]|0;s=ge(o)|0;if((s|0)!=0?(t=(q|0)!=0,q=ha(t?4:3,s)|0,(q|0)!=0):0){u=me(q)|0;if(!u){v=k[o+628>>2]|0;w=qd(o)|0;k[h>>2]=136922;vc(v,w,154321,h);x=0;r=e;return x|0}pe(u,0,q);q=u+s|0;h=u+(s<<1)|0;w=t?u+(s*3|0)|0:0;k[g>>2]=l;Pb(o,322,g)|0;k[f>>2]=n;Pb(o,323,f)|0;a:do switch(m[a+28>>1]|0){case 5:case 1:{switch(j[a+30>>1]|0){case 6:case 2:{y=2;z=20;break a;break}case 7:case 3:{A=3;z=19;break a;break}case 8:case 4:{A=1;z=19;break a;break}default:{y=0;z=20;break a}}break}case 6:case 2:{switch(j[a+30>>1]|0){case 5:case 1:{y=2;z=20;break a;break}case 7:case 3:{A=1;z=19;break a;break}case 8:case 4:{A=3;z=19;break a;break}default:{y=0;z=20;break a}}break}case 7:case 3:{switch(j[a+30>>1]|0){case 5:case 1:{A=3;z=19;break a;break}case 8:case 4:{y=2;z=20;break a;break}case 6:case 2:{A=1;z=19;break a;break}default:{y=0;z=20;break a}}break}case 8:case 4:{switch(j[a+30>>1]|0){case 5:case 1:{A=1;z=19;break a;break}case 7:case 3:{y=2;z=20;break a;break}case 6:case 2:{A=3;z=19;break a;break}default:{y=0;z=20;break a}}break}default:{y=0;z=20}}while(0);if((z|0)==19){f=k[l>>2]|0;B=A;C=1;D=f;E=0-(f+c)|0;F=d+-1|0}else if((z|0)==20){z=k[l>>2]|0;B=y;C=0;D=z;E=c-z|0;F=0}switch(m[a+32>>1]|0){case 3:case 1:case 0:{G=1;H=u;I=u;break}default:{G=3;H=q;I=h}}h=a+88|0;q=((k[h>>2]|0)>>>0)%(D>>>0)|0;z=D-q|0;D=q+E|0;y=(d|0)==0;if(y)J=1;else{f=a+84|0;A=a+4|0;g=(c|0)==0;s=(G|0)==1;v=G&65535;G=a+26|0;K=1;L=0;M=F;while(1){F=k[n>>2]|0;N=k[f>>2]|0;O=F-(((N+L|0)>>>0)%(F>>>0)|0)|0;F=(O+L|0)>>>0>d>>>0?d-L|0:O;b:do if(g)P=K;else{O=ha(M,c)|0;Q=N;R=k[h>>2]|0;S=q;T=D;U=z;V=0;while(1){if((yd(o,u,R,Q+L|0,0,0)|0)==-1?(k[A>>2]|0)!=0:0){P=0;break b}if(!s){if((yd(o,H,R,(k[f>>2]|0)+L|0,0,1)|0)==-1?(k[A>>2]|0)!=0:0){P=0;break b}if((yd(o,I,R,(k[f>>2]|0)+L|0,0,2)|0)==-1?(k[A>>2]|0)!=0:0){P=0;break b}}if((t?(yd(o,w,R,(k[f>>2]|0)+L|0,0,v)|0)==-1:0)?(k[A>>2]|0)!=0:0){P=0;break b}W=(((k[f>>2]|0)+L|0)>>>0)%((k[n>>2]|0)>>>0)|0;X=ha(de(o)|0,W)|0;W=(ha(m[G>>1]|0,S)|0)+X|0;if((V+U|0)>>>0>c>>>0){X=c-V|0;Y=(k[l>>2]|0)-X|0;Z=Y;_=Y+E|0;$=X}else{Z=S;_=T;$=U}tb[p&15](a,b+(V+O<<2)|0,V,M,$,F,Z,_,u+W|0,H+W|0,I+W|0,t?w+W|0:0);W=$+V|0;if(W>>>0>=c>>>0){P=K;break b}Q=k[f>>2]|0;R=$+R|0;S=0;T=E;U=k[l>>2]|0;V=W}}while(0);L=F+L|0;if(L>>>0>=d>>>0){J=P;break}else{K=P;M=(C?0-F|0:F)+M|0}}}if(!((B&2|0)==0|y)){y=c+-1|0;B=0;do{M=ha(B,c)|0;C=y+M|0;if((M|0)<(C|0)){P=b+(M<<2)|0;M=b+(C<<2)|0;do{C=k[P>>2]|0;k[P>>2]=k[M>>2];k[M>>2]=C;P=P+4|0;M=M+-4|0}while(P>>>0<M>>>0)}B=B+1|0}while((B|0)!=(d|0))}ne(u);x=J;r=e;return x|0}J=k[o+628>>2]|0;u=qd(o)|0;k[i>>2]=136947;vc(J,u,139955,i);x=0;r=e;return x|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;e=r;r=r+32|0;f=e+16|0;g=e+8|0;h=e;i=e+20|0;l=k[a>>2]|0;n=k[a+52>>2]|0;o=k[a+16>>2]|0;p=k[a+12>>2]|0;q=Nd(l)|0;if((q|0)!=0?(s=(p|0)!=0,p=ha(s?4:3,q)|0,(p|0)!=0):0){t=me(p)|0;if(!t){u=k[l+628>>2]|0;vc(u,qd(l)|0,136922,g);v=0;r=e;return v|0}pe(t,0,p);p=t+q|0;g=t+(q<<1)|0;u=s?t+(q*3|0)|0:0;a:do switch(m[a+28>>1]|0){case 5:case 1:{switch(j[a+30>>1]|0){case 6:case 2:{w=2;x=0;y=0;z=0;break a;break}case 7:case 3:{A=3;B=19;break a;break}case 8:case 4:{A=1;B=19;break a;break}default:{w=0;x=0;y=0;z=0;break a}}break}case 6:case 2:{switch(j[a+30>>1]|0){case 5:case 1:{w=2;x=0;y=0;z=0;break a;break}case 7:case 3:{A=1;B=19;break a;break}case 8:case 4:{A=3;B=19;break a;break}default:{w=0;x=0;y=0;z=0;break a}}break}case 7:case 3:{switch(j[a+30>>1]|0){case 5:case 1:{A=3;B=19;break a;break}case 8:case 4:{w=2;x=0;y=0;z=0;break a;break}case 6:case 2:{A=1;B=19;break a;break}default:{w=0;x=0;y=0;z=0;break a}}break}case 8:case 4:{switch(j[a+30>>1]|0){case 5:case 1:{A=1;B=19;break a;break}case 7:case 3:{w=2;x=0;y=0;z=0;break a;break}case 6:case 2:{A=3;B=19;break a;break}default:{w=0;x=0;y=0;z=0;break a}}break}default:{w=0;x=0;y=0;z=0}}while(0);if((B|0)==19){w=A;x=1;y=0-(c<<1)|0;z=d+-1|0}switch(m[a+32>>1]|0){case 3:case 1:case 0:{C=1;D=t;E=t;break}default:{C=3;D=p;E=g}}k[f>>2]=i;Ge(l,278,f)|0;f=Pd(l)|0;g=o>>>0>c>>>0?o-c|0:0;o=a+4|0;p=(d|0)==0;b:do if(p)F=1;else{A=a+84|0;B=(C|0)==1;q=C&65535;G=a+88|0;H=a+26|0;I=0;J=z;while(1){K=k[i>>2]|0;L=(k[A>>2]|0)+I|0;M=K-((L>>>0)%(K>>>0)|0)|0;K=(M+I|0)>>>0>d>>>0?d-I|0:M;M=Id(l,L,0)|0;if((vd(l,M,t,ha(((((k[A>>2]|0)+I|0)>>>0)%((k[i>>2]|0)>>>0)|0)+K|0,f)|0)|0)==-1?(k[o>>2]|0)!=0:0){F=0;break b}if(!B){M=Id(l,L,1)|0;if((vd(l,M,D,ha(((((k[A>>2]|0)+I|0)>>>0)%((k[i>>2]|0)>>>0)|0)+K|0,f)|0)|0)==-1?(k[o>>2]|0)!=0:0){F=0;break b}M=Id(l,L,2)|0;if((vd(l,M,E,ha(((((k[A>>2]|0)+I|0)>>>0)%((k[i>>2]|0)>>>0)|0)+K|0,f)|0)|0)==-1?(k[o>>2]|0)!=0:0){F=0;break b}}if((s?(M=Id(l,L,q)|0,(vd(l,M,u,ha(((((k[A>>2]|0)+I|0)>>>0)%((k[i>>2]|0)>>>0)|0)+K|0,f)|0)|0)==-1):0)?(k[o>>2]|0)!=0:0){F=0;break b}M=ha((((k[A>>2]|0)+I|0)>>>0)%((k[i>>2]|0)>>>0)|0,f)|0;L=(ha(m[H>>1]|0,k[G>>2]|0)|0)+M|0;M=b+((ha(J,c)|0)<<2)|0;tb[n&15](a,M,0,J,c,K,g,y,t+L|0,D+L|0,E+L|0,s?u+L|0:0);I=K+I|0;if(I>>>0>=d>>>0){F=1;break}else J=(x?0-K|0:K)+J|0}}while(0);if(!((w&2|0)==0|p)){p=c+-1|0;w=0;do{x=ha(w,c)|0;u=p+x|0;if((x|0)<(u|0)){s=b+(x<<2)|0;x=b+(u<<2)|0;do{u=k[s>>2]|0;k[s>>2]=k[x>>2];k[x>>2]=u;s=s+4|0;x=x+-4|0}while(s>>>0<x>>>0)}w=w+1|0}while((w|0)!=(d|0))}ne(t);v=F;r=e;return v|0}F=k[l+628>>2]|0;t=qd(l)|0;k[h>>2]=136906;vc(F,t,139955,h);v=0;r=e;return v|0}function gd(a,b,c,d,e,f,g,h,i,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;if(!f)return;d=e>>>0>7;c=e+-8|0;a=c&-8;o=c-a|0;c=a+8|0;a=j;j=m;m=i;i=b;b=n;n=f;while(1){n=n+-1|0;if(d){f=b+c|0;p=a+c|0;q=a;r=m;s=j;t=i;u=b;v=e;while(1){k[t>>2]=(l[q>>0]|0)<<8|(l[r>>0]|0)|(l[s>>0]|0)<<16|(l[u>>0]|0)<<24;k[t+4>>2]=(l[q+1>>0]|0)<<8|(l[r+1>>0]|0)|(l[s+1>>0]|0)<<16|(l[u+1>>0]|0)<<24;k[t+8>>2]=(l[q+2>>0]|0)<<8|(l[r+2>>0]|0)|(l[s+2>>0]|0)<<16|(l[u+2>>0]|0)<<24;k[t+12>>2]=(l[q+3>>0]|0)<<8|(l[r+3>>0]|0)|(l[s+3>>0]|0)<<16|(l[u+3>>0]|0)<<24;k[t+16>>2]=(l[q+4>>0]|0)<<8|(l[r+4>>0]|0)|(l[s+4>>0]|0)<<16|(l[u+4>>0]|0)<<24;k[t+20>>2]=(l[q+5>>0]|0)<<8|(l[r+5>>0]|0)|(l[s+5>>0]|0)<<16|(l[u+5>>0]|0)<<24;k[t+24>>2]=(l[q+6>>0]|0)<<8|(l[r+6>>0]|0)|(l[s+6>>0]|0)<<16|(l[u+6>>0]|0)<<24;k[t+28>>2]=(l[q+7>>0]|0)<<8|(l[r+7>>0]|0)|(l[s+7>>0]|0)<<16|(l[u+7>>0]|0)<<24;v=v+-8|0;if(v>>>0<=7)break;else{q=q+8|0;r=r+8|0;s=s+8|0;t=t+32|0;u=u+8|0}}w=f;x=p;y=j+c|0;z=m+c|0;A=i+(c<<2)|0;B=o}else{w=b;x=a;y=j;z=m;A=i;B=e}switch(B|0){case 1:{C=w;D=x;E=z;F=A;G=y;H=14;break}case 7:{k[A>>2]=(l[x>>0]|0)<<8|(l[z>>0]|0)|(l[y>>0]|0)<<16|(l[w>>0]|0)<<24;I=w+1|0;J=x+1|0;K=z+1|0;L=y+1|0;M=A+4|0;H=9;break}case 6:{I=w;J=x;K=z;L=y;M=A;H=9;break}case 5:{N=w;O=x;P=z;Q=A;R=y;H=10;break}case 4:{S=w;T=x;U=z;V=A;W=y;H=11;break}case 3:{X=w;Y=x;Z=z;_=A;$=y;H=12;break}case 2:{aa=w;ba=x;ca=z;da=A;ea=y;H=13;break}default:{fa=w;ga=x;ha=z;ia=A;ja=y}}if((H|0)==9){H=0;k[M>>2]=(l[J>>0]|0)<<8|(l[K>>0]|0)|(l[L>>0]|0)<<16|(l[I>>0]|0)<<24;N=I+1|0;O=J+1|0;P=K+1|0;Q=M+4|0;R=L+1|0;H=10}if((H|0)==10){H=0;k[Q>>2]=(l[O>>0]|0)<<8|(l[P>>0]|0)|(l[R>>0]|0)<<16|(l[N>>0]|0)<<24;S=N+1|0;T=O+1|0;U=P+1|0;V=Q+4|0;W=R+1|0;H=11}if((H|0)==11){H=0;k[V>>2]=(l[T>>0]|0)<<8|(l[U>>0]|0)|(l[W>>0]|0)<<16|(l[S>>0]|0)<<24;X=S+1|0;Y=T+1|0;Z=U+1|0;_=V+4|0;$=W+1|0;H=12}if((H|0)==12){H=0;k[_>>2]=(l[Y>>0]|0)<<8|(l[Z>>0]|0)|(l[$>>0]|0)<<16|(l[X>>0]|0)<<24;aa=X+1|0;ba=Y+1|0;ca=Z+1|0;da=_+4|0;ea=$+1|0;H=13}if((H|0)==13){H=0;k[da>>2]=(l[ba>>0]|0)<<8|(l[ca>>0]|0)|(l[ea>>0]|0)<<16|(l[aa>>0]|0)<<24;C=aa+1|0;D=ba+1|0;E=ca+1|0;F=da+4|0;G=ea+1|0;H=14}if((H|0)==14){H=0;k[F>>2]=(l[D>>0]|0)<<8|(l[E>>0]|0)|(l[G>>0]|0)<<16|(l[C>>0]|0)<<24;fa=C+1|0;ga=D+1|0;ha=E+1|0;ia=F+4|0;ja=G+1|0}if(!n)break;else{a=ga+g|0;j=ja+g|0;m=ha+g|0;i=ia+(h<<2)|0;b=fa+g|0}}return}function hd(a,b,c,d,e,f,g,h,i,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!f)return;d=(e|0)==0;c=a+76|0;a=b;b=i;i=j;j=n;n=m;m=f;while(1){m=m+-1|0;if(d){o=a;p=n;q=b;r=i;s=j}else{f=n+e|0;t=b+e|0;u=k[c>>2]|0;v=e;w=n;x=a;y=b;z=i;A=j;while(1){v=v+-1|0;B=l[A>>0]|0;C=B<<8;k[x>>2]=l[u+(l[y>>0]|0|C)>>0]|0|B<<24|(l[u+(l[z>>0]|0|C)>>0]|0)<<8|(l[u+(l[w>>0]|0|C)>>0]|0)<<16;if(!v)break;else{w=w+1|0;x=x+4|0;y=y+1|0;z=z+1|0;A=A+1|0}}o=a+(e<<2)|0;p=f;q=t;r=i+e|0;s=j+e|0}if(!m)break;else{a=o+(h<<2)|0;b=q+g|0;i=r+g|0;j=s+g|0;n=p+g|0}}return}function id(a,b,c,d,e,f,g,h,i,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;if(!f)return;n=e>>>0>7;d=e+-8|0;c=d&-8;a=d-c|0;d=c+8|0;c=j;j=m;m=i;i=b;b=f;while(1){b=b+-1|0;if(n){f=i+(d<<2)|0;o=c+d|0;p=c;q=m;r=j;s=i;t=e;while(1){k[s>>2]=l[q>>0]|0|(l[p>>0]|0)<<8|(l[r>>0]|0)<<16|-16777216;k[s+4>>2]=l[q+1>>0]|0|(l[p+1>>0]|0)<<8|(l[r+1>>0]|0)<<16|-16777216;k[s+8>>2]=l[q+2>>0]|0|(l[p+2>>0]|0)<<8|(l[r+2>>0]|0)<<16|-16777216;k[s+12>>2]=l[q+3>>0]|0|(l[p+3>>0]|0)<<8|(l[r+3>>0]|0)<<16|-16777216;k[s+16>>2]=l[q+4>>0]|0|(l[p+4>>0]|0)<<8|(l[r+4>>0]|0)<<16|-16777216;k[s+20>>2]=l[q+5>>0]|0|(l[p+5>>0]|0)<<8|(l[r+5>>0]|0)<<16|-16777216;k[s+24>>2]=l[q+6>>0]|0|(l[p+6>>0]|0)<<8|(l[r+6>>0]|0)<<16|-16777216;k[s+28>>2]=l[q+7>>0]|0|(l[p+7>>0]|0)<<8|(l[r+7>>0]|0)<<16|-16777216;t=t+-8|0;if(t>>>0<=7)break;else{p=p+8|0;q=q+8|0;r=r+8|0;s=s+32|0}}u=f;v=o;w=j+d|0;x=m+d|0;y=a}else{u=i;v=c;w=j;x=m;y=e}switch(y|0){case 1:{z=u;A=v;B=x;C=w;D=14;break}case 7:{k[u>>2]=l[x>>0]|0|(l[v>>0]|0)<<8|(l[w>>0]|0)<<16|-16777216;E=u+4|0;F=v+1|0;G=x+1|0;H=w+1|0;D=9;break}case 6:{E=u;F=v;G=x;H=w;D=9;break}case 5:{I=u;J=v;K=x;L=w;D=10;break}case 4:{M=u;N=v;O=x;P=w;D=11;break}case 3:{Q=u;R=v;S=x;T=w;D=12;break}case 2:{U=u;V=v;W=x;X=w;D=13;break}default:{Y=u;Z=v;_=x;$=w}}if((D|0)==9){D=0;k[E>>2]=l[G>>0]|0|(l[F>>0]|0)<<8|(l[H>>0]|0)<<16|-16777216;I=E+4|0;J=F+1|0;K=G+1|0;L=H+1|0;D=10}if((D|0)==10){D=0;k[I>>2]=l[K>>0]|0|(l[J>>0]|0)<<8|(l[L>>0]|0)<<16|-16777216;M=I+4|0;N=J+1|0;O=K+1|0;P=L+1|0;D=11}if((D|0)==11){D=0;k[M>>2]=l[O>>0]|0|(l[N>>0]|0)<<8|(l[P>>0]|0)<<16|-16777216;Q=M+4|0;R=N+1|0;S=O+1|0;T=P+1|0;D=12}if((D|0)==12){D=0;k[Q>>2]=l[S>>0]|0|(l[R>>0]|0)<<8|(l[T>>0]|0)<<16|-16777216;U=Q+4|0;V=R+1|0;W=S+1|0;X=T+1|0;D=13}if((D|0)==13){D=0;k[U>>2]=l[W>>0]|0|(l[V>>0]|0)<<8|(l[X>>0]|0)<<16|-16777216;z=U+4|0;A=V+1|0;B=W+1|0;C=X+1|0;D=14}if((D|0)==14){D=0;k[z>>2]=l[B>>0]|0|(l[A>>0]|0)<<8|(l[C>>0]|0)<<16|-16777216;Y=z+4|0;Z=A+1|0;_=B+1|0;$=C+1|0}if(!b)break;else{c=Z+g|0;j=$+g|0;m=_+g|0;i=Y+(h<<2)|0}}return}function jd(a,b,c,d,e,f,g,h,i,j,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;if(!f)return;d=(e|0)==0;c=a+80|0;a=b;b=f;f=o;o=n;n=j;j=i;while(1){b=b+-1|0;if(d){p=a;q=f;r=o;s=n;t=j}else{i=f+(e<<1)|0;u=n+(e<<1)|0;v=k[c>>2]|0;w=0;x=a;y=f;z=o;A=n;B=j;while(1){k[x>>2]=(l[v+(m[A>>1]|0)>>0]|0)<<8|(l[v+(m[B>>1]|0)>>0]|0)|(l[v+(m[z>>1]|0)>>0]|0)<<16|(l[v+(m[y>>1]|0)>>0]|0)<<24;w=w+1|0;if((w|0)==(e|0))break;else{x=x+4|0;y=y+2|0;z=z+2|0;A=A+2|0;B=B+2|0}}p=a+(e<<2)|0;q=i;r=o+(e<<1)|0;s=u;t=j+(e<<1)|0}if(!b)break;else{a=p+(h<<2)|0;f=q+(g<<1)|0;o=r+(g<<1)|0;n=s+(g<<1)|0;j=t+(g<<1)|0}}return}function kd(a,b,c,d,e,f,g,h,i,j,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;if(!f)return;d=(e|0)==0;c=a+80|0;p=a+76|0;a=b;b=f;f=o;o=n;n=j;j=i;while(1){b=b+-1|0;if(d){q=a;r=f;s=o;t=n;u=j}else{i=o+(e<<1)|0;v=j+(e<<1)|0;w=k[c>>2]|0;x=k[p>>2]|0;y=e;z=a;A=f;B=o;C=n;D=j;while(1){y=y+-1|0;E=l[w+(m[A>>1]|0)>>0]|0;F=E<<8;k[z>>2]=l[x+(l[w+(m[D>>1]|0)>>0]|0|F)>>0]|0|E<<24|(l[x+(l[w+(m[C>>1]|0)>>0]|0|F)>>0]|0)<<8|(l[x+(l[w+(m[B>>1]|0)>>0]|0|F)>>0]|0)<<16;if(!y)break;else{z=z+4|0;A=A+2|0;B=B+2|0;C=C+2|0;D=D+2|0}}q=a+(e<<2)|0;r=f+(e<<1)|0;s=i;t=n+(e<<1)|0;u=v}if(!b)break;else{a=q+(h<<2)|0;f=r+(g<<1)|0;o=s+(g<<1)|0;n=t+(g<<1)|0;j=u+(g<<1)|0}}return}function ld(a,b,c,d,e,f,g,h,i,j,n,o){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;n=n|0;o=o|0;var p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;if(!f)return;o=(e|0)==0;d=a+80|0;a=b;b=f;f=n;n=j;j=i;while(1){b=b+-1|0;if(o){p=a;q=f;r=n;s=j}else{i=a+(e<<2)|0;c=n+(e<<1)|0;t=k[d>>2]|0;u=0;v=a;w=f;x=n;y=j;while(1){k[v>>2]=l[t+(m[y>>1]|0)>>0]|0|(l[t+(m[x>>1]|0)>>0]|0)<<8|(l[t+(m[w>>1]|0)>>0]|0)<<16|-16777216;u=u+1|0;if((u|0)==(e|0))break;else{v=v+4|0;w=w+2|0;x=x+2|0;y=y+2|0}}p=i;q=f+(e<<1)|0;r=c;s=j+(e<<1)|0}if(!b)break;else{a=p+(h<<2)|0;f=q+(g<<1)|0;n=r+(g<<1)|0;j=s+(g<<1)|0}}return}function md(a,b,c,d,e,f,g,h,i,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!f)return;d=(e|0)==0;c=b;b=i;i=n;n=m;m=j;j=f;while(1){j=j+-1|0;if(d){o=c;p=m;q=b;r=i;s=n}else{f=n+e|0;a=b+e|0;t=e;u=m;v=c;w=b;x=i;y=n;while(1){t=t+-1|0;z=(l[x>>0]|0)^255;A=((ha((l[w>>0]|0)^255,z)|0)>>>0)/255|0;B=((ha((l[u>>0]|0)^255,z)|0)>>>0)/255|0;C=A|B<<8|(((ha((l[y>>0]|0)^255,z)|0)>>>0)/255|0)<<16|-16777216;k[v>>2]=C;if(!t)break;else{u=u+1|0;v=v+4|0;w=w+1|0;x=x+1|0;y=y+1|0}}o=c+(e<<2)|0;p=m+e|0;q=a;r=i+e|0;s=f}if(!j)break;else{c=o+(h<<2)|0;b=q+g|0;i=r+g|0;n=s+g|0;m=p+g|0}}return}function nd(a,b,c,d,e,f,g,h,i,j,m,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;m=m|0;n=n|0;var o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;n=r;r=r+16|0;d=n+8|0;c=n+4|0;o=n;if(!f){r=n;return}p=a+68|0;a=e+g|0;q=e+g|0;s=e+g|0;g=e+h|0;h=m;m=b;b=j;j=i;i=f;while(1){f=e;t=m;u=h;v=b;w=j;while(1){Ke(k[p>>2]|0,l[w>>0]|0,l[v>>0]|0,l[u>>0]|0,d,c,o);k[t>>2]=k[d>>2]|k[c>>2]<<8|k[o>>2]<<16|-16777216;f=f+-1|0;if(!f)break;else{t=t+4|0;u=u+1|0;v=v+1|0;w=w+1|0}}i=i+-1|0;if(!i)break;else{h=h+s|0;m=m+(g<<2)|0;b=b+q|0;j=j+a|0}}r=n;return}function od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c;e=i[a>>0]|0;switch(e<<24>>24|0){case 114:{f=(i[a+1>>0]|0)==43?2:0;r=c;return f|0}case 97:case 119:{r=c;return (e<<24>>24==119?578:66)|0}default:{k[d>>2]=a;vc(0,b,137216,d);f=-1;r=c;return f|0}}return 0}function pd(a,b,c,d,e,f,g,h,l,n){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;l=l|0;n=n|0;var o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;o=r;r=r+96|0;p=o+80|0;q=o+72|0;s=o+64|0;t=o+56|0;u=o+48|0;v=o+40|0;w=o+32|0;x=o+24|0;y=o+16|0;z=o+8|0;A=o;B=i[b>>0]|0;switch(B<<24>>24|0){case 114:{C=(i[b+1>>0]|0)==43?2:0;break}case 97:case 119:{C=B<<24>>24==119?578:66;break}default:{k[z>>2]=b;vc(0,137231,137216,z);D=0;r=o;return D|0}}z=me((Qq(a)|0)+697|0)|0;if(!z){k[y>>2]=a;vc(c,137231,137246,y);D=0;r=o;return D|0}pe(z,0,696);y=z+696|0;k[z>>2]=y;Pq(y,a)|0;y=z+8|0;k[y>>2]=C&2;j[z+448>>1]=-1;B=z+456|0;k[B>>2]=0;k[B+4>>2]=0;k[z+452>>2]=-1;k[z+444>>2]=-1;B=z+628|0;k[B>>2]=c;if(!((d|0)!=0&(e|0)!=0&(f|0)!=0&(g|0)!=0&(h|0)!=0)){vc(c,137231,137281,x);D=0;r=o;return D|0}x=z+632|0;k[x>>2]=d;d=z+636|0;k[d>>2]=e;e=z+640|0;k[e>>2]=f;k[z+644>>2]=g;k[z+648>>2]=h;h=z+620|0;k[h>>2]=(l|0)==0?7:l;k[z+624>>2]=(n|0)==0?1:n;Ve(z);n=z+12|0;l=(C|0)==0;g=l?2049:1;f=(C&576|0)==0?g|32768:g;k[n>>2]=f;g=i[b>>0]|0;a:do if(g<<24>>24){c=(C&64|0)==0;if(l){E=g;F=f;G=f;H=f;I=f;J=f;K=b}else{L=g;M=f;N=f;O=b;while(1){switch(L<<24>>24|0){case 98:{if(c){P=M;Q=N}else{R=M|128;k[n>>2]=R;P=R;Q=R}break}case 56:{if(c){P=M;Q=N}else{R=M|524288;k[n>>2]=R;P=R;Q=R}break}case 66:{R=M&-4|1;k[n>>2]=R;P=R;Q=R;break}case 76:{R=M&-4|2;k[n>>2]=R;P=R;Q=R;break}case 72:{R=M&-4|2;k[n>>2]=R;P=R;Q=R;break}case 104:{R=N|65536;k[n>>2]=R;P=R;Q=R;break}default:{P=M;Q=N}}O=O+1|0;L=i[O>>0]|0;if(!(L<<24>>24))break a;else{M=P;N=Q}}}while(1){do switch(E<<24>>24|0){case 98:{if(c){S=J;T=I;U=H;V=G;W=F}else{N=J|128;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N}break}case 56:{if(c){S=J;T=I;U=H;V=G;W=F}else{N=J|524288;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N}break}case 66:{N=J&-4|1;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 76:{N=J&-4|2;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 72:{N=J&-4|2;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 77:{N=J|2048;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 109:{N=I&-2049;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 67:{N=H|32768;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 99:{N=G&-32769;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}case 104:{N=F|65536;k[n>>2]=N;S=N;T=N;U=N;V=N;W=N;break}default:{S=J;T=I;U=H;V=G;W=F}}while(0);K=K+1|0;E=i[K>>0]|0;if(!(E<<24>>24))break a;else{F=W;G=V;H=U;I=T;J=S}}}while(0);b:do if((C&512|0)==0?(S=z+424|0,(nb[k[x>>2]&63](k[B>>2]|0,S,8)|0)==8):0){J=j[S>>1]|0;S=J&65535;switch(J<<16>>16){case 19789:{k[n>>2]=k[n>>2]|128;break}case 20549:case 18761:break;default:{J=k[B>>2]|0;k[u>>2]=S;k[u+4>>2]=S;vc(J,a,137351,u);break b}}J=z+426|0;if(k[n>>2]&128)Qd(J);S=j[J>>1]|0;J=S&65535;if((S&-2)<<16>>16!=42){T=k[B>>2]|0;k[t>>2]=J;k[t+4>>2]=J;vc(T,a,137402,t);break}do if(S<<16>>16!=42){T=z+432|0;if((nb[k[x>>2]&63](k[B>>2]|0,T,8)|0)!=8){vc(k[B>>2]|0,a,137327,s);break b}J=z+428|0;if(k[n>>2]&128){Qd(J);Sd(T)}T=j[J>>1]|0;J=T&65535;if(T<<16>>16!=8){T=k[B>>2]|0;k[q>>2]=J;k[q+4>>2]=J;vc(T,a,137448,q);break b}T=j[z+430>>1]|0;J=T&65535;if(!(T<<16>>16)){j[z+440>>1]=16;T=k[n>>2]|524288;k[n>>2]=T;X=T;break}else{T=k[B>>2]|0;k[p>>2]=J;k[p+4>>2]=J;vc(T,a,137498,p);break b}}else{T=k[n>>2]|0;if(!(T&128))Y=T;else{Rd(z+428|0);Y=k[n>>2]|0}j[z+440>>1]=8;X=Y}while(0);S=X|512;k[n>>2]=S;T=z+588|0;k[T>>2]=0;k[T+4>>2]=0;k[T+8>>2]=0;k[T+12>>2]=0;k[T+16>>2]=0;switch(i[b>>0]|0){case 114:break;case 97:{if(!(Tb(z)|0))break b;else D=z;r=o;return D|0}default:break b}if(!(X&524288)){T=z+24|0;k[T>>2]=k[z+428>>2];k[T+4>>2]=0}else{T=z+432|0;J=k[T+4>>2]|0;I=z+24|0;k[I>>2]=k[T>>2];k[I+4>>2]=J}do if(X&2048){if(!(nb[k[h>>2]&63](k[B>>2]|0,z+612|0,A)|0)){J=k[n>>2]&-2049;k[n>>2]=J;Z=J;break}J=A;I=k[J>>2]|0;T=k[J+4>>2]|0;k[z+616>>2]=I;if((I|0)==(I|0)&(((I|0)<0)<<31>>31|0)==(T|0)){Z=k[n>>2]|0;break}else Ja(137544,137569,449,137231)}else Z=S;while(0);if(Z&65536){D=z;r=o;return D|0}if(fc(z)|0){k[z+608>>2]=-1;k[n>>2]=k[n>>2]|16;D=z;r=o;return D|0}}else _=37;while(0);do if((_|0)==37){if(!(k[y>>2]|0)){vc(k[B>>2]|0,a,137327,w);break}Z=k[n>>2]|0;A=Z&128;h=z+424|0;j[h>>1]=(A|0)!=0?19789:18761;X=z+426|0;if(!(Z&524288)){j[X>>1]=42;k[z+428>>2]=0;if(A)Qd(X);Z=z+440|0;j[Z>>1]=8;$=Z}else{j[X>>1]=43;Z=z+428|0;j[Z>>1]=8;j[z+430>>1]=0;b=z+432|0;k[b>>2]=0;k[b+4>>2]=0;if(A){Qd(X);Qd(Z)}Z=z+440|0;j[Z>>1]=16;$=Z}xb[k[e>>2]&63](k[B>>2]|0,0,0,0)|0;Z=nb[k[d>>2]&63](k[B>>2]|0,h,m[$>>1]|0)|0;if((Z|0)!=(m[$>>1]|0)){vc(k[B>>2]|0,a,142082,v);break}if((j[h>>1]|0)==19789)k[n>>2]=k[n>>2]|128;if(Tb(z)|0){h=z+16|0;k[h>>2]=0;k[h+4>>2]=0;k[z+32>>2]=0;j[z+36>>1]=0;j[z+38>>1]=0;D=z;r=o;return D|0}}while(0);k[y>>2]=0;Lb(z);D=0;r=o;return D|0}function qd(a){a=a|0;return k[a>>2]|0}function rd(a){a=a|0;return (k[a+12>>2]|0)>>>10&1|0}function sd(a){a=a|0;return j[a+448>>1]|0}function td(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function ud(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function vd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+32|0;f=e+16|0;if((k[a+8>>2]|0)==1){vc(k[a+628>>2]|0,k[a>>2]|0,137580,e);g=-1;r=e;return g|0}if(k[a+12>>2]&1024){vc(k[a+628>>2]|0,k[a>>2]|0,137606,e+8|0);g=-1;r=e;return g|0}h=k[a+168>>2]|0;if(h>>>0<=b>>>0){i=k[a+628>>2]|0;k[f>>2]=b;k[f+4>>2]=h;vc(i,137830,137851,f);g=-1;r=e;return g|0}f=k[a+100>>2]|0;i=k[a+60>>2]|0;h=f>>>0>i>>>0?i:f;f=((i+-1+h|0)>>>0)/(h>>>0)|0;j=i-(ha((b>>>0)%(f>>>0)|0,h)|0)|0;i=Md(a,j>>>0>h>>>0?h:j)|0;if(!i){g=-1;r=e;return g|0}j=(d|0)!=-1&(i|0)>(d|0)?d:i;if(!(wd(a,b)|0)){g=-1;r=e;return g|0}if((xb[k[a+540>>2]&63](a,c,j,((b>>>0)/(f>>>0)|0)&65535)|0)<1){g=-1;r=e;return g|0}vb[k[a+652>>2]&127](a,c,j);g=j;r=e;return g|0}function wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;c=r;r=r+64|0;d=c+48|0;e=c+40|0;f=c+16|0;g=c;if(!(gc(a)|0)){h=0;r=c;return h|0}i=a+176|0;j=k[i>>2]|0;if(!j){h=0;r=c;return h|0}l=a+12|0;n=k[l>>2]|0;do if(!(n&131072)){o=j+(b<<3)|0;p=k[o>>2]|0;q=k[o+4>>2]|0;if((q|0)<0|(q|0)==0&p>>>0<1){o=k[a+628>>2]|0;s=g;k[s>>2]=p;k[s+4>>2]=q;k[g+8>>2]=b;vc(o,137884,137898,g);h=0;r=c;return h|0}if((n&2048|0)!=0?((m[a+94>>1]|0|256)&n|0)!=0:0){if((n&512|0)!=0?(o=a+588|0,s=k[o>>2]|0,(s|0)!=0):0){ne(s);k[o>>2]=0;k[a+592>>2]=0;t=k[l>>2]|0}else t=n;o=t&-513;k[l>>2]=o;s=k[a+616>>2]|0;u=((s|0)<0)<<31>>31;v=(k[a+172>>2]|0)+(b<<3)|0;w=k[v>>2]|0;x=k[v+4>>2]|0;v=pr(s|0,u|0,p|0,q|0)|0;y=L;if(!(u>>>0<q>>>0|(u|0)==(q|0)&s>>>0<p>>>0|(x>>>0>y>>>0|(x|0)==(y|0)&w>>>0>v>>>0))){k[a+592>>2]=p;k[a+588>>2]=(k[a+612>>2]|0)+w;k[a+596>>2]=0;k[a+600>>2]=p;k[l>>2]=o|8388608;break}o=k[a+628>>2]|0;v=pr(s|0,u|0,w|0,x|0)|0;k[f>>2]=b;x=f+8|0;k[x>>2]=v;k[x+4>>2]=L;x=f+16|0;k[x>>2]=p;k[x+4>>2]=q;vc(o,137884,137939,f);k[a+452>>2]=-1;h=0;r=c;return h|0}if(!((p|0)==(p|0)&(((p|0)<0)<<31>>31|0)==(q|0))){vc(k[a+628>>2]|0,137884,139721,e);h=0;r=c;return h|0}do if((p|0)>(k[a+592>>2]|0)){k[a+452>>2]=-1;if(!(n&512)){q=k[a+628>>2]|0;k[d>>2]=b;vc(q,137884,137994,d);h=0;r=c;return h|0}if(!(xd(a,0,p)|0)){h=0;r=c;return h|0}else{z=k[l>>2]|0;break}}else z=n;while(0);if((z&8388608|0)!=0?(k[a+452>>2]=-1,(xd(a,0,p)|0)==0):0){h=0;r=c;return h|0}q=a+588|0;if((Gd(a,b,k[q>>2]|0,p,137884)|0)!=(p|0)){h=0;r=c;return h|0}k[a+596>>2]=0;k[a+600>>2]=p;if(!((m[a+94>>1]|0|256)&k[l>>2]))_d(k[q>>2]|0,p)}while(0);if(!(gc(a)|0)){h=0;r=c;return h|0}if(!(k[i>>2]|0)){h=0;r=c;return h|0}z=k[l>>2]|0;do if(!(z&32))if(!(ub[k[a+508>>2]&63](a)|0)){h=0;r=c;return h|0}else{n=k[l>>2]|32;k[l>>2]=n;A=n;break}else A=z;while(0);k[a+452>>2]=b;z=k[a+164>>2]|0;n=ha(k[a+100>>2]|0,(b>>>0)%(z>>>0)|0)|0;k[a+444>>2]=n;k[l>>2]=A&-1048577;if(!(A&131072)){k[a+604>>2]=k[a+588>>2];B=k[(k[i>>2]|0)+(b<<3)>>2]|0}else{k[a+604>>2]=0;B=0}k[a+608>>2]=B;h=yb[k[a+512>>2]&127](a,((b>>>0)/(z>>>0)|0)&65535)|0;r=c;return h|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=r;r=r+16|0;e=d+8|0;f=d;g=a+12|0;h=k[g>>2]|0;if(h&131072)Ja(137648,137683,918,137694);k[g>>2]=h&-8388609;i=a+588|0;j=k[i>>2]|0;if(j){if(h&512)ne(j);k[i>>2]=0;k[a+592>>2]=0}if(b){k[a+592>>2]=c;k[i>>2]=b;k[g>>2]=k[g>>2]&-513;l=1;r=d;return l|0}b=c+1023&-1024;k[a+592>>2]=b;if(!b){vc(k[a+628>>2]|0,137694,137714,f);l=0;r=d;return l|0}f=me(b)|0;k[i>>2]=f;k[g>>2]=k[g>>2]|512;if(f){l=1;r=d;return l|0}f=k[a+628>>2]|0;k[e>>2]=k[a+444>>2];vc(f,137694,138034,e);k[a+592>>2]=0;l=0;r=d;return l|0}function yd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=r;r=r+16|0;if((k[a+8>>2]|0)==1){vc(k[a+628>>2]|0,k[a>>2]|0,137580,g);h=-1;r=g;return h|0}if(!(k[a+12>>2]&1024)){vc(k[a+628>>2]|0,k[a>>2]|0,138075,g+8|0);h=-1;r=g;return h|0}if(!(ae(a,c,d,e,f)|0)){h=-1;r=g;return h|0}h=zd(a,$d(a,c,d,e,f)|0,b,-1)|0;r=g;return h|0}function zd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=r;r=r+32|0;f=e+16|0;g=k[a+496>>2]|0;if((k[a+8>>2]|0)==1){vc(k[a+628>>2]|0,k[a>>2]|0,137580,e);h=-1;r=e;return h|0}if(!(k[a+12>>2]&1024)){vc(k[a+628>>2]|0,k[a>>2]|0,138075,e+8|0);h=-1;r=e;return h|0}i=k[a+168>>2]|0;if(i>>>0<=b>>>0){j=k[a+628>>2]|0;k[f>>2]=b;k[f+4>>2]=i;vc(j,138116,138136,f);h=-1;r=e;return h|0}f=(d|0)==-1|(g|0)<(d|0)?g:d;if(!(Ad(a,b)|0)){h=-1;r=e;return h|0}if(!(xb[k[a+548>>2]&63](a,c,f,((b>>>0)/((k[a+164>>2]|0)>>>0)|0)&65535)|0)){h=-1;r=e;return h|0}vb[k[a+652>>2]&127](a,c,f);h=f;r=e;return h|0}function Ad(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;c=r;r=r+48|0;d=c+40|0;e=c+32|0;f=c+24|0;g=c+16|0;h=c;if(!(gc(a)|0)){i=0;r=c;return i|0}j=a+176|0;l=k[j>>2]|0;if(!l){i=0;r=c;return i|0}n=a+12|0;o=k[n>>2]|0;do if(!(o&131072)){p=l+(b<<3)|0;q=k[p>>2]|0;s=k[p+4>>2]|0;if((s|0)<0|(s|0)==0&q>>>0<1){p=k[a+628>>2]|0;t=h;k[t>>2]=q;k[t+4>>2]=s;k[h+8>>2]=b;vc(p,138168,138181,h);i=0;r=c;return i|0}if((o&2048|0)!=0?((m[a+94>>1]|0|256)&o|0)!=0:0){if((o&512|0)!=0?(p=a+588|0,t=k[p>>2]|0,(t|0)!=0):0){ne(t);k[p>>2]=0;k[a+592>>2]=0;u=k[n>>2]|0}else u=o;p=u&-513;k[n>>2]=p;t=k[a+616>>2]|0;v=((t|0)<0)<<31>>31;if(!(v>>>0<s>>>0|(v|0)==(s|0)&t>>>0<q>>>0)?(w=(k[a+172>>2]|0)+(b<<3)|0,x=k[w>>2]|0,y=k[w+4>>2]|0,w=pr(t|0,v|0,q|0,s|0)|0,v=L,!(y>>>0>v>>>0|(y|0)==(v|0)&x>>>0>w>>>0)):0){k[a+592>>2]=q;k[a+588>>2]=(k[a+612>>2]|0)+x;k[a+596>>2]=0;k[a+600>>2]=q;k[n>>2]=p|8388608;break}k[a+492>>2]=-1;i=0;r=c;return i|0}if(!((q|0)==(q|0)&(((q|0)<0)<<31>>31|0)==(s|0))){vc(k[a+628>>2]|0,138168,139721,g);i=0;r=c;return i|0}do if((q|0)>(k[a+592>>2]|0)){k[a+492>>2]=-1;if(!(o&512)){s=k[a+628>>2]|0;k[f>>2]=b;vc(s,138168,138221,f);i=0;r=c;return i|0}if(!(xd(a,0,q)|0)){i=0;r=c;return i|0}else{z=k[n>>2]|0;break}}else z=o;while(0);if((z&8388608|0)!=0?(k[a+492>>2]=-1,(xd(a,0,q)|0)==0):0){i=0;r=c;return i|0}s=a+588|0;if((Hd(a,b,k[s>>2]|0,q,138168)|0)!=(q|0)){i=0;r=c;return i|0}k[a+596>>2]=0;k[a+600>>2]=q;if(!((m[a+94>>1]|0|256)&k[n>>2]))_d(k[s>>2]|0,q)}while(0);if(!(gc(a)|0)){i=0;r=c;return i|0}if(!(k[j>>2]|0)){i=0;r=c;return i|0}z=k[n>>2]|0;do if(!(z&32))if(!(ub[k[a+508>>2]&63](a)|0)){i=0;r=c;return i|0}else{o=k[n>>2]|32;k[n>>2]=o;A=o;break}else A=z;while(0);k[a+492>>2]=b;z=k[a+56>>2]|0;o=k[a+68>>2]|0;if(z>>>0<(0-o|0)>>>0?(f=((z+-1+o|0)>>>0)/(o>>>0)|0,(f|0)!=0):0){z=k[a+72>>2]|0;g=ha(z,(b>>>0)%(f>>>0)|0)|0;k[a+444>>2]=g;g=k[a+60>>2]|0;if(g>>>0<(0-z|0)>>>0?(f=((z+-1+g|0)>>>0)/(z>>>0)|0,(f|0)!=0):0){z=ha((b>>>0)%(f>>>0)|0,o)|0;k[a+488>>2]=z;k[n>>2]=A&-1048577;if(!(A&131072)){k[a+604>>2]=k[a+588>>2];B=k[(k[j>>2]|0)+(b<<3)>>2]|0}else{k[a+604>>2]=0;B=0}k[a+608>>2]=B;i=yb[k[a+512>>2]&127](a,((b>>>0)/((k[a+164>>2]|0)>>>0)|0)&65535)|0;r=c;return i|0}vc(k[a+628>>2]|0,138260,138274,d);i=0;r=c;return i|0}vc(k[a+628>>2]|0,138260,138274,e);i=0;r=c;return i|0}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;return}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&1)){Td(b,(c|0)/2|0);return}else Ja(138285,137683,1059,138299)}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;if(!((c|0)%3|0)){Ud(b,(c|0)/3|0);return}else Ja(138318,137683,1067,138332)}function Ed(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&3)){Vd(b,(c|0)/4|0);return}else Ja(138351,137683,1075,138365)}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;if(!(c&7)){Yd(b,(c|0)/8|0);return}else Ja(138384,137683,1083,138398)}function Gd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;f=r;r=r+64|0;g=f+32|0;h=f+8|0;i=f;if(!(gc(a)|0)){j=-1;r=f;return j|0}l=k[a+12>>2]|0;if(l&131072)Ja(137648,137683,372,138609);if(!(l&2048)){l=a+628|0;m=a+172|0;n=(k[m>>2]|0)+(b<<3)|0;o=xb[k[a+640>>2]&63](k[l>>2]|0,k[n>>2]|0,k[n+4>>2]|0,0)|0;n=(k[m>>2]|0)+(b<<3)|0;if(!((o|0)==(k[n>>2]|0)?(L|0)==(k[n+4>>2]|0):0)){n=k[l>>2]|0;k[i>>2]=k[a+444>>2];k[i+4>>2]=b;vc(n,e,137734,i);j=-1;r=f;return j|0}i=nb[k[a+632>>2]&63](k[l>>2]|0,c,d)|0;if((i|0)==(d|0)){j=d;r=f;return j|0}n=k[l>>2]|0;k[h>>2]=k[a+444>>2];l=h+8|0;k[l>>2]=i;k[l+4>>2]=((i|0)<0)<<31>>31;i=h+16|0;k[i>>2]=d;k[i+4>>2]=((d|0)<0)<<31>>31;vc(n,e,137772,h);j=-1;r=f;return j|0}h=(k[a+172>>2]|0)+(b<<3)|0;n=k[h>>2]|0;i=n+d|0;if(((n|0)==(n|0)?(((n|0)<0)<<31>>31|0)==(k[h+4>>2]|0):0)?(h=k[a+616>>2]|0,(h|0)>=(n|0)):0){if((n|d|0)<0|(i|0)>(h|0)){p=h-n|0;q=13}}else{p=0;q=13}if((q|0)==13?(p|0)!=(d|0):0){q=k[a+628>>2]|0;k[g>>2]=k[a+444>>2];k[g+4>>2]=b;b=g+8|0;k[b>>2]=p;k[b+4>>2]=((p|0)<0)<<31>>31;p=g+16|0;k[p>>2]=d;k[p+4>>2]=((d|0)<0)<<31>>31;vc(q,e,138627,g);j=-1;r=f;return j|0}qe(c,(k[a+612>>2]|0)+n|0,d);j=d;r=f;return j|0}function Hd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;f=r;r=r+80|0;g=f+40|0;h=f+16|0;i=f;if(!(gc(a)|0)){j=-1;r=f;return j|0}l=k[a+12>>2]|0;if(l&131072)Ja(137648,137683,684,138417);if(!(l&2048)){l=a+628|0;m=a+172|0;n=(k[m>>2]|0)+(b<<3)|0;o=xb[k[a+640>>2]&63](k[l>>2]|0,k[n>>2]|0,k[n+4>>2]|0,0)|0;n=(k[m>>2]|0)+(b<<3)|0;if(!((o|0)==(k[n>>2]|0)?(L|0)==(k[n+4>>2]|0):0)){n=k[l>>2]|0;o=k[a+488>>2]|0;k[i>>2]=k[a+444>>2];k[i+4>>2]=o;k[i+8>>2]=b;vc(n,e,138434,i);j=-1;r=f;return j|0}i=nb[k[a+632>>2]&63](k[l>>2]|0,c,d)|0;if((i|0)==(d|0)){j=d;r=f;return j|0}n=k[l>>2]|0;l=k[a+488>>2]|0;k[h>>2]=k[a+444>>2];k[h+4>>2]=l;l=h+8|0;k[l>>2]=i;k[l+4>>2]=((i|0)<0)<<31>>31;i=h+16|0;k[i>>2]=d;k[i+4>>2]=((d|0)<0)<<31>>31;vc(n,e,138475,h);j=-1;r=f;return j|0}h=(k[a+172>>2]|0)+(b<<3)|0;n=k[h>>2]|0;i=n+d|0;if(((n|0)==(n|0)?(((n|0)<0)<<31>>31|0)==(k[h+4>>2]|0):0)?(h=k[a+616>>2]|0,(h|0)>=(n|0)):0){if((n|d|0)<0|(i|0)>(h|0)){p=h-n|0;q=13}}else{p=0;q=13}if((q|0)==13?(p|0)!=(d|0):0){q=k[a+628>>2]|0;h=k[a+488>>2]|0;k[g>>2]=k[a+444>>2];k[g+4>>2]=h;k[g+8>>2]=b;b=g+16|0;k[b>>2]=p;k[b+4>>2]=((p|0)<0)<<31>>31;p=g+24|0;k[p>>2]=d;k[p+4>>2]=((d|0)<0)<<31>>31;vc(q,e,138537,g);j=-1;r=f;return j|0}qe(c,(k[a+612>>2]|0)+n|0,d);j=d;r=f;return j|0}function Id(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d;f=(b>>>0)/((k[a+100>>2]|0)>>>0)|0;if((j[a+126>>1]|0)!=2){g=f;r=d;return g|0}b=c&65535;h=j[a+98>>1]|0;if((h&65535)>(c&65535)){g=(ha(k[a+164>>2]|0,b)|0)+f|0;r=d;return g|0}else{f=k[a+628>>2]|0;k[e>>2]=b;k[e+4>>2]=h&65535;vc(f,138696,139539,e);g=0;r=d;return g|0}return 0}function Jd(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+100>>2]|0;if((b|0)!=-1){c=k[a+60>>2]|0;if(c>>>0<(0-b|0)>>>0)d=((b+-1+c|0)>>>0)/(b>>>0)|0;else d=0}else d=1;if((j[a+126>>1]|0)!=2){e=d;return e|0}e=Be(a,d,m[a+98>>1]|0,138713)|0;return e|0}function Kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=c+24|0;if((b|0)==-1)h=k[a+60>>2]|0;else h=b;if(((j[a+126>>1]|0)==1?(j[a+90>>1]|0)==6:0)?(k[a+12>>2]&16384|0)==0:0){if((j[a+98>>1]|0)!=3){vc(k[a+628>>2]|0,138732,138749,f);i=0;l=0;L=i;r=c;return l|0}f=g+2|0;k[e>>2]=g;k[e+4>>2]=f;Ge(a,530,e)|0;e=j[g>>1]|0;a:do switch(e<<16>>16){case 4:case 2:case 1:{g=j[f>>1]|0;switch(g<<16>>16){case 4:case 2:case 1:break;default:{n=g;break a}}b=e&65535;o=g&65535;g=(ha(o,b)|0)+2|0;p=k[a+56>>2]|0;if(p>>>0<(0-b|0)>>>0){q=((b+-1+p|0)>>>0)/(b>>>0)|0;s=0}else{q=0;s=0}if(h>>>0<(0-o|0)>>>0){t=((h+-1+o|0)>>>0)/(o>>>0)|0;u=0}else{t=0;u=0}o=Ce(a,q,s,g&65535,0,138732)|0;g=L;b=a+84|0;p=Ce(a,o,g,m[b>>1]|0,0,138732)|0;v=Ce(a,sr(ur(Ce(a,o,g,m[b>>1]|0,0,138732)|0,L|0,3)|0,L|0,((p&7|0)!=0|0!=0)&1|0,0)|0,L,t,u,138732)|0;i=L;l=v;L=i;r=c;return l|0}default:n=j[f>>1]|0}while(0);f=k[a+628>>2]|0;k[d>>2]=e&65535;k[d+4>>2]=n&65535;vc(f,138732,139754,d);i=0;l=0;L=i;r=c;return l|0}d=Ld(a)|0;f=Ce(a,h,0,d,L,138732)|0;i=L;l=f;L=i;r=c;return l|0}function Ld(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;f=b+20|0;a:do if((j[a+126>>1]|0)==1){g=j[a+98>>1]|0;if(g<<16>>16==3?(j[a+90>>1]|0)==6:0)if(!(k[a+12>>2]&16384)){h=f+2|0;k[e>>2]=f;k[e+4>>2]=h;Ge(a,530,e)|0;i=j[f>>1]|0;b:do switch(i<<16>>16){case 4:case 2:case 1:{l=j[h>>1]|0;switch(l<<16>>16){case 4:case 2:case 1:break;default:break b}n=i&65535;o=(ha(l&65535,n)|0)+2|0;l=k[a+56>>2]|0;if(l>>>0<(0-n|0)>>>0){p=((n+-1+l|0)>>>0)/(n>>>0)|0;q=0}else{p=0;q=0}s=Er(ur(sr(Ce(a,Ce(a,p,q,o&65535,0,138782)|0,L,m[a+84>>1]|0,0,138782)|0,L|0,7,0)|0,L|0,3)|0,L|0,m[h>>1]|0,0)|0;t=L;break a;break}default:{}}while(0);vc(k[a+628>>2]|0,138782,138801,d);u=0;v=0;L=u;r=b;return v|0}else w=3;else w=g;h=Ce(a,k[a+56>>2]|0,0,w&65535,0,138782)|0;i=Ce(a,h,L,m[a+84>>1]|0,0,138782)|0;h=sr(i|0,L|0,7,0)|0;i=ur(h|0,L|0,3)|0;s=i;t=L}else{i=Ce(a,k[a+56>>2]|0,0,m[a+84>>1]|0,0,138782)|0;h=sr(i|0,L|0,7,0)|0;i=ur(h|0,L|0,3)|0;s=i;t=L}while(0);if(!((s|0)==0&(t|0)==0)){u=t;v=s;L=u;r=b;return v|0}vc(k[a+628>>2]|0,138782,138827,c);u=0;v=0;L=u;r=b;return v|0}function Md(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=Kd(a,b)|0;if((d|0)==(d|0)&(((d|0)<0)<<31>>31|0)==(L|0)){e=d;r=c;return e|0}vc(k[a+628>>2]|0,138858,139721,c);e=0;r=c;return e|0}function Nd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=k[a+100>>2]|0;d=k[a+60>>2]|0;e=Kd(a,c>>>0>d>>>0?d:c)|0;if((e|0)==(e|0)&(((e|0)<0)<<31>>31|0)==(L|0)){f=e;r=b;return f|0}vc(k[a+628>>2]|0,138873,139721,b);f=0;r=b;return f|0}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b|0)>=1){c=b;return c|0}b=Ld(a)|0;a=L;d=(b|0)==0&(a|0)==0;e=Er(8192,0,(d?1:b)|0,(d?0:a)|0)|0;c=(e|0)==0&(L|0)==0?1:e;return c|0}function Pd(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=Ld(a)|0;if((c|0)==(c|0)&(((c|0)<0)<<31>>31|0)==(L|0)){d=c;r=b;return d|0}vc(k[a+628>>2]|0,138887,138904,b);d=0;r=b;return d|0}function Qd(a){a=a|0;var b=0,c=0;b=a+1|0;c=i[b>>0]|0;i[b>>0]=i[a>>0]|0;i[a>>0]=c;return}function Rd(a){a=a|0;var b=0,c=0,d=0;b=a+3|0;c=i[b>>0]|0;i[b>>0]=i[a>>0]|0;i[a>>0]=c;c=a+2|0;b=i[c>>0]|0;d=a+1|0;i[c>>0]=i[d>>0]|0;i[d>>0]=b;return}function Sd(a){a=a|0;var b=0,c=0,d=0;b=a+7|0;c=i[b>>0]|0;i[b>>0]=i[a>>0]|0;i[a>>0]=c;c=a+6|0;b=i[c>>0]|0;d=a+1|0;i[c>>0]=i[d>>0]|0;i[d>>0]=b;b=a+5|0;d=i[b>>0]|0;c=a+2|0;i[b>>0]=i[c>>0]|0;i[c>>0]=d;d=a+4|0;c=i[d>>0]|0;b=a+3|0;i[d>>0]=i[b>>0]|0;i[b>>0]=c;return}function Td(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+1|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;if((c|0)>1){c=c+-1|0;d=d+2|0}else break}return}function Ud(a,b){a=a|0;b=b|0;var c=0,d=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+2|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;if((c|0)>1){c=c+-1|0;d=d+3|0}else break}return}function Vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+3|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;b=d+2|0;a=i[b>>0]|0;e=d+1|0;i[b>>0]=i[e>>0]|0;i[e>>0]=a;if((c|0)>1){c=c+-1|0;d=d+4|0}else break}return}function Wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+7|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;b=d+6|0;a=i[b>>0]|0;e=d+1|0;i[b>>0]=i[e>>0]|0;i[e>>0]=a;a=d+5|0;e=i[a>>0]|0;b=d+2|0;i[a>>0]=i[b>>0]|0;i[b>>0]=e;e=d+4|0;b=i[e>>0]|0;a=d+3|0;i[e>>0]=i[a>>0]|0;i[a>>0]=b;if((c|0)>1){c=c+-1|0;d=d+8|0}else break}return}function Xd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+3|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;b=d+2|0;a=i[b>>0]|0;e=d+1|0;i[b>>0]=i[e>>0]|0;i[e>>0]=a;if((c|0)>1){c=c+-1|0;d=d+4|0}else break}return}function Yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if((b|0)>0){c=b;d=a}else return;while(1){a=d+7|0;b=i[a>>0]|0;i[a>>0]=i[d>>0]|0;i[d>>0]=b;b=d+6|0;a=i[b>>0]|0;e=d+1|0;i[b>>0]=i[e>>0]|0;i[e>>0]=a;a=d+5|0;e=i[a>>0]|0;b=d+2|0;i[a>>0]=i[b>>0]|0;i[b>>0]=e;e=d+4|0;b=i[e>>0]|0;a=d+3|0;i[e>>0]=i[a>>0]|0;i[a>>0]=b;if((c|0)>1){c=c+-1|0;d=d+8|0}else break}return}function Zd(a){a=a|0;return ((a|0)!=0?138932:139188)|0}function _d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,k=0,m=0;if((b|0)>8){c=b+-9&-8;d=c+8|0;e=a;f=b;while(1){i[e>>0]=i[138932+(l[e>>0]|0)>>0]|0;g=e+1|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+2|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+3|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+4|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+5|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+6|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;g=e+7|0;i[g>>0]=i[138932+(l[g>>0]|0)>>0]|0;f=f+-8|0;if((f|0)<=8)break;else e=e+8|0}h=b+-8-c|0;j=a+d|0}else{h=b;j=a}if((h|0)>0){k=j;m=h}else return;while(1){i[k>>0]=i[138932+(l[k>>0]|0)>>0]|0;if((m|0)>1){k=k+1|0;m=m+-1|0}else break}return}function $d(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;f=k[a+68>>2]|0;g=k[a+72>>2]|0;h=k[a+76>>2]|0;i=k[a+64>>2]|0;l=(i|0)==1?0:d;if((f|0)==-1)m=k[a+56>>2]|0;else m=f;if((g|0)==-1)n=k[a+60>>2]|0;else n=g;g=(h|0)==-1?i:h;if(!((m|0)!=0&(n|0)!=0&(g|0)!=0)){o=1;return o|0}h=k[a+56>>2]|0;if(h>>>0<(0-m|0)>>>0)p=((m+-1+h|0)>>>0)/(m>>>0)|0;else p=0;h=k[a+60>>2]|0;if(h>>>0<(0-n|0)>>>0)q=((n+-1+h|0)>>>0)/(n>>>0)|0;else q=0;if(i>>>0<(0-g|0)>>>0)r=((g+-1+i|0)>>>0)/(g>>>0)|0;else r=0;i=ha(q,p)|0;if((j[a+126>>1]|0)==2){o=((b>>>0)/(m>>>0)|0)+(ha((c>>>0)/(n>>>0)|0,p)|0)+(ha(((l>>>0)/(g>>>0)|0)+(ha(r,e&65535)|0)|0,i)|0)|0;return o|0}else{o=(ha((c>>>0)/(n>>>0)|0,p)|0)+(ha((l>>>0)/(g>>>0)|0,i)|0)+((b>>>0)/(m>>>0)|0)|0;return o|0}return 0}function ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0;f=r;r=r+32|0;g=f+24|0;h=f+16|0;i=f+8|0;l=f;m=k[a+56>>2]|0;if(m>>>0<=b>>>0){n=k[a+628>>2]|0;o=k[a>>2]|0;k[l>>2]=b;k[l+4>>2]=m+-1;vc(n,o,139444,l);p=0;r=f;return p|0}l=k[a+60>>2]|0;if(l>>>0<=c>>>0){o=k[a+628>>2]|0;n=k[a>>2]|0;k[i>>2]=c;k[i+4>>2]=l+-1;vc(o,n,139475,i);p=0;r=f;return p|0}i=k[a+64>>2]|0;if(i>>>0<=d>>>0){n=k[a+628>>2]|0;o=k[a>>2]|0;k[h>>2]=d;k[h+4>>2]=i+-1;vc(n,o,139506,h);p=0;r=f;return p|0}if((j[a+126>>1]|0)!=2){p=1;r=f;return p|0}h=j[a+98>>1]|0;if((h&65535)>(e&65535)){p=1;r=f;return p|0}o=k[a+628>>2]|0;n=k[a>>2]|0;k[g>>2]=e&65535;k[g+4>>2]=(h&65535)+-1;vc(o,n,139539,g);p=0;r=f;return p|0}function be(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0;b=k[a+68>>2]|0;c=k[a+72>>2]|0;d=k[a+76>>2]|0;if((b|0)==-1)e=k[a+56>>2]|0;else e=b;if((c|0)==-1)f=k[a+60>>2]|0;else f=c;if((d|0)==-1)g=k[a+64>>2]|0;else g=d;if((e|0)==0|(f|0)==0|(g|0)==0)h=0;else{d=k[a+56>>2]|0;if(d>>>0<(0-e|0)>>>0)i=((e+-1+d|0)>>>0)/(e>>>0)|0;else i=0;e=k[a+60>>2]|0;if(e>>>0<(0-f|0)>>>0)l=((f+-1+e|0)>>>0)/(f>>>0)|0;else l=0;f=Be(a,i,l,139573)|0;l=k[a+64>>2]|0;if(l>>>0<(0-g|0)>>>0)n=((g+-1+l|0)>>>0)/(g>>>0)|0;else n=0;h=Be(a,f,n,139573)|0}if((j[a+126>>1]|0)!=2){o=h;return o|0}o=Be(a,h,m[a+98>>1]|0,139573)|0;return o|0}function ce(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0;b=r;r=r+32|0;c=b+24|0;d=b+16|0;if(!(k[a+72>>2]|0)){vc(k[a+628>>2]|0,139591,139609,b);e=0;f=0;L=e;r=b;return f|0}g=k[a+68>>2]|0;if(!g){vc(k[a+628>>2]|0,139591,139629,b+8|0);e=0;f=0;L=e;r=b;return f|0}h=Ce(a,m[a+84>>1]|0,0,g,0,139648)|0;g=L;do if((j[a+126>>1]|0)==1){i=j[a+98>>1]|0;if(i<<16>>16){l=Ce(a,h,g,i&65535,0,139648)|0;n=l;o=L;break}vc(k[a+628>>2]|0,139591,139664,d);e=0;f=0;L=e;r=b;return f|0}else{n=h;o=g}while(0);g=ur(n|0,o|0,3)|0;o=sr(((n&7|0)!=0|0!=0)&1|0,0,g|0,L|0)|0;g=L;if(!((o|0)==0&(g|0)==0)){e=g;f=o;L=e;r=b;return f|0}vc(k[a+628>>2]|0,139591,139690,c);e=0;f=0;L=e;r=b;return f|0}function de(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=ce(a)|0;if((c|0)==(c|0)&(((c|0)<0)<<31>>31|0)==(L|0)){d=c;r=b;return d|0}vc(k[a+628>>2]|0,139648,139721,b);d=0;r=b;return d|0}function ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;c=r;r=r+32|0;d=c+8|0;e=c;f=c+16|0;if(!(k[a+72>>2]|0)){g=0;h=0;L=g;r=c;return h|0}i=a+68|0;if(!(k[i>>2]|0)){g=0;h=0;L=g;r=c;return h|0}if(!(k[a+76>>2]|0)){g=0;h=0;L=g;r=c;return h|0}if((((j[a+126>>1]|0)==1?(j[a+90>>1]|0)==6:0)?(j[a+98>>1]|0)==3:0)?(k[a+12>>2]&16384|0)==0:0){l=f+2|0;k[e>>2]=f;k[e+4>>2]=l;Ge(a,530,e)|0;e=j[f>>1]|0;a:do switch(e<<16>>16){case 4:case 2:case 1:{f=j[l>>1]|0;switch(f<<16>>16){case 4:case 2:case 1:break;default:{n=f;break a}}o=e&65535;p=f&65535;f=(ha(p,o)|0)+2|0;q=k[i>>2]|0;if(q>>>0<(0-o|0)>>>0){s=((o+-1+q|0)>>>0)/(o>>>0)|0;t=0}else{s=0;t=0}if(b>>>0<(0-p|0)>>>0){u=((b+-1+p|0)>>>0)/(p>>>0)|0;v=0}else{u=0;v=0}p=Ce(a,s,t,f&65535,0,139738)|0;f=L;o=a+84|0;q=Ce(a,p,f,m[o>>1]|0,0,139738)|0;w=Ce(a,sr(ur(Ce(a,p,f,m[o>>1]|0,0,139738)|0,L|0,3)|0,L|0,((q&7|0)!=0|0!=0)&1|0,0)|0,L,u,v,139738)|0;g=L;h=w;L=g;r=c;return h|0}default:n=j[l>>1]|0}while(0);l=k[a+628>>2]|0;k[d>>2]=e&65535;k[d+4>>2]=n&65535;vc(l,139738,139754,d);g=0;h=0;L=g;r=c;return h|0}d=ce(a)|0;l=Ce(a,b,0,d,L,139738)|0;g=L;h=l;L=g;r=c;return h|0}function fe(a){a=a|0;var b=0;b=ee(a,k[a+72>>2]|0)|0;return b|0}function ge(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=ee(a,k[a+72>>2]|0)|0;if((c|0)==(c|0)&(((c|0)<0)<<31>>31|0)==(L|0)){d=c;r=b;return d|0}vc(k[a+628>>2]|0,139788,139721,b);d=0;r=b;return d|0}function he(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=k[b>>2]|0;if((a|0)<1){k[b>>2]=256;d=256}else d=a;a=k[c>>2]|0;if((a|0)<1){k[c>>2]=256;e=256;f=k[b>>2]|0}else{e=a;f=d}if(!(f&15))g=e;else{k[b>>2]=f>>>0<4294967280?f+15&-16:0;g=k[c>>2]|0}if(!(g&15))return;k[c>>2]=g>>>0<4294967280?g+15&-16:0;return}function ie(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=k[1933]|0;if(d)vb[d&127](b,c,f);d=k[1932]|0;if(!d){r=e;return}Ab[d&31](a,b,c,f);r=e;return}function je(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+608|0;c=k[b>>2]|0;if((c|0)<=0){d=1;return d|0}e=a+12|0;f=k[e>>2]|0;if(!(f&1048576)){d=1;return d|0}g=a+588|0;if(!((m[a+94>>1]|0|256)&f)){_d(k[g>>2]|0,c);h=k[e>>2]|0;i=k[b>>2]|0}else{h=f;i=c}if(!(ke(a,k[((h&1024|0)==0?a+452|0:a+492|0)>>2]|0,k[g>>2]|0,i)|0)){d=0;return d|0}k[b>>2]=0;k[a+604>>2]=k[g>>2];d=1;return d|0}function ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=r;r=r+32|0;f=e+16|0;g=e+8|0;h=e;i=a+172|0;j=(k[i>>2]|0)+(b<<3)|0;l=k[j>>2]|0;m=k[j+4>>2]|0;j=(l|0)==0&(m|0)==0;if(!j?(n=a+456|0,o=n,p=k[o>>2]|0,q=k[o+4>>2]|0,!((p|0)==0&(q|0)==0)):0){s=n;t=p;u=q;v=-1;w=-1}else{if(!(k[a+168>>2]|0))Ja(139801,139820,690,139832);q=a+176|0;p=(k[q>>2]|0)+(b<<3)|0;n=k[p>>2]|0;o=k[p+4>>2]|0;if(!((n|0)==0&(o|0)==0)?(p=((d|0)<0)<<31>>31,!(o>>>0<p>>>0|(o|0)==(p|0)&n>>>0<d>>>0|j)):0){j=a+628|0;n=xb[k[a+640>>2]&63](k[j>>2]|0,l,m,0)|0;m=L;l=(k[i>>2]|0)+(b<<3)|0;if((n|0)==(k[l>>2]|0)?(m|0)==(k[l+4>>2]|0):0){x=n;y=m}else{m=k[j>>2]|0;k[h>>2]=k[a+444>>2];vc(m,139832,139850,h);z=0;r=e;return z|0}}else{h=xb[k[a+640>>2]&63](k[a+628>>2]|0,0,0,2)|0;m=L;j=(k[i>>2]|0)+(b<<3)|0;k[j>>2]=h;k[j+4>>2]=m;j=a+12|0;k[j>>2]=k[j>>2]|2097152;x=h;y=m}m=a+456|0;h=m;k[h>>2]=x;k[h+4>>2]=y;y=(k[q>>2]|0)+(b<<3)|0;q=y;h=k[q>>2]|0;x=k[q+4>>2]|0;q=y;k[q>>2]=0;k[q+4>>2]=0;q=m;s=m;t=k[q>>2]|0;u=k[q+4>>2]|0;v=h;w=x}x=((d|0)<0)<<31>>31;h=sr(t|0,u|0,d|0,x|0)|0;q=a+12|0;m=(k[q>>2]&524288|0)==0;y=m?h:h;h=m?0:L;if(h>>>0<u>>>0|(h|0)==(u|0)&y>>>0<t>>>0|(h>>>0<x>>>0|(h|0)==(x|0)&y>>>0<d>>>0)){vc(k[a+628>>2]|0,139832,142108,g);z=0;r=e;return z|0}g=a+628|0;if((nb[k[a+636>>2]&63](k[g>>2]|0,c,d)|0)!=(d|0)){c=k[g>>2]|0;k[f>>2]=k[a+444>>2];vc(c,139832,139877,f);z=0;r=e;return z|0}f=s;k[f>>2]=y;k[f+4>>2]=h;h=(k[a+176>>2]|0)+(b<<3)|0;b=h;a=sr(k[b>>2]|0,k[b+4>>2]|0,d|0,x|0)|0;x=L;d=h;k[d>>2]=a;k[d+4>>2]=x;if((a|0)==(v|0)&(x|0)==(w|0)){z=1;r=e;return z|0}k[q>>2]=k[q>>2]|2097152;z=1;r=e;return z|0}function le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+32|0;d=c+16|0;e=c+8|0;f=c;g=od(b,139905)|0;if((g|0)==-1){h=0;r=c;return h|0}k[f>>2]=438;i=Pp(a,g,f)|0;if((i|0)>=0){f=pd(a,b,i,8,9,5,2,3,10,2)|0;if(!f){Tq(i)|0;h=0;r=c;return h|0}else{k[f+4>>2]=i;h=f;r=c;return h|0}}f=Np()|0;i=k[f>>2]|0;if((i|0)>0?(Op(i)|0)!=0:0){i=Op(k[f>>2]|0)|0;k[e>>2]=a;k[e+4>>2]=i;vc(0,139905,139914,e);h=0;r=c;return h|0}k[d>>2]=a;vc(0,139905,139921,d);h=0;r=c;return h|0}function me(a){a=a|0;var b=0;if(!a)b=0;else b=jr(a)|0;return b|0}function ne(a){a=a|0;kr(a);return}function oe(a,b){a=a|0;b=b|0;return lr(a,b)|0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;qr(a|0,b&255|0,c|0)|0;return}function qe(a,b,c){a=a|0;b=b|0;c=c|0;wr(a|0,b|0,c|0)|0;return}function re(a,b,c){a=a|0;b=b|0;c=c|0;return Lq(a,b,c)|0}function se(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a;if(!c){e=-1;return e|0}else f=0;while(1){a=c-f|0;g=Vq(d,b+f|0,(a|0)<0?2147483647:a)|0;if((g|0)<1){h=g;i=f;break}a=g+f|0;if(a>>>0<c>>>0)f=a;else{h=g;i=a;break}}e=(h|0)<0?-1:i;return e|0}function te(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=a;if(!c){e=-1;return e|0}else f=0;while(1){a=c-f|0;g=Wq(d,b+f|0,(a|0)<0?2147483647:a)|0;if((g|0)<1){h=g;i=f;break}a=g+f|0;if(a>>>0<c>>>0)f=a;else{h=g;i=a;break}}e=(h|0)<0?-1:i;return e|0}function ue(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if((b|0)==(b|0)&(((b|0)<0)<<31>>31|0)==(c|0)){c=Uq(a,b,d)|0;e=((c|0)<0)<<31>>31;f=c;L=e;return f|0}else{c=Np()|0;k[c>>2]=22;e=-1;f=-1;L=e;return f|0}return 0}function ve(a){a=a|0;return Tq(a)|0}function we(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+80|0;c=b;d=(jq(a,c)|0)<0;a=k[c+36>>2]|0;L=d?0:((a|0)<0)<<31>>31;r=b;return (d?0:a)|0}function xe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+80|0;e=d;f=a;a=(jq(f,e)|0)<0;g=k[e+36>>2]|0;e=a?0:g;h=a?0:((g|0)<0)<<31>>31;if(!((e|0)==(e|0)&(((e|0)<0)<<31>>31|0)==(h|0))){i=0;r=d;return i|0}g=cq(0,e,1,1,f,0)|0;k[b>>2]=g;if((g|0)==(-1|0)){i=0;r=d;return i|0}g=c;k[g>>2]=e;k[g+4>>2]=h;i=1;r=d;return i|0}function ye(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;dq(b,c)|0;return}function ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;f=k[30710]|0;if(a){k[e>>2]=a;wq(f,139937,e)|0}zq(139945,9,1,f)|0;Dq(f,b,c)|0;zq(139942,2,1,f)|0;r=d;return}function Ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;f=k[30710]|0;if(a){k[e>>2]=a;wq(f,139937,e)|0}Dq(f,b,c)|0;zq(139942,2,1,f)|0;r=d;return}function Be(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=r;r=r+16|0;f=e;g=ha(c,b)|0;if((c|0)!=0?((g>>>0)/(c>>>0)|0|0)!=(b|0):0){b=k[a+628>>2]|0;k[f>>2]=d;vc(b,d,139955,f);h=0}else h=g;r=e;return h|0}function Ce(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0;g=r;r=r+16|0;h=g;i=Dr(d|0,e|0,b|0,c|0)|0;j=L;if(!((d|0)==0&(e|0)==0)?(l=Er(i|0,j|0,d|0,e|0)|0,!((l|0)==(b|0)&(L|0)==(c|0))):0){c=k[a+628>>2]|0;k[h>>2]=f;vc(c,f,139955,h);m=0;n=0}else{m=j;n=i}L=m;r=g;return n|0}function De(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=r;r=r+16|0;g=f;if((c|0)!=0&(d|0)!=0?(h=oe(b,ha(d,c)|0)|0,(h|0)!=0):0){i=h;r=f;return i|0}h=k[a+628>>2]|0;b=k[a>>2]|0;k[g>>2]=e;k[g+4>>2]=c;k[g+8>>2]=d;vc(h,b,139978,g);i=0;r=f;return i|0}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=r;r=r+16|0;f=e;if((b|0)!=0&(c|0)!=0?(g=oe(0,ha(c,b)|0)|0,(g|0)!=0):0){h=g;r=e;return h|0}g=k[a+628>>2]|0;i=k[a>>2]|0;k[f>>2]=d;k[f+4>>2]=b;k[f+8>>2]=c;vc(g,i,139978,f);h=0;r=e;return h|0}
84
+function Qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0;d=r;r=r+288|0;e=d+264|0;f=d+240|0;g=d+216|0;h=d+200|0;i=d+184|0;j=d+168|0;m=d+152|0;n=d+136|0;o=d+120|0;p=d+104|0;q=d+80|0;s=d+56|0;t=d+40|0;u=d+24|0;v=d+8|0;w=k[a+576>>2]|0;x=k[w+12>>2]|0;y=k[w+44>>2]|0;z=w+8|0;if((c|0)%(k[z>>2]|0)|0){vc(k[a+628>>2]|0,144240,153793,d);A=-1;r=d;return A|0}B=w+48|0;C=k[B>>2]|0;D=w+52|0;E=k[D>>2]|0;F=w+56|0;G=k[F>>2]|0;H=a+604|0;I=k[H>>2]|0;J=a+608|0;K=k[J>>2]|0;L=I+K|0;a:do if((c|0)>0){M=w+72|0;N=w+68|0;O=(x|0)>0;P=w+92|0;Q=a+628|0;R=a+12|0;S=a+492|0;T=a+452|0;U=w+60|0;V=b;W=c;X=k[M>>2]|0;Y=C;Z=E;_=G;$=I;b:while(1){c:do if(!_){aa=Y;ba=Z;ca=$;while(1){do if((ba|0)<11){if(ca>>>0>=L>>>0)if(!ba){da=V;ea=X;fa=aa;ga=0;ha=ca;ia=186;break b}else{ja=aa;ka=11;la=ca;break}ma=ca+1|0;na=(l[y+(l[ca>>0]|0)>>0]|0)<<ba|aa;oa=ba+8|0;if((oa|0)<11)if(ma>>>0<L>>>0){ja=(l[y+(l[ma>>0]|0)>>0]|0)<<oa|na;ka=ba+16|0;la=ca+2|0}else{ja=na;ka=11;la=ma}else{ja=na;ka=oa;la=ma}}else{ja=aa;ka=ba;la=ca}while(0);if(!(ja&2047)){pa=ja;qa=ka;ra=la;break c}aa=ja>>>1;ba=ka+-1|0;ca=la}}else{pa=Y;qa=Z;ra=$}while(0);while(1){do if((qa|0)<8)if(ra>>>0>=L>>>0)if(!qa){da=V;ea=X;fa=pa;ga=_;ha=ra;ia=186;break b}else{sa=pa;ta=8;ua=ra;break}else{sa=(l[y+(l[ra>>0]|0)>>0]|0)<<qa|pa;ta=qa+8|0;ua=ra+1|0;break}else{sa=pa;ta=qa;ua=ra}while(0);if(sa&255){va=sa;wa=ta;xa=ua;break}pa=sa>>>8;qa=ta+-8|0;ra=ua}ca=va;ba=wa;while(1){aa=ba+-1|0;ma=ca>>>1;if(!(ca&1)){ca=ma;ba=aa}else{ya=aa;za=ma;Aa=ba;break}}do if((Aa|0)<2)if(xa>>>0>=L>>>0)if(!ya){da=V;ea=X;fa=za;ga=0;ha=xa;ia=186;break b}else{Ba=za;Ca=1;Da=xa;break}else{Ba=(l[y+(l[xa>>0]|0)>>0]|0)<<ya|za;Ca=Aa+7|0;Da=xa+1|0;break}else{Ba=za;Ca=ya;Da=xa}while(0);ba=Ca+-1|0;ca=Ba>>>1;ma=k[N>>2]|0;aa=ma+4|0;oa=k[ma>>2]|0;do if(!(Ba&1)){d:do if(O){ma=X;na=ca;Ea=ba;Fa=0;Ga=0;Ha=oa;Ia=Da;Ja=X;Ka=aa;e:while(1){La=(Ja|0)==(X|0);f:do if(La){Ma=na;Na=Ea;Oa=0;Pa=Fa;Qa=Ga;Ra=Ha;Sa=Ia;Ta=Ka;while(1){do if((Na|0)<7)if(Sa>>>0>=L>>>0)if(!Na){Ua=V;Va=X;Wa=Ma;Xa=0;Ya=Oa;Za=Qa;_a=Sa;$a=X;ia=154;break b}else{ab=Ma;bb=7;cb=Sa;break}else{ab=(l[y+(l[Sa>>0]|0)>>0]|0)<<Na|Ma;bb=Na+8|0;cb=Sa+1|0;break}else{ab=Ma;bb=Na;cb=Sa}while(0);db=ab&127;eb=l[8280+(db<<3)+1>>0]|0;fb=bb-eb|0;gb=ab>>>eb;switch(l[8280+(db<<3)>>0]|0|0){case 6:{hb=fb;ib=gb;jb=Oa;kb=Qa;lb=cb;mb=X;ia=143;break e;break}case 12:{nb=eb;ob=fb;pb=gb;qb=bb;rb=Oa;sb=Qa;tb=cb;ub=X;ia=144;break e;break}case 2:{vb=fb;wb=gb;xb=Oa;yb=Qa;zb=Ra;Bb=cb;Cb=Ta;ia=88;break f;break}case 3:{Db=fb;Eb=gb;Fb=Oa;Gb=Qa;Hb=Pa;Ib=Ra;Jb=cb;Kb=Ta;ia=128;break f;break}case 4:{Lb=db;Mb=fb;Nb=gb;Ob=Oa;Pb=Qa;Qb=Pa;Rb=Ra;Sb=cb;Tb=Ta;ia=132;break f;break}case 5:{Ub=db;Vb=fb;Wb=gb;Xb=Oa;Yb=Qa;Zb=Ra;_b=cb;$b=Ta;ia=136;break f;break}case 1:break;default:{ac=gb;bc=fb;cc=Oa;dc=Qa;ec=cb;fc=X;ia=151;break e}}db=(k[Ta>>2]|0)+Ra|0;eb=Pa+Oa+db|0;if((x|0)>(db|0)){Ma=gb;Na=fb;Oa=eb;Pa=0-db|0;Qa=db;Ra=db+(k[Ta+4>>2]|0)|0;Sa=cb;Ta=Ta+8|0}else{gc=gb;hc=fb;ic=eb;jc=db;kc=cb;lc=X;ia=165;break e}}}else{Ta=na;Sa=Ea;Ra=0;Qa=Fa;Pa=Ga;Oa=Ha;Na=Ia;Ma=Ka;while(1){do if((Sa|0)<7)if(Na>>>0>=L>>>0)if(!Sa){Ua=V;Va=X;Wa=Ta;Xa=0;Ya=Ra;Za=Pa;_a=Na;$a=Ja;ia=154;break b}else{mc=Ta;nc=7;oc=Na;break}else{mc=(l[y+(l[Na>>0]|0)>>0]|0)<<Sa|Ta;nc=Sa+8|0;oc=Na+1|0;break}else{mc=Ta;nc=Sa;oc=Na}while(0);db=mc&127;eb=l[8280+(db<<3)+1>>0]|0;fb=nc-eb|0;gb=mc>>>eb;switch(l[8280+(db<<3)>>0]|0|0){case 6:{hb=fb;ib=gb;jb=Ra;kb=Pa;lb=oc;mb=Ja;ia=143;break e;break}case 12:{nb=eb;ob=fb;pb=gb;qb=nc;rb=Ra;sb=Pa;tb=oc;ub=Ja;ia=144;break e;break}case 2:{vb=fb;wb=gb;xb=Ra;yb=Pa;zb=Oa;Bb=oc;Cb=Ma;ia=88;break f;break}case 3:{Db=fb;Eb=gb;Fb=Ra;Gb=Pa;Hb=Qa;Ib=Oa;Jb=oc;Kb=Ma;ia=128;break f;break}case 4:{Lb=db;Mb=fb;Nb=gb;Ob=Ra;Pb=Pa;Qb=Qa;Rb=Oa;Sb=oc;Tb=Ma;ia=132;break f;break}case 5:{Ub=db;Vb=fb;Wb=gb;Xb=Ra;Yb=Pa;Zb=Oa;_b=oc;$b=Ma;ia=136;break f;break}case 1:break;default:{ac=gb;bc=fb;cc=Ra;dc=Pa;ec=oc;fc=Ja;ia=151;break e}}if((Oa|0)<=(Pa|0)&(Oa|0)<(x|0)){db=Oa;eb=Ma;while(1){pc=(k[eb>>2]|0)+db+(k[eb+4>>2]|0)|0;qc=eb+8|0;if((pc|0)<=(Pa|0)&(pc|0)<(x|0)){db=pc;eb=qc}else{rc=pc;sc=qc;break}}}else{rc=Oa;sc=Ma}eb=(k[sc>>2]|0)+rc|0;db=Qa+Ra+eb|0;if((x|0)>(eb|0)){Ta=gb;Sa=fb;Ra=db;Qa=0-eb|0;Pa=eb;Oa=eb+(k[sc+4>>2]|0)|0;Na=oc;Ma=sc+8|0}else{gc=gb;hc=fb;ic=db;jc=eb;kc=oc;lc=Ja;ia=165;break e}}}while(0);if((ia|0)==88){ia=0;if(!(Ja-ma&4)){Ma=wb;Na=vb;Oa=xb;Pa=yb;Qa=Bb;g:while(1){do if((Na|0)<12){if(Qa>>>0>=L>>>0)if(!Na){Ua=V;Va=X;Wa=Ma;Xa=0;Ya=Oa;Za=Pa;_a=Qa;$a=Ja;ia=154;break b}else{tc=Ma;uc=12;wc=Qa;break}Ra=Qa+1|0;Sa=(l[y+(l[Qa>>0]|0)>>0]|0)<<Na|Ma;Ta=Na+8|0;if((Ta|0)<12){if(Ra>>>0>=L>>>0){tc=Sa;uc=12;wc=Ra;break}tc=(l[y+(l[Ra>>0]|0)>>0]|0)<<Ta|Sa;uc=Na+16|0;wc=Qa+2|0}else{tc=Sa;uc=Ta;wc=Ra}}else{tc=Ma;uc=Na;wc=Qa}while(0);Ra=tc&4095;Ta=l[9304+(Ra<<3)+1>>0]|0;Sa=uc-Ta|0;eb=tc>>>Ta;switch(l[9304+(Ra<<3)>>0]|0|0){case 7:{xc=Ra;yc=Sa;zc=eb;Ac=Oa;Bc=Pa;Cc=wc;break g;break}case 11:case 9:break;default:{Dc=eb;Ec=Sa;Fc=Oa;Gc=Pa;Hc=wc;Ic=Ja;ia=153;break e}}Ta=k[9304+(Ra<<3)+4>>2]|0;Ma=eb;Na=Sa;Oa=Ta+Oa|0;Pa=Ta+Pa|0;Qa=wc}Qa=k[9304+(xc<<3)+4>>2]|0;Pa=Ja+4|0;k[Ja>>2]=Qa+Ac;Oa=zc;Na=yc;Ma=0;Ta=Qa+Bc|0;Qa=Cc;h:while(1){do if((Na|0)<13){if(Qa>>>0>=L>>>0)if(!Na){Ua=V;Va=X;Wa=Oa;Xa=0;Ya=Ma;Za=Ta;_a=Qa;$a=Pa;ia=154;break b}else{Jc=Oa;Kc=13;Lc=Qa;break}Sa=Qa+1|0;eb=(l[y+(l[Qa>>0]|0)>>0]|0)<<Na|Oa;Ra=Na+8|0;if((Ra|0)<13){if(Sa>>>0>=L>>>0){Jc=eb;Kc=13;Lc=Sa;break}Jc=(l[y+(l[Sa>>0]|0)>>0]|0)<<Ra|eb;Kc=Na+16|0;Lc=Qa+2|0}else{Jc=eb;Kc=Ra;Lc=Sa}}else{Jc=Oa;Kc=Na;Lc=Qa}while(0);Sa=Jc&8191;Ra=l[42072+(Sa<<3)+1>>0]|0;eb=Kc-Ra|0;db=Jc>>>Ra;switch(l[42072+(Sa<<3)>>0]|0|0){case 8:{Mc=Sa;Nc=eb;Oc=db;Pc=Ma;Qc=Ta;Rc=Lc;break h;break}case 11:case 10:break;default:{Sc=db;Tc=eb;Uc=Ma;Vc=Ta;Wc=Lc;Xc=Pa;ia=152;break e}}Ra=k[42072+(Sa<<3)+4>>2]|0;Oa=db;Na=eb;Ma=Ra+Ma|0;Ta=Ra+Ta|0;Qa=Lc}Qa=k[42072+(Mc<<3)+4>>2]|0;k[Pa>>2]=Qa+Pc;Yc=Oc;Zc=Nc;_c=Qa+Qc|0;$c=Rc}else{Qa=wb;Ta=vb;Ma=xb;Na=yb;Oa=Bb;i:while(1){do if((Ta|0)<13){if(Oa>>>0>=L>>>0)if(!Ta){Ua=V;Va=X;Wa=Qa;Xa=0;Ya=Ma;Za=Na;_a=Oa;$a=Ja;ia=154;break b}else{ad=Qa;bd=13;cd=Oa;break}Ra=Oa+1|0;eb=(l[y+(l[Oa>>0]|0)>>0]|0)<<Ta|Qa;db=Ta+8|0;if((db|0)<13){if(Ra>>>0>=L>>>0){ad=eb;bd=13;cd=Ra;break}ad=(l[y+(l[Ra>>0]|0)>>0]|0)<<db|eb;bd=Ta+16|0;cd=Oa+2|0}else{ad=eb;bd=db;cd=Ra}}else{ad=Qa;bd=Ta;cd=Oa}while(0);Ra=ad&8191;db=l[42072+(Ra<<3)+1>>0]|0;eb=bd-db|0;Sa=ad>>>db;switch(l[42072+(Ra<<3)>>0]|0|0){case 8:{dd=Ra;ed=eb;fd=Sa;gd=Ma;hd=Na;id=cd;break i;break}case 11:case 10:break;default:{Sc=Sa;Tc=eb;Uc=Ma;Vc=Na;Wc=cd;Xc=Ja;ia=152;break e}}db=k[42072+(Ra<<3)+4>>2]|0;Qa=Sa;Ta=eb;Ma=db+Ma|0;Na=db+Na|0;Oa=cd}Oa=k[42072+(dd<<3)+4>>2]|0;Na=Ja+4|0;k[Ja>>2]=Oa+gd;Ma=fd;Ta=ed;Qa=0;Pa=Oa+hd|0;Oa=id;j:while(1){do if((Ta|0)<12){if(Oa>>>0>=L>>>0)if(!Ta){Ua=V;Va=X;Wa=Ma;Xa=0;Ya=Qa;Za=Pa;_a=Oa;$a=Na;ia=154;break b}else{jd=Ma;kd=12;ld=Oa;break}db=Oa+1|0;eb=(l[y+(l[Oa>>0]|0)>>0]|0)<<Ta|Ma;Sa=Ta+8|0;if((Sa|0)<12){if(db>>>0>=L>>>0){jd=eb;kd=12;ld=db;break}jd=(l[y+(l[db>>0]|0)>>0]|0)<<Sa|eb;kd=Ta+16|0;ld=Oa+2|0}else{jd=eb;kd=Sa;ld=db}}else{jd=Ma;kd=Ta;ld=Oa}while(0);db=jd&4095;Sa=l[9304+(db<<3)+1>>0]|0;eb=kd-Sa|0;Ra=jd>>>Sa;switch(l[9304+(db<<3)>>0]|0|0){case 7:{md=db;nd=eb;od=Ra;pd=Qa;qd=Pa;rd=ld;break j;break}case 11:case 9:break;default:{Dc=Ra;Ec=eb;Fc=Qa;Gc=Pa;Hc=ld;Ic=Na;ia=153;break e}}Sa=k[9304+(db<<3)+4>>2]|0;Ma=Ra;Ta=eb;Qa=Sa+Qa|0;Pa=Sa+Pa|0;Oa=ld}Oa=k[9304+(md<<3)+4>>2]|0;k[Na>>2]=Oa+pd;Yc=od;Zc=nd;_c=Oa+qd|0;$c=rd}Oa=Ja+8|0;if((Oa|0)!=(X|0))if((zb|0)<=(_c|0)&(zb|0)<(x|0)){Pa=zb;Qa=Cb;while(1){Ta=(k[Qa>>2]|0)+Pa+(k[Qa+4>>2]|0)|0;Ma=Qa+8|0;if((Ta|0)<=(_c|0)&(Ta|0)<(x|0)){Pa=Ta;Qa=Ma}else{sd=Yc;td=Zc;ud=_c;vd=Ta;wd=$c;xd=Oa;yd=Ma;break}}}else{sd=Yc;td=Zc;ud=_c;vd=zb;wd=$c;xd=Oa;yd=Cb}else{sd=Yc;td=Zc;ud=_c;vd=zb;wd=$c;xd=X;yd=Cb}}else if((ia|0)==128){ia=0;if(!La?(Ib|0)<=(Gb|0)&(Ib|0)<(x|0):0){Qa=Ib;Pa=Kb;while(1){Na=(k[Pa>>2]|0)+Qa+(k[Pa+4>>2]|0)|0;Ma=Pa+8|0;if((Na|0)<=(Gb|0)&(Na|0)<(x|0)){Qa=Na;Pa=Ma}else{zd=Na;Ad=Ma;break}}}else{zd=Ib;Ad=Kb}k[Ja>>2]=Hb+Fb+zd;sd=Eb;td=Db;ud=zd;vd=(k[Ad>>2]|0)+zd|0;wd=Jb;xd=Ja+4|0;yd=Ad+4|0}else if((ia|0)==132){ia=0;if(!La?(Rb|0)<=(Pb|0)&(Rb|0)<(x|0):0){Pa=Rb;Qa=Tb;while(1){Oa=(k[Qa>>2]|0)+Pa+(k[Qa+4>>2]|0)|0;Ma=Qa+8|0;if((Oa|0)<=(Pb|0)&(Oa|0)<(x|0)){Pa=Oa;Qa=Ma}else{Bd=Oa;Cd=Ma;break}}}else{Bd=Rb;Cd=Tb}Qa=k[8280+(Lb<<3)+4>>2]|0;k[Ja>>2]=Qb+Ob+Bd+Qa;sd=Nb;td=Mb;ud=Qa+Bd|0;vd=(k[Cd>>2]|0)+Bd|0;wd=Sb;xd=Ja+4|0;yd=Cd+4|0}else if((ia|0)==136){ia=0;Qa=(Ja|0)!=(X|0);if(Qa?(Zb|0)<=(Yb|0)&(Zb|0)<(x|0):0){Pa=Zb;La=$b;while(1){Ma=(k[La>>2]|0)+Pa+(k[La+4>>2]|0)|0;Oa=La+8|0;if((Ma|0)<=(Yb|0)&(Ma|0)<(x|0)){Pa=Ma;La=Oa}else{Dd=Ma;Ed=Oa;break}}}else{Dd=Zb;Ed=$b}La=k[8280+(Ub<<3)+4>>2]|0;Pa=La+Yb|0;if((Dd|0)<=(Pa|0)&(Qa|(Dd|0)<(Pa|0))){Fd=Vb;Gd=Wb;Hd=Xb;Id=Yb;Jd=_b;Kd=Ja;ia=140;break}k[Ja>>2]=Dd-Yb+Xb-La;Pa=Ed+-4|0;sd=Wb;td=Vb;ud=Dd-La|0;vd=Dd-(k[Pa>>2]|0)|0;wd=_b;xd=Ja+4|0;yd=Pa}if((x|0)>(ud|0)){na=sd;Ea=td;Fa=0-ud|0;Ga=ud;Ha=vd;Ia=wd;Ja=xd;Ka=yd}else{Ld=sd;Md=td;Nd=0;Od=ud;Pd=wd;Qd=xd;break d}}do if((ia|0)==140){ia=0;Ka=k[Q>>2]|0;Ja=(k[R>>2]&1024|0)!=0;Ia=k[(Ja?S:T)>>2]|0;k[p>>2]=k[P>>2];k[p+4>>2]=Ja?142996:143001;k[p+8>>2]=Ia;k[p+12>>2]=Id;vc(Ka,144240,143007,p);Rd=Gd;Sd=Fd;Td=0;Ud=Hd;Vd=Id;Wd=Jd;Xd=Kd}else if((ia|0)==143){ia=0;k[mb>>2]=x-kb;Ka=k[Q>>2]|0;Ia=(k[R>>2]&1024|0)!=0;Ja=k[(Ia?S:T)>>2]|0;k[o>>2]=k[P>>2];k[o+4>>2]=Ia?142996:143001;k[o+8>>2]=Ja;k[o+12>>2]=kb;vc(Ka,144240,143800,o);Rd=ib;Sd=hb;Td=0;Ud=jb;Vd=kb;Wd=lb;Xd=mb+4|0}else if((ia|0)==144){ia=0;Ka=ub+4|0;k[ub>>2]=x-sb;do if((ob|0)<4)if(tb>>>0>=L>>>0)if((qb|0)==(nb|0)){Ua=V;Va=X;Wa=pb;Xa=ob;Ya=rb;Za=sb;_a=tb;$a=Ka;ia=154;break b}else{Yd=pb;Zd=4;_d=tb;break}else{Yd=(l[y+(l[tb>>0]|0)>>0]|0)<<ob|pb;Zd=ob+8|0;_d=tb+1|0;break}else{Yd=pb;Zd=ob;_d=tb}while(0);if(Yd&15){Qa=k[Q>>2]|0;Ja=(k[R>>2]&1024|0)!=0;Ia=k[(Ja?S:T)>>2]|0;k[n>>2]=k[P>>2];k[n+4>>2]=Ja?142996:143001;k[n+8>>2]=Ia;k[n+12>>2]=sb;vc(Qa,144240,143007,n)}Rd=Yd>>>4;Sd=Zd+-4|0;Td=1;Ud=rb;Vd=sb;Wd=_d;Xd=Ka}else if((ia|0)==152){ia=0;Qa=k[Q>>2]|0;Ia=(k[R>>2]&1024|0)!=0;Ja=k[(Ia?S:T)>>2]|0;k[j>>2]=k[P>>2];k[j+4>>2]=Ia?142996:143001;k[j+8>>2]=Ja;k[j+12>>2]=Vc;vc(Qa,144240,143007,j);Rd=Sc;Sd=Tc;Td=0;Ud=Uc;Vd=Vc;Wd=Wc;Xd=Xc}else if((ia|0)==153){ia=0;Qa=k[Q>>2]|0;Ja=(k[R>>2]&1024|0)!=0;Ia=k[(Ja?S:T)>>2]|0;k[i>>2]=k[P>>2];k[i+4>>2]=Ja?142996:143001;k[i+8>>2]=Ia;k[i+12>>2]=Gc;vc(Qa,144240,143007,i);Rd=Dc;Sd=Ec;Td=0;Ud=Fc;Vd=Gc;Wd=Hc;Xd=Ic}else if((ia|0)==165){ia=0;if(!ic){Ld=gc;Md=hc;Nd=0;Od=jc;Pd=kc;Qd=lc;break d}if((jc+ic|0)<(x|0)){do if((hc|0)<1)if(kc>>>0>=L>>>0)if(!hc){Ua=V;Va=X;Wa=gc;Xa=0;Ya=ic;Za=jc;_a=kc;$a=lc;ia=154;break b}else{$d=gc;ae=1;be=kc;break}else{$d=(l[y+(l[kc>>0]|0)>>0]|0)<<hc|gc;ae=hc+8|0;be=kc+1|0;break}else{$d=gc;ae=hc;be=kc}while(0);if(!($d&1)){ac=$d;bc=ae;cc=ic;dc=jc;ec=be;fc=lc;ia=151;break}ce=$d>>>1;de=ae+-1|0;ee=be}else{ce=gc;de=hc;ee=kc}k[lc>>2]=ic;Ld=ce;Md=de;Nd=0;Od=jc;Pd=ee;Qd=lc+4|0;break d}while(0);if((ia|0)==151){ia=0;Ka=k[Q>>2]|0;Qa=(k[R>>2]&1024|0)!=0;Ia=k[(Qa?S:T)>>2]|0;k[m>>2]=k[P>>2];k[m+4>>2]=Qa?142996:143001;k[m+8>>2]=Ia;k[m+12>>2]=dc;vc(Ka,144240,143007,m);Rd=ac;Sd=bc;Td=0;Ud=cc;Vd=dc;Wd=ec;Xd=fc}if(!Ud){Ld=Rd;Md=Sd;Nd=Td;Od=Vd;Pd=Wd;Qd=Xd}else{k[Xd>>2]=Ud;Ld=Rd;Md=Sd;Nd=Td;Od=Vd;Pd=Wd;Qd=Xd+4|0}}else{Ld=ca;Md=ba;Nd=0;Od=0;Pd=Da;Qd=X}while(0);if((Od|0)==(x|0)){fe=Ld;ge=Md;he=Nd;je=Pd;ke=Qd}else{Ka=k[P>>2]|0;Ia=k[Q>>2]|0;Qa=(k[R>>2]&1024|0)!=0;Ja=k[(Qa?S:T)>>2]|0;k[f>>2]=Od>>>0<x>>>0?143089:143103;k[f+4>>2]=Ka;k[f+8>>2]=Qa?142996:143001;k[f+12>>2]=Ja;k[f+16>>2]=Od;k[f+20>>2]=x;ie(Ia,144240,143124,f);Ia=(Od|0)>(x|0);if(Qd>>>0>X>>>0&Ia){Ja=Od;Qa=Qd;while(1){Ka=Qa+-4|0;Ha=Ja-(k[Ka>>2]|0)|0;Ga=(Ha|0)>(x|0);if(Ka>>>0>X>>>0&Ga){Ja=Ha;Qa=Ka}else{le=Ga;me=Ha;ne=Ka;break}}}else{le=Ia;me=Od;ne=Qd}if((me|0)>=(x|0)){if(!le){fe=Ld;ge=Md;he=Nd;je=Pd;ke=ne;break}k[ne>>2]=x;k[ne+4>>2]=0;fe=Ld;ge=Md;he=Nd;je=Pd;ke=ne+8|0;break}if(!(ne-X&4))oe=ne;else{k[ne>>2]=0;oe=ne+4|0}k[oe>>2]=x-((me|0)<0?0:me);fe=Ld;ge=Md;he=Nd;je=Pd;ke=oe+4|0}}else{Qa=ca;Ja=ba;Ka=0;Ha=Da;Ga=X;k:while(1){Fa=Qa;Ea=Ja;na=0;ma=Ka;Pa=Ha;l:while(1){do if((Ea|0)<12){if(Pa>>>0>=L>>>0)if(!Ea){pe=V;qe=X;re=Fa;se=na;te=ma;ue=Pa;ve=Ga;ia=51;break b}else{we=Fa;xe=12;ye=Pa;break}La=Pa+1|0;Oa=(l[y+(l[Pa>>0]|0)>>0]|0)<<Ea|Fa;Ma=Ea+8|0;if((Ma|0)<12)if(La>>>0<L>>>0){we=(l[y+(l[La>>0]|0)>>0]|0)<<Ma|Oa;xe=Ea+16|0;ye=Pa+2|0}else{we=Oa;xe=12;ye=La}else{we=Oa;xe=Ma;ye=La}}else{we=Fa;xe=Ea;ye=Pa}while(0);La=we&4095;Ma=l[9304+(La<<3)+1>>0]|0;Oa=xe-Ma|0;Na=we>>>Ma;switch(l[9304+(La<<3)>>0]|0|0){case 12:{ze=Na;Ae=Oa;Be=1;Ce=na;De=ma;Ee=ye;Fe=Ga;ia=62;break k;break}case 7:{Ge=La;He=Oa;Ie=Na;Je=na;Ke=ma;Le=ye;break l;break}case 11:case 9:break;default:{Me=Oa;Ne=Na;Oe=na;Pe=ma;Qe=ye;Re=Ga;ia=38;break k}}Ma=k[9304+(La<<3)+4>>2]|0;Fa=Na;Ea=Oa;na=Ma+na|0;ma=Ma+ma|0;Pa=ye}Pa=k[9304+(Ge<<3)+4>>2]|0;ma=Pa+Je|0;na=Ga+4|0;k[Ga>>2]=ma;Ea=Pa+Ke|0;if((Ea|0)<(x|0)){Se=Ie;Te=He;Ue=0;Ve=Ea;We=Le}else{Xe=Ie;Ye=He;Ze=0;_e=Ea;$e=Le;af=na;break}m:while(1){do if((Te|0)<13){if(We>>>0>=L>>>0)if(!Te){pe=V;qe=X;re=Se;se=Ue;te=Ve;ue=We;ve=na;ia=51;break b}else{bf=Se;cf=13;df=We;break}Ea=We+1|0;Pa=(l[y+(l[We>>0]|0)>>0]|0)<<Te|Se;Fa=Te+8|0;if((Fa|0)<13)if(Ea>>>0<L>>>0){bf=(l[y+(l[Ea>>0]|0)>>0]|0)<<Fa|Pa;cf=Te+16|0;df=We+2|0}else{bf=Pa;cf=13;df=Ea}else{bf=Pa;cf=Fa;df=Ea}}else{bf=Se;cf=Te;df=We}while(0);Ea=bf&8191;Fa=l[42072+(Ea<<3)+1>>0]|0;Pa=cf-Fa|0;Ma=bf>>>Fa;switch(l[42072+(Ea<<3)>>0]|0|0){case 12:{ze=Ma;Ae=Pa;Be=1;Ce=Ue;De=Ve;Ee=df;Fe=na;ia=62;break k;break}case 8:{ef=Ea;ff=Pa;gf=Ma;hf=Ue;jf=Ve;kf=df;break m;break}case 11:case 10:break;default:{lf=Pa;mf=Ma;nf=na;of=Ue;pf=Ve;qf=df;ia=48;break k}}Fa=k[42072+(Ea<<3)+4>>2]|0;Se=Ma;Te=Pa;Ue=Fa+Ue|0;Ve=Fa+Ve|0;We=df}Fa=k[42072+(ef<<3)+4>>2]|0;Pa=Fa+hf|0;Ma=Ga+8|0;k[na>>2]=Pa;Ea=Fa+jf|0;if((Ea|0)>=(x|0)){Xe=gf;Ye=ff;Ze=0;_e=Ea;$e=kf;af=Ma;break}Qa=gf;Ja=ff;Ka=Ea;Ha=kf;Ga=(Pa|ma|0)==0?Ga:Ma}if((ia|0)==38){ia=0;Ga=k[Q>>2]|0;Ha=(k[R>>2]&1024|0)!=0;Ka=k[(Ha?S:T)>>2]|0;k[v>>2]=k[P>>2];k[v+4>>2]=Ha?142996:143001;k[v+8>>2]=Ka;k[v+12>>2]=Pe;vc(Ga,144240,143007,v);ze=Ne;Ae=Me;Be=0;Ce=Oe;De=Pe;Ee=Qe;Fe=Re;ia=62}else if((ia|0)==48){ia=0;Ga=k[Q>>2]|0;Ka=(k[R>>2]&1024|0)!=0;Ha=k[(Ka?S:T)>>2]|0;k[u>>2]=k[P>>2];k[u+4>>2]=Ka?142996:143001;k[u+8>>2]=Ha;k[u+12>>2]=pf;vc(Ga,144240,143007,u);ze=mf;Ae=lf;Be=0;Ce=of;De=pf;Ee=qf;Fe=nf;ia=62}if((ia|0)==62){ia=0;if(!Ce){Xe=ze;Ye=Ae;Ze=Be;_e=De;$e=Ee;af=Fe}else{k[Fe>>2]=Ce;Xe=ze;Ye=Ae;Ze=Be;_e=De;$e=Ee;af=Fe+4|0}}if((_e|0)==(x|0)){fe=Xe;ge=Ye;he=Ze;je=$e;ke=af}else{Ga=k[P>>2]|0;Ha=k[Q>>2]|0;Ka=(k[R>>2]&1024|0)!=0;Ja=k[(Ka?S:T)>>2]|0;k[q>>2]=_e>>>0<x>>>0?143089:143103;k[q+4>>2]=Ga;k[q+8>>2]=Ka?142996:143001;k[q+12>>2]=Ja;k[q+16>>2]=_e;k[q+20>>2]=x;ie(Ha,144240,143124,q);Ha=(_e|0)>(x|0);if(af>>>0>X>>>0&Ha){Ja=_e;Ka=af;while(1){Ga=Ka+-4|0;Qa=Ja-(k[Ga>>2]|0)|0;Ia=(Qa|0)>(x|0);if(Ga>>>0>X>>>0&Ia){Ja=Qa;Ka=Ga}else{rf=Ia;sf=Qa;tf=Ga;break}}}else{rf=Ha;sf=_e;tf=af}if((sf|0)>=(x|0)){if(!rf){fe=Xe;ge=Ye;he=Ze;je=$e;ke=tf;break}k[tf>>2]=x;k[tf+4>>2]=0;fe=Xe;ge=Ye;he=Ze;je=$e;ke=tf+8|0;break}if(!(tf-X&4))uf=tf;else{k[tf>>2]=0;uf=tf+4|0}k[uf>>2]=x-((sf|0)<0?0:sf);fe=Xe;ge=Ye;he=Ze;je=$e;ke=uf+4|0}}while(0);Ab[k[U>>2]&31](V,X,ke,x);k[ke>>2]=0;ba=k[M>>2]|0;X=k[N>>2]|0;k[M>>2]=X;k[N>>2]=ba;ba=k[z>>2]|0;W=W-ba|0;k[P>>2]=(k[P>>2]|0)+1;if((W|0)<=0){vf=fe;wf=ge;xf=he;yf=je;ia=190;break}else{V=V+ba|0;Y=fe;Z=ge;_=he;$=je}}do if((ia|0)==51){$=k[Q>>2]|0;_=(k[R>>2]&1024|0)!=0;Z=k[(_?S:T)>>2]|0;k[t>>2]=k[P>>2];k[t+4>>2]=_?142996:143001;k[t+8>>2]=Z;k[t+12>>2]=te;ie($,144240,143048,t);if(!se)zf=ve;else{k[ve>>2]=se;zf=ve+4|0}if((te|0)==(x|0)){Af=pe;Bf=qe;Cf=re;Df=0;Ef=0;Ff=ue;Gf=zf}else{$=k[P>>2]|0;Z=k[Q>>2]|0;_=(k[R>>2]&1024|0)!=0;Y=k[(_?S:T)>>2]|0;k[s>>2]=te>>>0<x>>>0?143089:143103;k[s+4>>2]=$;k[s+8>>2]=_?142996:143001;k[s+12>>2]=Y;k[s+16>>2]=te;k[s+20>>2]=x;ie(Z,144240,143124,s);Z=(te|0)>(x|0);if(zf>>>0>qe>>>0&Z){Y=te;_=zf;while(1){$=_+-4|0;V=Y-(k[$>>2]|0)|0;W=(V|0)>(x|0);if($>>>0>qe>>>0&W){Y=V;_=$}else{Hf=W;If=V;Jf=$;break}}}else{Hf=Z;If=te;Jf=zf}if((If|0)>=(x|0)){if(!Hf){Af=pe;Bf=qe;Cf=re;Df=0;Ef=0;Ff=ue;Gf=Jf;break}k[Jf>>2]=x;k[Jf+4>>2]=0;Af=pe;Bf=qe;Cf=re;Df=0;Ef=0;Ff=ue;Gf=Jf+8|0;break}if(!(Jf-qe&4))Kf=Jf;else{k[Jf>>2]=0;Kf=Jf+4|0}k[Kf>>2]=x-((If|0)<0?0:If);Af=pe;Bf=qe;Cf=re;Df=0;Ef=0;Ff=ue;Gf=Kf+4|0}}else if((ia|0)==154){_=k[Q>>2]|0;Y=(k[R>>2]&1024|0)!=0;$=k[(Y?S:T)>>2]|0;k[h>>2]=k[P>>2];k[h+4>>2]=Y?142996:143001;k[h+8>>2]=$;k[h+12>>2]=Za;ie(_,144240,143048,h);if(!Ya)Lf=$a;else{k[$a>>2]=Ya;Lf=$a+4|0}if((Za|0)==(x|0)){Af=Ua;Bf=Va;Cf=Wa;Df=Xa;Ef=0;Ff=_a;Gf=Lf}else{_=k[P>>2]|0;$=k[Q>>2]|0;Y=(k[R>>2]&1024|0)!=0;V=k[(Y?S:T)>>2]|0;k[g>>2]=Za>>>0<x>>>0?143089:143103;k[g+4>>2]=_;k[g+8>>2]=Y?142996:143001;k[g+12>>2]=V;k[g+16>>2]=Za;k[g+20>>2]=x;ie($,144240,143124,g);$=(Za|0)>(x|0);if(Lf>>>0>Va>>>0&$){V=Za;Y=Lf;while(1){_=Y+-4|0;W=V-(k[_>>2]|0)|0;N=(W|0)>(x|0);if(_>>>0>Va>>>0&N){V=W;Y=_}else{Mf=N;Nf=W;Of=_;break}}}else{Mf=$;Nf=Za;Of=Lf}if((Nf|0)>=(x|0)){if(!Mf){Af=Ua;Bf=Va;Cf=Wa;Df=Xa;Ef=0;Ff=_a;Gf=Of;break}k[Of>>2]=x;k[Of+4>>2]=0;Af=Ua;Bf=Va;Cf=Wa;Df=Xa;Ef=0;Ff=_a;Gf=Of+8|0;break}if(!(Of-Va&4))Pf=Of;else{k[Of>>2]=0;Pf=Of+4|0}k[Pf>>2]=x-((Nf|0)<0?0:Nf);Af=Ua;Bf=Va;Cf=Wa;Df=Xa;Ef=0;Ff=_a;Gf=Pf+4|0}}else if((ia|0)==186)if(x){Y=k[P>>2]|0;V=k[Q>>2]|0;Z=(k[R>>2]&1024|0)!=0;_=k[(Z?S:T)>>2]|0;k[e>>2]=143089;k[e+4>>2]=Y;k[e+8>>2]=Z?142996:143001;k[e+12>>2]=_;k[e+16>>2]=0;k[e+20>>2]=x;ie(V,144240,143124,e);V=ea+4|0;k[ea>>2]=x;if(O){Af=da;Bf=ea;Cf=fa;Df=0;Ef=ga;Ff=ha;Gf=V}else{k[V>>2]=0;Af=da;Bf=ea;Cf=fa;Df=0;Ef=ga;Ff=ha;Gf=ea+8|0}}else{Af=da;Bf=ea;Cf=fa;Df=0;Ef=ga;Ff=ha;Gf=ea}else if((ia|0)==190){Qf=k[H>>2]|0;Rf=k[J>>2]|0;Sf=vf;Tf=wf;Uf=xf;Vf=yf;break a}while(0);Ab[k[U>>2]&31](Af,Bf,Gf,x);k[D>>2]=Df;k[B>>2]=Cf;k[F>>2]=Ef;k[J>>2]=(k[H>>2]|0)-Ff+(k[J>>2]|0);k[H>>2]=Ff;A=-1;r=d;return A|0}else{Qf=I;Rf=K;Sf=C;Tf=E;Uf=G;Vf=I}while(0);k[D>>2]=Tf;k[B>>2]=Sf;k[F>>2]=Uf;k[J>>2]=Qf-Vf+Rf;k[H>>2]=Vf;A=1;r=d;return A|0}function Rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+32|0;if((b|0)!=7)Ja(144620,144647,2307,144658);if(!(_b(a,107608,4)|0)){vc(k[a+628>>2]|0,144658,144671,c);d=0;r=c;return d|0}b=me(936)|0;e=a+576|0;k[e>>2]=b;if(!b){vc(k[a+628>>2]|0,144658,144711,c+8|0);d=0;r=c;return d|0}pe(b,0,936);b=k[e>>2]|0;k[b+828>>2]=a;e=a+668|0;f=a+672|0;k[b+892>>2]=k[f>>2];k[f>>2]=13;k[b+896>>2]=k[e>>2];k[e>>2]=14;e=a+676|0;k[b+900>>2]=k[e>>2];k[e>>2]=10;e=b+912|0;k[e>>2]=0;f=b+916|0;k[f>>2]=0;k[b+920>>2]=75;k[b+924>>2]=0;k[b+928>>2]=3;k[b+932>>2]=0;k[a+504>>2]=12;k[a+508>>2]=13;k[a+512>>2]=26;k[a+532>>2]=20;k[a+540>>2]=20;k[a+548>>2]=20;k[a+516>>2]=14;k[a+524>>2]=27;k[a+528>>2]=15;k[a+536>>2]=21;k[a+544>>2]=21;k[a+552>>2]=21;k[a+564>>2]=4;g=a+568|0;k[b+904>>2]=k[g>>2];k[g>>2]=28;g=a+572|0;k[b+908>>2]=k[g>>2];k[g>>2]=11;g=a+12|0;k[g>>2]=k[g>>2]|256;k[b+488>>2]=0;b=a+16|0;if(!((k[b>>2]|0)==0&(k[b+4>>2]|0)==0)){d=1;r=c;return d|0}k[f>>2]=2e3;f=me(2e3)|0;k[e>>2]=f;if(!f){vc(k[a+628>>2]|0,144658,144741,c+16|0);d=0;r=c;return d|0}else{pe(f,0,2e3);d=1;r=c;return d|0}return 0}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if(!d)Ja(154187,144647,2186,146558);a:do if((b|0)<65538)if((b|0)<65537){switch(b|0){case 347:break;default:break a}e=k[d+916>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;e=k[d+912>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}else{switch(b|0){case 65537:break;default:break a}e=k[d+920>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}else switch(b|0){case 65538:{e=k[d+924>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}case 65539:{e=k[d+928>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}default:break a}while(0);h=nb[k[d+892>>2]&63](a,b,c)|0;return h|0}function Tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+576|0;e=k[d>>2]|0;if(!e)Ja(154187,144647,2132,146544);a:do if((b|0)<65537)switch(b|0){case 347:{f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;if(!g){h=0;return h|0}f=(k[c>>2]|0)+(4-1)&~(4-1);i=k[f>>2]|0;k[c>>2]=f+4;Nb(e+912|0,i,g);k[e+916>>2]=g;g=a+48|0;k[g>>2]=k[g>>2]|4;g=cc(a,347)|0;if(!g){h=0;return h|0}i=j[g+24>>1]|0;g=a+40+(((i&65535)>>>5&65535)<<2)|0;k[g>>2]=1<<(i&31)|k[g>>2];g=a+12|0;k[g>>2]=k[g>>2]|8;h=1;return h|0}case 262:{g=nb[k[e+896>>2]&63](a,262,c)|0;i=k[d>>2]|0;f=a+12|0;l=k[f>>2]|0;m=l&-16385;k[f>>2]=m;if(((j[a+126>>1]|0)==1?(j[a+90>>1]|0)==6:0)?(k[i+924>>2]|0)==1:0){i=l|16384;k[f>>2]=i;n=i}else n=m;m=a+496|0;if((k[m>>2]|0)>0){if(!(n&1024))o=-1;else o=ge(a)|0;k[m>>2]=o}m=a+580|0;if((k[m>>2]|0)<=0){h=g;return h|0}i=Pd(a)|0;k[m>>2]=i;h=g;return h|0}case 530:{k[e+932>>2]=1;h=nb[k[e+896>>2]&63](a,530,c)|0;return h|0}default:break a}else switch(b|0){case 65537:{g=(k[c>>2]|0)+(4-1)&~(4-1);i=k[g>>2]|0;k[c>>2]=g+4;k[e+920>>2]=i;h=1;return h|0}case 65538:{i=(k[c>>2]|0)+(4-1)&~(4-1);g=k[i>>2]|0;k[c>>2]=i+4;k[e+924>>2]=g;g=k[d>>2]|0;i=a+12|0;m=k[i>>2]|0;f=m&-16385;k[i>>2]=f;if(((j[a+126>>1]|0)==1?(j[a+90>>1]|0)==6:0)?(k[g+924>>2]|0)==1:0){g=m|16384;k[i>>2]=g;p=g}else p=f;f=a+496|0;if((k[f>>2]|0)>0){if(!(p&1024))q=-1;else q=ge(a)|0;k[f>>2]=q}f=a+580|0;if((k[f>>2]|0)<=0){h=1;return h|0}g=Pd(a)|0;k[f>>2]=g;h=1;return h|0}case 65539:{g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[e+928>>2]=f;h=1;return h|0}default:break a}while(0);h=nb[k[e+896>>2]&63](a,b,c)|0;return h|0}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+16|0;e=d;f=k[a+576>>2]|0;if(!f)Ja(154187,144647,2213,146503);if(k[a+48>>2]&4){k[e>>2]=k[f+916>>2];wq(b,146516,e)|0}e=k[f+900>>2]|0;if(!e){r=d;return}vb[e&127](a,b,c);r=d;return}function Vf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0;b=r;r=r+48|0;c=b+40|0;d=b+24|0;e=b+16|0;f=b+8|0;if((j[a+90>>1]|0)!=6){r=b;return 1}if((j[a+126>>1]|0)!=1){r=b;return 1}g=a+98|0;if((j[g>>1]|0)!=3){r=b;return 1}gc(a)|0;h=a+176|0;n=k[h>>2]|0;if(!n){r=b;return 1}o=a+172|0;if(!(k[o>>2]|0)){r=b;return 1}p=n;if((k[p>>2]|0)==0&(k[p+4>>2]|0)==0){r=b;return 1}p=me(2048)|0;if(!p){ie(k[a+628>>2]|0,145945,145970,b);r=b;return 1}n=k[o>>2]|0;o=k[n>>2]|0;q=k[n+4>>2]|0;n=k[h>>2]|0;h=k[n>>2]|0;s=k[n+4>>2]|0;a:do if(!((h|0)==0&(s|0)==0)){n=a+640|0;t=a+628|0;xb[k[n>>2]&63](k[t>>2]|0,o,q,0)|0;u=s>>>0<0|(s|0)==0&h>>>0<2048?h:2048;if((u|0)<=-1)Ja(146063,144647,902,146078);v=a+632|0;if((nb[k[v>>2]&63](k[t>>2]|0,p,u)|0)==(u|0)){w=sr(u|0,0,o|0,q|0)|0;x=L;y=pr(h|0,s|0,u|0,0)|0;z=u;u=p;A=p;B=1;C=y;y=L;D=w;w=x;b:while(1){x=A+1|0;E=x;F=z+-1|0;c:do if((i[u>>0]|0)==-1){G=F;H=E;I=C;J=y;K=B;M=D;N=w;O=x;while(1){if(!G){if((I|0)==0&(J|0)==0){P=t;Q=114;break a}if(!(K<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,M,N,0)|0;R=1}else R=K;S=J>>>0<0|(J|0)==0&I>>>0<2048?I:2048;if((S|0)<=-1){Q=31;break b}if((nb[k[v>>2]&63](k[t>>2]|0,p,S)|0)!=(S|0)){P=t;Q=114;break a}T=sr(S|0,0,M|0,N|0)|0;U=L;V=pr(I|0,J|0,S|0,0)|0;W=p;X=p;Y=S;Z=R;_=V;$=L;aa=T;ba=U}else{W=H;X=O;Y=G;Z=K;_=I;$=J;aa=M;ba=N}U=i[W>>0]|0;T=X+1|0;V=Y+-1|0;S=T;if(U<<24>>24==-1){G=V;H=S;I=_;J=$;K=Z;M=aa;N=ba;O=T}else{ca=Z;da=U;ea=T;fa=V;ga=S;ha=_;ia=$;ja=aa;ka=ba;break}}switch(da&255|0){case 202:case 201:case 194:case 193:case 192:{la=ca;ma=ea;na=fa;oa=ha;pa=ia;qa=ja;ra=ka;Q=58;break b;break}case 216:{sa=ea;ta=ca;ua=ha;va=ia;wa=ja;xa=ka;ya=fa;za=ga;Q=16;break c;break}case 221:case 196:case 218:case 219:case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:break;default:{P=t;Q=114;break a}}if(!fa){if((ha|0)==0&(ia|0)==0){P=t;Q=114;break a}if(!(ca<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,ja,ka,0)|0;Aa=1}else Aa=ca;O=ia>>>0<0|(ia|0)==0&ha>>>0<2048?ha:2048;if((O|0)<=-1){Q=41;break b}if((nb[k[v>>2]&63](k[t>>2]|0,p,O)|0)!=(O|0)){P=t;Q=114;break a}N=sr(O|0,0,ja|0,ka|0)|0;M=L;K=pr(ha|0,ia|0,O|0,0)|0;Ba=p;Ca=O;Da=K;Ea=L;Fa=Aa;Ga=N;Ha=M}else{Ba=ea;Ca=fa;Da=ha;Ea=ia;Fa=ca;Ga=ja;Ha=ka}M=i[Ba>>0]|0;N=Ba+1|0;K=Ca+-1|0;if(!K){if((Da|0)==0&(Ea|0)==0){P=t;Q=114;break a}if(!(Fa<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,Ga,Ha,0)|0;Ia=1}else Ia=Fa;O=Ea>>>0<0|(Ea|0)==0&Da>>>0<2048?Da:2048;if((O|0)<=-1){Q=49;break b}if((nb[k[v>>2]&63](k[t>>2]|0,p,O)|0)!=(O|0)){P=t;Q=114;break a}J=sr(O|0,0,Ga|0,Ha|0)|0;I=L;H=pr(Da|0,Ea|0,O|0,0)|0;Ka=p;La=O;Ma=L;Na=H;Oa=J;Pa=I;Qa=Ia}else{Ka=N;La=K;Ma=Ea;Na=Da;Oa=Ga;Pa=Ha;Qa=Fa}K=Ka+1|0;N=La+-1|0;I=l[Ka>>0]|(M&255)<<8;if((I&65535)<2){P=t;Q=114;break a}M=I+65534|0;I=M&65535;if(!I){sa=K;ta=Qa;ua=Na;va=Ma;wa=Oa;xa=Pa;ya=N;za=K;Q=16}else{if(N>>>0>=I>>>0){K=Ka+(I+1)|0;sa=K;ta=Qa;ua=Na;va=Ma;wa=Oa;xa=Pa;ya=N-I|0;za=K;Q=16;break}K=M-N&65535;if(Ma>>>0<0|(Ma|0)==0&Na>>>0<K>>>0){P=t;Q=114;break a}N=sr(K|0,0,Oa|0,Pa|0)|0;M=L;I=pr(Na|0,Ma|0,K|0,0)|0;Ra=I;Sa=L;Ta=0;Ua=N;Va=M}}else{sa=x;ta=B;ua=C;va=y;wa=D;xa=w;ya=F;za=E;Q=16}while(0);if((Q|0)==16){Q=0;if(!ya){Ra=ua;Sa=va;Ta=ta;Ua=wa;Va=xa}else{z=ya;u=za;A=sa;B=ta;C=ua;y=va;D=wa;w=xa;continue}}if((Ra|0)==0&(Sa|0)==0){P=t;Q=114;break a}if(!(Ta<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,Ua,Va,0)|0;Wa=1}else Wa=Ta;E=Sa>>>0<0|(Sa|0)==0&Ra>>>0<2048?Ra:2048;if((E|0)<=-1){Q=22;break}if((nb[k[v>>2]&63](k[t>>2]|0,p,E)|0)!=(E|0)){P=t;Q=114;break a}F=sr(E|0,0,Ua|0,Va|0)|0;x=L;M=pr(Ra|0,Sa|0,E|0,0)|0;z=E;u=p;A=p;B=Wa;C=M;y=L;D=F;w=x}if((Q|0)==22)Ja(146063,144647,902,146078);else if((Q|0)==31)Ja(146063,144647,902,146078);else if((Q|0)==41)Ja(146063,144647,902,146078);else if((Q|0)==49)Ja(146063,144647,902,146078);else if((Q|0)==58){if(!na){if((oa|0)==0&(pa|0)==0){P=t;Q=114;break}if(!(la<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,qa,ra,0)|0;Xa=1}else Xa=la;w=pa>>>0<0|(pa|0)==0&oa>>>0<2048?oa:2048;if((w|0)<=-1)Ja(146063,144647,902,146078);if((nb[k[v>>2]&63](k[t>>2]|0,p,w)|0)!=(w|0)){P=t;Q=114;break}D=sr(w|0,0,qa|0,ra|0)|0;y=L;C=pr(oa|0,pa|0,w|0,0)|0;Ya=p;Za=w;_a=C;$a=L;ab=Xa;bb=D;cb=y}else{Ya=ma;Za=na;_a=oa;$a=pa;ab=la;bb=qa;cb=ra}y=i[Ya>>0]|0;D=Ya+1|0;C=Za+-1|0;if(!C){if((_a|0)==0&($a|0)==0){P=t;Q=114;break}if(!(ab<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,bb,cb,0)|0;db=1}else db=ab;w=$a>>>0<0|($a|0)==0&_a>>>0<2048?_a:2048;if((w|0)<=-1)Ja(146063,144647,902,146078);if((nb[k[v>>2]&63](k[t>>2]|0,p,w)|0)!=(w|0)){P=t;Q=114;break}B=sr(w|0,0,bb|0,cb|0)|0;A=L;u=pr(_a|0,$a|0,w|0,0)|0;eb=p;fb=w;gb=L;hb=u;ib=B;jb=A;kb=db}else{eb=D;fb=C;gb=$a;hb=_a;ib=bb;jb=cb;kb=ab}if((l[eb>>0]|(y&255)<<8|0)!=(((m[g>>1]|0)*3|0)+8|0)){P=t;Q=114;break}if((fb+-1|0)>>>0>=7){y=fb+-8|0;if(!y){lb=hb;mb=gb;ob=kb;pb=ib;qb=jb;Q=79}else{rb=eb+8|0;sb=y;tb=hb;ub=gb;vb=ib;wb=jb;yb=kb}}else{y=8-fb&65535;if(gb>>>0<0|(gb|0)==0&hb>>>0<y>>>0){P=t;Q=114;break}C=sr(y|0,0,ib|0,jb|0)|0;D=L;A=pr(hb|0,gb|0,y|0,0)|0;lb=A;mb=L;ob=0;pb=C;qb=D;Q=79}if((Q|0)==79){if((lb|0)==0&(mb|0)==0){P=t;Q=114;break}if(!(ob<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,pb,qb,0)|0;zb=1}else zb=ob;D=mb>>>0<0|(mb|0)==0&lb>>>0<2048?lb:2048;if((D|0)<=-1)Ja(146063,144647,902,146078);if((nb[k[v>>2]&63](k[t>>2]|0,p,D)|0)!=(D|0)){P=t;Q=114;break}C=sr(D|0,0,pb|0,qb|0)|0;A=L;y=pr(lb|0,mb|0,D|0,0)|0;rb=p;sb=D;tb=y;ub=L;vb=C;wb=A;yb=zb}A=i[rb>>0]|0;C=(A&255)>>>4;y=A&15;A=rb+1|0;if((sb|0)==1)if((tb|0)==0&(ub|0)==0){Ab=A;Bb=yb;Cb=0;Db=0;Eb=vb;Fb=wb;Gb=0}else{D=sr(vb|0,wb|0,1,0)|0;B=L;u=sr(tb|0,ub|0,-1,-1)|0;Ab=A;Bb=0;Cb=u;Db=L;Eb=D;Fb=B;Gb=0}else{Ab=rb+2|0;Bb=yb;Cb=tb;Db=ub;Eb=vb;Fb=wb;Gb=sb+-2|0}d:do if((m[g>>1]|0)>1){B=Gb;D=Cb;u=Db;A=Eb;w=Fb;z=Ab;x=Bb;F=1;while(1){if(B){M=B+-1|0;if(!M){Hb=D;Ib=u;Jb=x;Kb=A;Lb=w;Q=95}else{Mb=z+1|0;Nb=M;Ob=D;Pb=u;Qb=A;Rb=w;Sb=x}}else{if((D|0)==0&(u|0)==0){P=t;Q=114;break a}M=sr(A|0,w|0,1,0)|0;E=L;N=sr(D|0,u|0,-1,-1)|0;Hb=N;Ib=L;Jb=0;Kb=M;Lb=E;Q=95}if((Q|0)==95){Q=0;if((Hb|0)==0&(Ib|0)==0){P=t;Q=114;break a}if(!(Jb<<24>>24)){xb[k[n>>2]&63](k[t>>2]|0,Kb,Lb,0)|0;Tb=1}else Tb=Jb;E=Ib>>>0<0|(Ib|0)==0&Hb>>>0<2048?Hb:2048;if((E|0)<=-1){Q=99;break}if((nb[k[v>>2]&63](k[t>>2]|0,p,E)|0)!=(E|0)){P=t;Q=114;break a}M=sr(E|0,0,Kb|0,Lb|0)|0;N=L;I=pr(Hb|0,Ib|0,E|0,0)|0;Mb=p;Nb=E;Ob=I;Pb=L;Qb=M;Rb=N;Sb=Tb}N=Mb+1|0;if((i[Mb>>0]|0)!=17){Q=103;break}do if((Nb|0)==1){if((Ob|0)==0&(Pb|0)==0){Ub=N;Vb=Sb;Wb=0;Xb=0;Yb=Qb;Zb=Rb;_b=0;break}M=sr(Qb|0,Rb|0,1,0)|0;I=L;E=sr(Ob|0,Pb|0,-1,-1)|0;Ub=N;Vb=0;Wb=E;Xb=L;Yb=M;Zb=I;_b=0}else{Ub=Mb+2|0;Vb=Sb;Wb=Ob;Xb=Pb;Yb=Qb;Zb=Rb;_b=Nb+-2|0}while(0);F=F+1<<16>>16;if((F&65535)>=(m[g>>1]|0))break d;else{B=_b;D=Wb;u=Xb;A=Yb;w=Zb;z=Ub;x=Vb}}if((Q|0)==99)Ja(146063,144647,902,146078);else if((Q|0)==103){ie(k[t>>2]|0,146111,146139,f);break a}}while(0);v=C&255;e:do switch(C<<24>>24){case 4:case 2:case 1:{switch(y|0){case 4:case 2:case 1:break;default:break e}n=a+192|0;x=m[n>>1]|0;z=a+194|0;w=m[z>>1]|0;if((v|0)==(x|0)&(y|0)==(w|0))break a;A=k[t>>2]|0;k[d>>2]=x;k[d+4>>2]=w;k[d+8>>2]=v;k[d+12>>2]=y;ie(A,146111,146261,d);j[n>>1]=C&255;j[z>>1]=y;break a;break}default:{}}while(0);ie(k[t>>2]|0,146111,146139,e);break}}else{P=t;Q=114}}else{P=a+628|0;Q=114}while(0);if((Q|0)==114)ie(k[P>>2]|0,145945,146379,c);ne(p);r=b;return 1}function Wf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;e=d+488|0;if(k[e>>2]|0){if(!(k[d+16>>2]|0)){eg(d);k[e>>2]=0;f=4}}else f=4;do if((f|0)==4){if(Hg(d)|0){k[e>>2]=1;break}if(!d)Ja(154187,144647,972,145904)}while(0);if(!(k[d+16>>2]|0))Ja(145286,144647,973,145904);if((k[a+48>>2]&4|0)!=0?(e=d+800|0,k[d+24>>2]=e,k[d+812>>2]=16,k[d+816>>2]=1,k[d+820>>2]=29,k[d+824>>2]=5,k[d+804>>2]=0,k[e>>2]=0,k[d+808>>2]=6,(Cg(d,0)|0)!=2):0){vc(k[a+628>>2]|0,145904,145920,c);g=0;r=b;return g|0}c=j[a+90>>1]|0;j[d+832>>1]=c;if(c<<16>>16==6){j[d+834>>1]=j[a+192>>1]|0;h=j[a+194>>1]|0}else{j[d+834>>1]=1;h=1}j[d+836>>1]=h;h=d+800|0;k[d+24>>2]=h;k[d+808>>2]=7;k[d+812>>2]=16;k[d+816>>2]=1;k[d+820>>2]=29;k[d+824>>2]=5;k[d+804>>2]=0;k[h>>2]=0;k[a+652>>2]=3;g=1;r=b;return g|0}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=r;r=r+80|0;d=c+72|0;e=c+64|0;f=c+48|0;g=c+40|0;h=c+32|0;i=c+16|0;l=c;n=a+576|0;o=k[n>>2]|0;if(!o)Ja(154187,144647,1017,145272);p=o+16|0;if((k[p>>2]|0)==0?(ub[k[a+508>>2]&63](a)|0,(k[p>>2]|0)==0):0)Ja(145286,144647,1024,145272);if(!(Bg(o)|0)){q=0;r=c;return q|0}if((Cg(o,1)|0)!=1){q=0;r=c;return q|0}k[a+604>>2]=k[o+800>>2];k[a+608>>2]=k[o+804>>2];p=(k[a+60>>2]|0)-(k[a+444>>2]|0)|0;if(!(k[a+12>>2]&1024)){s=k[a+56>>2]|0;t=k[a+100>>2]|0;u=Pd(a)|0;v=p>>>0>t>>>0?t:p;w=s}else{s=k[a+68>>2]|0;p=k[a+72>>2]|0;u=de(a)|0;v=p;w=s}k[o+840>>2]=u;u=a+126|0;if(!(b<<16>>16==0|(j[u>>1]|0)!=2)){b=m[o+834>>1]|0;if(w>>>0<(0-b|0)>>>0)x=((w+-1+b|0)>>>0)/(b>>>0)|0;else x=0;b=m[o+836>>1]|0;if(v>>>0<(0-b|0)>>>0){y=((v+-1+b|0)>>>0)/(b>>>0)|0;z=x}else{y=0;z=x}}else{y=v;z=w}w=o+28|0;v=k[w>>2]|0;x=k[o+32>>2]|0;if(v>>>0<z>>>0|x>>>0<y>>>0){b=k[a+628>>2]|0;k[l>>2]=z;k[l+4>>2]=y;k[l+8>>2]=v;k[l+12>>2]=x;ie(b,145272,145317,l);A=k[w>>2]|0}else A=v;v=k[o+32>>2]|0;if(A>>>0>z>>>0|v>>>0>y>>>0){w=k[a+628>>2]|0;k[i>>2]=z;k[i+4>>2]=y;k[i+8>>2]=A;k[i+12>>2]=v;vc(w,145272,145374,i);q=0;r=c;return q|0}i=o+36|0;w=k[i>>2]|0;v=(j[u>>1]|0)==1;if(v)B=m[a+98>>1]|0;else B=1;if((w|0)!=(B|0)){vc(k[a+628>>2]|0,145272,145450,h);q=0;r=c;return q|0}if((k[o+212>>2]|0)!=(m[a+84>>1]|0)){vc(k[a+628>>2]|0,145272,145480,g);q=0;r=c;return q|0}g=o+216|0;h=k[g>>2]|0;B=k[h+8>>2]|0;a:do if(v){u=m[o+834>>1]|0;A=k[h+12>>2]|0;y=j[o+836>>1]|0;if(!((B|0)==(u|0)&(A|0)==(y&65535|0))){z=k[a+628>>2]|0;k[f>>2]=B;k[f+4>>2]=A;k[f+8>>2]=u;k[f+12>>2]=y&65535;vc(z,145272,145509,f);q=0;r=c;return q|0}do if((w|0)>1){z=1;while(1){if((k[h+(z*88|0)+8>>2]|0)!=1)break;if((k[h+(z*88|0)+12>>2]|0)!=1)break;z=z+1|0;if((z|0)>=(w|0)){C=37;break}}if((C|0)==37)if(v)break;else{C=41;break a}vc(k[a+628>>2]|0,145272,145574,e);q=0;r=c;return q|0}while(0);if((j[o+832>>1]|0)==6?(k[o+924>>2]|0)==1:0){k[o+40>>2]=3;k[o+44>>2]=2;C=45;break}k[o+40>>2]=0;k[o+44>>2]=0;if((j[o+834>>1]|0)==1?(j[o+836>>1]|0)==1:0){C=45;break}k[o+68>>2]=1;k[o+76>>2]=0;k[a+532>>2]=22;k[a+540>>2]=23;k[a+548>>2]=23;D=0}else{if((B|0)==1?(k[h+12>>2]|0)==1:0){C=41;break}vc(k[a+628>>2]|0,145272,145574,d);q=0;r=c;return q|0}while(0);if((C|0)==41){k[o+40>>2]=0;k[o+44>>2]=0;C=45}if((C|0)==45){k[o+68>>2]=0;k[a+532>>2]=20;k[a+540>>2]=20;k[a+548>>2]=20;D=1}a=(Fg(o)|0)==0;if(D|a){q=a&1^1;r=c;return q|0}a=k[i>>2]|0;i=k[n>>2]|0;b:do if((a|0)>0){n=0;D=k[g>>2]|0;C=0;while(1){d=k[D+8>>2]|0;h=k[D+12>>2]|0;B=mg(i,k[D+28>>2]<<3,h<<3)|0;if(!B){q=0;break}e=(ha(h,d)|0)+C|0;k[i+844+(n<<2)>>2]=B;n=n+1|0;if((n|0)>=(a|0)){E=e;break b}else{D=D+88|0;C=e}}r=c;return q|0}else E=0;while(0);k[i+888>>2]=E;k[o+884>>2]=8;q=1;r=c;return q|0}function Yf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=r;r=r+16|0;e=d+4|0;f=k[a+576>>2]|0;g=a+604|0;h=f+800|0;k[h>>2]=k[g>>2];i=a+608|0;j=f+804|0;k[j>>2]=k[i>>2];l=f+840|0;m=k[l>>2]|0;if(!m){n=0;r=d;return n|0}o=(c|0)/(m|0)|0;if((c|0)%(m|0)|0)ie(k[a+628>>2]|0,k[a>>2]|0,145243,d);m=k[f+32>>2]|0;c=(o|0)>(m|0)?m:o;a:do if(c){o=a+444|0;m=b;p=c;while(1){k[e>>2]=m;if((zg(f,e)|0)!=1){n=0;break}k[o>>2]=(k[o>>2]|0)+1;if((p|0)>1){m=m+(k[l>>2]|0)|0;p=p+-1|0}else break a}r=d;return n|0}while(0);k[g>>2]=k[h>>2];k[i>>2]=k[j>>2];if((k[f+140>>2]|0)>>>0<(k[f+116>>2]|0)>>>0)q=1;else q=(Ag(f)|0)!=0;n=q&1;r=d;return n|0}function Zf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;b=r;r=r+96|0;c=b+56|0;d=b+48|0;e=b+40|0;f=b+32|0;g=b+24|0;h=b+16|0;i=b+8|0;l=b;n=b+88|0;p=b+64|0;q=a+576|0;s=k[q>>2]|0;t=s+488|0;if(k[t>>2]|0){if(k[s+16>>2]|0){eg(s);k[t>>2]=0;u=4}}else u=4;do if((u|0)==4){if(ng(s)|0){k[t>>2]=1;break}if(!s)Ja(154187,144647,1590,144952)}while(0);if(k[s+16>>2]|0)Ja(144876,144647,1591,144952);t=j[a+90>>1]|0;u=s+832|0;j[u>>1]=t;a:do if((j[a+126>>1]|0)==1){v=j[a+98>>1]|0;k[s+36>>2]=v&65535;if(t<<16>>16==6){w=s+40|0;if((k[s+924>>2]|0)==1){k[w>>2]=2;break}else{k[w>>2]=3;break}}b:do if((t&65535)<2){if(v<<16>>16==1){k[s+40>>2]=1;break a}}else switch(t<<16>>16){case 2:{if(v<<16>>16!=3)break b;k[s+40>>2]=2;break a;break}case 5:{if(v<<16>>16!=4)break b;k[s+40>>2]=4;break a;break}default:break b}while(0);k[s+40>>2]=0}else{k[s+36>>2]=1;k[s+40>>2]=0}while(0);if(!(og(s)|0)){x=0;r=b;return x|0}t=m[u>>1]|0;switch(t|0){case 6:{j[s+834>>1]=j[a+192>>1]|0;j[s+836>>1]=j[a+194>>1]|0;k[l>>2]=n;if(!(Pb(a,532,l)|0)){l=1<<m[a+84>>1];o[p>>2]=0.0;y=+(l+-1|0);o[p+4>>2]=y;z=+(l>>1|0);o[p+8>>2]=z;o[p+12>>2]=y;o[p+16>>2]=z;o[p+20>>2]=y;k[i>>2]=p;Ob(a,532,i)|0}break}case 4:case 3:{i=k[a+628>>2]|0;k[h>>2]=t;vc(i,144952,144968,h);x=0;r=b;return x|0}default:{j[s+834>>1]=1;j[s+836>>1]=1}}h=j[a+84>>1]|0;i=h&65535;if(h<<16>>16!=8){h=k[a+628>>2]|0;k[g>>2]=i;vc(h,144952,145018,g);x=0;r=b;return x|0}k[s+72>>2]=i;i=a+12|0;if(!(k[i>>2]&1024)){g=k[a+100>>2]|0;if(g>>>0<(k[a+60>>2]|0)>>>0?(h=m[s+836>>1]<<3,((g>>>0)%(h>>>0)|0|0)!=0):0){g=k[a+628>>2]|0;k[d>>2]=h;vc(g,144952,145135,d);x=0;r=b;return x|0}}else{d=m[s+836>>1]<<3;if(((k[a+72>>2]|0)>>>0)%(d>>>0)|0){g=k[a+628>>2]|0;k[f>>2]=d;vc(g,144952,145056,f);x=0;r=b;return x|0}f=m[s+834>>1]<<3;if(((k[a+68>>2]|0)>>>0)%(f>>>0)|0){g=k[a+628>>2]|0;k[e>>2]=f;vc(g,144952,145096,e);x=0;r=b;return x|0}}do if(k[s+928>>2]&3){e=k[s+912>>2]|0;if((e|0)!=0?(Lq(e,145180,8)|0)!=0:0)break;e=k[q>>2]|0;if(!(jg(e,k[e+920>>2]|0)|0)){x=0;r=b;return x|0}if(!(pg(e)|0)){x=0;r=b;return x|0}g=k[e+928>>2]|0;if(g&1){f=e+88|0;d=k[f>>2]|0;if(d)k[d+128>>2]=0;if((j[e+832>>1]|0)==6?(d=k[f+4>>2]|0,(d|0)!=0):0)k[d+128>>2]=0}if(g&2){g=e+120|0;d=k[g>>2]|0;if(d)k[d+276>>2]=0;d=e+136|0;f=k[d>>2]|0;if(f)k[f+276>>2]=0;if((j[e+832>>1]|0)==6){f=k[g+4>>2]|0;if(f)k[f+276>>2]=0;f=k[d+4>>2]|0;if(f)k[f+276>>2]=0}}f=e+912|0;d=k[f>>2]|0;if(d)ne(d);d=e+916|0;k[d>>2]=1e3;g=me(1e3)|0;k[f>>2]=g;if(!g){k[d>>2]=0;vc(k[(k[e+828>>2]|0)+628>>2]|0,145190,145211,c);x=0;r=b;return x|0}k[e+24>>2]=e+780;k[e+788>>2]=8;k[e+792>>2]=17;k[e+796>>2]=9;if(!(tg(e)|0)){x=0;r=b;return x|0}else{k[i>>2]=k[i>>2]|8;e=a+48|0;k[e>>2]=k[e>>2]|4;break}}else{e=a+48|0;k[e>>2]=k[e>>2]&-5}while(0);k[s+24>>2]=s+780;k[s+788>>2]=10;k[s+792>>2]=18;k[s+796>>2]=11;x=1;r=b;return x|0}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;c=r;r=r+16|0;d=c;e=a+576|0;f=k[e>>2]|0;if(!f)Ja(154187,144647,1745,144862);g=f+16|0;h=k[g>>2]|0;if((h|0)==1){ub[k[a+516>>2]&63](a)|0;i=k[g>>2]|0}else i=h;if(i)Ja(144876,144647,1752,144862);if(!(k[a+12>>2]&1024)){i=k[a+56>>2]|0;h=(k[a+60>>2]|0)-(k[a+444>>2]|0)|0;g=k[a+100>>2]|0;l=Pd(a)|0;n=h>>>0>g>>>0?g:h;o=i}else{i=k[a+68>>2]|0;h=k[a+72>>2]|0;l=de(a)|0;n=h;o=i}k[f+840>>2]=l;l=j[a+126>>1]|0;i=b<<16>>16==0;if(!(i|l<<16>>16!=2)){h=m[f+834>>1]|0;if(o>>>0<(0-h|0)>>>0)p=((o+-1+h|0)>>>0)/(h>>>0)|0;else p=0;h=m[f+836>>1]|0;if(n>>>0<(0-h|0)>>>0){q=((n+-1+h|0)>>>0)/(h>>>0)|0;s=p}else{q=0;s=p}}else{q=n;s=o}if((q|s)>>>0>65535){vc(k[a+628>>2]|0,144862,144908,d);t=0;r=c;return t|0}k[f+28>>2]=s;k[f+32>>2]=q;do if(l<<16>>16==1){k[f+36>>2]=m[a+98>>1];if((j[f+832>>1]|0)!=6){if(!(ig(f,k[f+40>>2]|0)|0))t=0;else{u=0;break}r=c;return t|0}do if((k[f+924>>2]|0)==1)v=0;else{if((j[f+834>>1]|0)==1?(j[f+836>>1]|0)==1:0){v=0;break}v=1}while(0);if(!(ig(f,3)|0)){t=0;r=c;return t|0}else{q=k[f+84>>2]|0;k[q+8>>2]=m[f+834>>1];k[q+12>>2]=m[f+836>>1];u=v;break}}else{if(!(ig(f,0)|0)){t=0;r=c;return t|0}q=k[f+84>>2]|0;k[q>>2]=b&65535;if(i|(j[f+832>>1]|0)!=6)u=0;else{k[q+16>>2]=1;k[q+20>>2]=1;k[q+24>>2]=1;u=0}}while(0);k[f+244>>2]=0;k[f+256>>2]=0;if(!(jg(f,k[f+920>>2]|0)|0)){t=0;r=c;return t|0}i=k[f+928>>2]|0;b=f+88|0;v=k[b>>2]|0;l=(v|0)==0;if(!(i&1)){if(!l)k[v+128>>2]=0;q=k[b+4>>2]|0;if(q)k[q+128>>2]=0}else{if(!l)k[v+128>>2]=1;v=k[b+4>>2]|0;if(v)k[v+128>>2]=1}if(!(i&2))k[f+216>>2]=1;else{i=f+120|0;v=k[i>>2]|0;if(v)k[v+276>>2]=1;v=f+136|0;b=k[v>>2]|0;if(b)k[b+276>>2]=1;b=k[i+4>>2]|0;if(b)k[b+276>>2]=1;b=k[v+4>>2]|0;if(b)k[b+276>>2]=1;k[f+216>>2]=0}b=(u|0)!=0;k[f+208>>2]=b&1;k[a+536>>2]=b?24:21;k[a+544>>2]=b?24:21;k[a+552>>2]=b?24:21;if(!(lg(f)|0)){t=0;r=c;return t|0}if(b){b=k[f+76>>2]|0;a=k[e>>2]|0;a:do if((b|0)>0){e=0;u=k[f+84>>2]|0;v=0;while(1){i=k[u+8>>2]|0;l=k[u+12>>2]|0;q=mg(a,k[u+28>>2]<<3,l<<3)|0;if(!q){t=0;break}s=(ha(l,i)|0)+v|0;k[a+844+(e<<2)>>2]=q;e=e+1|0;if((e|0)>=(b|0)){w=s;break a}else{u=u+88|0;v=s}}r=c;return t|0}else w=0;while(0);k[a+888>>2]=w}k[f+884>>2]=0;t=1;r=c;return t|0}function $f(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=a+576|0;a=k[b>>2]|0;c=a+884|0;d=k[c>>2]|0;do if((d|0)>0){e=a+76|0;f=k[e>>2]|0;a:do if((f|0)>0){g=d;h=f;i=0;j=k[a+84>>2]|0;while(1){l=k[j+12>>2]|0;m=k[j+28>>2]<<3;n=ha(g,l)|0;if((n|0)<(l<<3|0)){o=a+844+(i<<2)|0;p=l<<3;l=n;do{n=k[o>>2]|0;qe(k[n+(l<<2)>>2]|0,k[n+(l+-1<<2)>>2]|0,m);l=l+1|0}while((l|0)!=(p|0));q=k[e>>2]|0}else q=h;p=i+1|0;if((p|0)>=(q|0))break a;g=k[c>>2]|0;h=q;i=p;j=j+88|0}}while(0);e=k[a+276>>2]<<3;if((gg(a,a+844|0,e)|0)==(e|0)){r=k[b>>2]|0;break}else{s=0;return s|0}}else r=a;while(0);s=hg(r)|0;return s|0}function ag(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=r;r=r+16|0;e=d+8|0;f=d+12|0;g=k[a+576>>2]|0;if(!g)Ja(154187,144647,1883,144795);h=g+840|0;j=k[h>>2]|0;m=(c|0)/(j|0)|0;if((c|0)%(j|0)|0)ie(k[a+628>>2]|0,k[a>>2]|0,144806,d);if(!(k[a+12>>2]&1024)){j=k[a+444>>2]|0;c=k[a+60>>2]|0;n=(j+m|0)>>>0>c>>>0?c-j|0:m}else n=m;m=g+72|0;j=k[m>>2]|0;if((j|0)==12){c=(k[h>>2]<<1|0)/3|0;o=me(c<<1)|0;if(!o){vc(k[a+628>>2]|0,144795,144836,e);p=0;r=d;return p|0}else{q=b;s=o;t=c;u=n;v=10}}else{w=b;x=j;y=0;z=0;A=n}while(1){if((v|0)==10){v=0;w=q;x=k[m>>2]|0;y=s;z=t;A=u}n=A+-1|0;B=(x|0)==12;if((A|0)<=0)break;if(B){j=(z|0)/2|0;k[f>>2]=y;if((z|0)>1){b=0;do{c=b*3|0;o=y+(b<<1<<1)|0;i[o>>0]=(l[w+(c+1)>>0]|0)>>>4|(l[w+c>>0]|0)<<4;i[o+1>>0]=i[w+(c+2)>>0]|0;b=b+1|0}while((b|0)<(j|0))}C=f}else{k[f>>2]=w;C=f}if((fg(g,C)|0)!=1){p=0;v=23;break}if((A|0)>1){j=a+444|0;k[j>>2]=(k[j>>2]|0)+1}q=w+(k[h>>2]|0)|0;s=y;t=z;u=n;v=10}if((v|0)==23){r=d;return p|0}if(!B){p=1;r=d;return p|0}ne(y);p=1;r=d;return p|0}function bg(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(154168,144647,2075,144783);k[a+672>>2]=k[c+892>>2];k[a+668>>2]=k[c+896>>2];k[a+676>>2]=k[c+900>>2];if(k[c+488>>2]|0)eg(c);d=k[c+912>>2]|0;if(!d){e=k[b>>2]|0;ne(e);k[b>>2]=0;Ve(a);return}ne(d);e=k[b>>2]|0;ne(e);k[b>>2]=0;Ve(a);return}function cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=yb[k[(k[a+576>>2]|0)+904>>2]&127](a,b)|0;if(c>>>0>=(k[a+60>>2]|0)>>>0){d=c;return d|0}b=m[a+194>>1]|0;a=b<<3;if(c>>>0<(0-a|0)>>>0)e=(((c+-1+a|0)>>>0)/(a>>>0)|0)<<3;else e=0;d=ha(e,b)|0;return d|0}function dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;vb[k[(k[a+576>>2]|0)+908>>2]&127](a,b,c);d=k[b>>2]|0;e=m[a+192>>1]|0;f=e<<3;if(d>>>0<(0-f|0)>>>0)g=(((d+-1+f|0)>>>0)/(f>>>0)|0)<<3;else g=0;f=ha(g,e)|0;k[b>>2]=f;f=k[c>>2]|0;b=m[a+194>>1]|0;a=b<<3;if(f>>>0>=(0-a|0)>>>0){h=0;i=ha(h,b)|0;k[c>>2]=i;return}h=(((f+-1+a|0)>>>0)/(a>>>0)|0)<<3;i=ha(h,b)|0;k[c>>2]=i;return}function eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=6;break}w=0;pa(12,a|0);e=w;w=0;if((e|0)!=0&(x|0)!=0){h=vr(k[e>>2]|0,c|0,b|0)|0;if(!h)La(e|0,x|0);L=x}else h=-1;if((h|0)==1)f=L;else break}if((g|0)==6){kr(c|0);return}kr(c|0);return}function fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+624|0,1,d|0,c|0)|0;c=L;w=0;e=w;w=0;if((e|0)!=0&(x|0)!=0){f=vr(k[e>>2]|0,d|0,c|0)|0;if(!f)La(e|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=-1;i=6;break}w=0;j=ma(15,a|0,b|0,1)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){l=vr(k[f>>2]|0,d|0,c|0)|0;if(!l)La(f|0,x|0);L=x}else l=-1;if((l|0)==1)g=L;else break}if((i|0)==6){kr(d|0);return h|0}h=j;kr(d|0);return h|0}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=4;e=jr(40)|0;k[e>>2]=0;e=tr(a+624|0,1,e|0,d|0)|0;d=L;w=0;f=w;w=0;if((f|0)!=0&(x|0)!=0){g=vr(k[f>>2]|0,e|0,d|0)|0;if(!g)La(f|0,x|0);L=x}else g=-1;if((g|0)==1)h=L;else h=0;while(1){if(h){i=-1;j=6;break}w=0;l=ma(16,a|0,b|0,c|0)|0;g=w;w=0;if((g|0)!=0&(x|0)!=0){m=vr(k[g>>2]|0,e|0,d|0)|0;if(!m)La(g|0,x|0);L=x}else m=-1;if((m|0)==1)h=L;else break}if((j|0)==6){kr(e|0);return i|0}i=l;kr(e|0);return i|0}function hg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;pa(13,a|0);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+624|0,1,d|0,c|0)|0;c=L;w=0;e=w;w=0;if((e|0)!=0&(x|0)!=0){f=vr(k[e>>2]|0,d|0,c|0)|0;if(!f)La(e|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=0;i=6;break}w=0;qa(2,a|0,b|0);f=w;w=0;if((f|0)!=0&(x|0)!=0){j=vr(k[f>>2]|0,d|0,c|0)|0;if(!j)La(f|0,x|0);L=x}else j=-1;if((j|0)==1)g=L;else break}if((i|0)==6){kr(d|0);return h|0}h=1;kr(d|0);return h|0}function jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+624|0,1,d|0,c|0)|0;c=L;w=0;e=w;w=0;if((e|0)!=0&(x|0)!=0){f=vr(k[e>>2]|0,d|0,c|0)|0;if(!f)La(e|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=0;i=6;break}w=0;ua(12,a|0,b|0,0);f=w;w=0;if((f|0)!=0&(x|0)!=0){j=vr(k[f>>2]|0,d|0,c|0)|0;if(!j)La(f|0,x|0);L=x}else j=-1;if((j|0)==1)g=L;else break}if((i|0)==6){kr(d|0);return h|0}h=1;kr(d|0);return h|0}function kg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;d=r;r=r+16|0;e=k[a+576>>2]|0;f=k[e+888>>2]|0;if(!e)Ja(154187,144647,1965,144938);g=m[e+834>>1]|0;h=e+836|0;j=m[h>>1]|0;l=(ha(j,g)|0)+2|0;n=((ha(ha(k[e+72>>2]|0,(((k[e+28>>2]|0)+-1+g|0)>>>0)/(g>>>0)|0)|0,l)|0)+7|0)>>>3;l=ha((c|0)/(n|0)|0,j)|0;if((c|0)%(n|0)|0)ie(k[a+628>>2]|0,k[a>>2]|0,144806,d);c=e+84|0;j=k[(k[c>>2]|0)+132>>2]|0;g=e+276|0;if((l|0)<=0){o=1;r=d;return o|0}p=e+76|0;q=e+884|0;s=e+844|0;t=a+444|0;a=(j|0)==0;u=b;b=l;while(1){l=k[p>>2]|0;if((l|0)>0){v=l;l=0;w=0;x=k[c>>2]|0;while(1){y=k[x+8>>2]|0;z=k[x+12>>2]|0;A=k[x+28>>2]|0;B=ha(y,j)|0;if((z|0)>0){C=e+844+(l<<2)|0;D=(y|0)==1;E=((A<<3)-B|0)>0;F=(A<<3)-B|0;B=ha(y,z)|0;A=a|(y|0)<1;G=w;H=0;while(1){I=u+G|0;J=(ha(k[q>>2]|0,z)|0)+H|0;K=k[(k[C>>2]|0)+(J<<2)>>2]|0;if(D)if(a)L=K;else{J=I;M=j;N=K;while(1){M=M+-1|0;i[N>>0]=i[J>>0]|0;if(!M)break;else{J=J+f|0;N=N+1|0}}L=K+j|0}else if(A)L=K;else{N=j;J=I;M=K;while(1){N=N+-1|0;O=M;P=0;while(1){i[O>>0]=i[J+P>>0]|0;P=P+1|0;if((P|0)==(y|0))break;else O=O+1|0}O=M+y|0;if(!N){L=O;break}else{J=J+f|0;M=O}}}if(E){M=L;J=0;while(1){i[M>>0]=i[M+-1>>0]|0;J=J+1|0;if((J|0)==(F|0))break;else M=M+1|0}}H=H+1|0;if((H|0)==(z|0))break;else G=G+y|0}Q=k[p>>2]|0;R=w+B|0}else{Q=v;R=w}l=l+1|0;if((l|0)>=(Q|0))break;else{v=Q;w=R;x=x+88|0}}}x=k[q>>2]|0;k[q>>2]=x+1;if((x|0)>6){x=k[g>>2]<<3;if((gg(e,s,x)|0)!=(x|0)){o=0;S=28;break}k[q>>2]=0}x=m[h>>1]|0;k[t>>2]=(k[t>>2]|0)+x;b=b-x|0;if((b|0)<=0){o=1;S=28;break}else u=u+n|0}if((S|0)==28){r=d;return o|0}return 0}function lg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;qa(3,a|0,0);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function mg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=4;e=jr(40)|0;k[e>>2]=0;e=tr(a+624|0,1,e|0,d|0)|0;d=L;w=0;f=w;w=0;if((f|0)!=0&(x|0)!=0){g=vr(k[f>>2]|0,e|0,d|0)|0;if(!g)La(f|0,x|0);L=x}else g=-1;if((g|0)==1)h=L;else h=0;while(1){if(h){i=0;j=6;break}w=0;l=wa(k[(k[a+4>>2]|0)+8>>2]|0,a|0,1,b|0,c|0)|0;g=w;w=0;if((g|0)!=0&(x|0)!=0){m=vr(k[g>>2]|0,e|0,d|0)|0;if(!m)La(g|0,x|0);L=x}else m=-1;if((m|0)==1)h=L;else break}if((j|0)==6){kr(e|0);return i|0}i=l;kr(e|0);return i|0}function ng(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=4;c=jr(40)|0;k[c>>2]=0;d=a+492|0;w=0;e=ta(19,d|0)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){g=vr(k[f>>2]|0,c|0,b|0)|0;if(!g)La(f|0,x|0);L=x}else g=-1;if((g|0)!=1){k[a>>2]=e;k[d>>2]=14;k[a+500>>2]=15;k[a+12>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){h=vr(k[d>>2]|0,c|0,b|0)|0;if(!h)La(d|0,x|0);L=x}else h=-1;if((h|0)!=1)i=0;else i=L}else i=L;while(1){if(i){j=0;l=7;break}w=0;ua(13,a|0,90,440);h=w;w=0;if((h|0)!=0&(x|0)!=0){m=vr(k[h>>2]|0,c|0,b|0)|0;if(!m)La(h|0,x|0);L=x}else m=-1;if((m|0)==1)i=L;else break}if((l|0)==7){kr(c|0);return j|0}j=1;kr(c|0);return j|0}function og(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;pa(16,a|0);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function pg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;qa(4,a|0,1);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function qg(a){a=a|0;k[a+780>>2]=k[a+912>>2];k[a+784>>2]=k[a+916>>2];return}function rg(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+912|0;c=a+916|0;d=oe(k[b>>2]|0,(k[c>>2]|0)+1e3|0)|0;if(!d){e=k[a>>2]|0;k[e+20>>2]=56;k[e+24>>2]=100;qb[k[e>>2]&127](a)}e=k[c>>2]|0;k[a+780>>2]=d+e;k[a+784>>2]=1e3;k[b>>2]=d;k[c>>2]=e+1e3;return 1}function sg(a){a=a|0;var b=0;b=a+916|0;k[b>>2]=(k[b>>2]|0)-(k[a+784>>2]|0);return}function tg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;pa(17,a|0);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function ug(a){a=a|0;var b=0;b=k[a+828>>2]|0;k[a+780>>2]=k[b+588>>2];k[a+784>>2]=k[b+592>>2];return}function vg(a){a=a|0;var b=0,c=0;b=k[a+828>>2]|0;c=b+592|0;k[b+608>>2]=k[c>>2];je(b)|0;k[a+780>>2]=k[b+588>>2];k[a+784>>2]=k[c>>2];return 1}function wg(a){a=a|0;var b=0;b=k[a+828>>2]|0;k[b+604>>2]=k[a+780>>2];k[b+608>>2]=(k[b+592>>2]|0)-(k[a+784>>2]|0);return}function xg(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+208|0;c=b;d=b+8|0;rb[k[(k[a>>2]|0)+12>>2]&31](a,d);b=k[(k[a+828>>2]|0)+628>>2]|0;k[c>>2]=d;vc(b,145235,154321,c);Ak(a);La(a+624|0,1)}function yg(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+208|0;c=b;d=b+8|0;rb[k[(k[a>>2]|0)+12>>2]&31](a,d);e=k[(k[a+828>>2]|0)+628>>2]|0;k[c>>2]=d;ie(e,145235,154321,c);r=b;return}function zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+624|0,1,d|0,c|0)|0;c=L;w=0;e=w;w=0;if((e|0)!=0&(x|0)!=0){f=vr(k[e>>2]|0,d|0,c|0)|0;if(!f)La(e|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=-1;i=6;break}w=0;j=ma(17,a|0,b|0,1)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){l=vr(k[f>>2]|0,d|0,c|0)|0;if(!l)La(f|0,x|0);L=x}else l=-1;if((l|0)==1)g=L;else break}if((i|0)==6){kr(d|0);return h|0}h=j;kr(d|0);return h|0}function Ag(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=-1;h=6;break}w=0;i=ta(20,a|0)|0;e=w;w=0;if((e|0)!=0&(x|0)!=0){j=vr(k[e>>2]|0,c|0,b|0)|0;if(!j)La(e|0,x|0);L=x}else j=-1;if((j|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=i;kr(c|0);return g|0}function Bg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;pa(18,a|0);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function Cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+624|0,1,d|0,c|0)|0;c=L;w=0;e=w;w=0;if((e|0)!=0&(x|0)!=0){f=vr(k[e>>2]|0,d|0,c|0)|0;if(!f)La(e|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=-1;i=6;break}w=0;j=xa(30,a|0,b|0)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){l=vr(k[f>>2]|0,d|0,c|0)|0;if(!l)La(f|0,x|0);L=x}else l=-1;if((l|0)==1)g=L;else break}if((i|0)==6){kr(d|0);return h|0}h=j;kr(d|0);return h|0}function Dg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=r;r=r+16|0;vc(k[a+628>>2]|0,145746,145763,d);r=d;return 0}function Eg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;d=r;r=r+16|0;e=d+8|0;f=d;g=k[a+576>>2]|0;h=k[g+32>>2]|0;a:do if(h){j=g+216|0;l=k[(k[j>>2]|0)+132>>2]|0;n=k[g+888>>2]|0;o=g+840|0;p=g+884|0;q=g+320|0;s=g+844|0;t=g+36|0;u=g+836|0;v=a+444|0;w=l+-1|0;x=ha(n,w)|0;y=(l|0)==0;z=b;A=c;B=k[o>>2]|0;C=h;b:while(1){if((A|0)<(B|0)){D=4;break}E=k[p>>2]|0;if((E|0)>7){F=k[q>>2]<<3;if((Gg(g,s,F)|0)!=(F|0)){G=0;D=32;break}k[p>>2]=0;H=0}else H=E;if((k[t>>2]|0)>0){E=0;F=0;I=k[j>>2]|0;while(1){J=k[I+8>>2]|0;K=k[I+12>>2]|0;c:do if((K|0)>0){L=g+844+(E<<2)|0;M=J+x|0;if((J|0)==1){N=F;O=0;while(1){if((A|0)<(M+N|0)){D=19;break b}if(!y){P=(k[L>>2]|0)+((ha(k[p>>2]|0,K)|0)+O<<2)|0;Q=k[P>>2]|0;P=l;R=z+N|0;while(1){P=P+-1|0;i[R>>0]=i[Q>>0]|0;if(!P)break;else{Q=Q+1|0;R=R+n|0}}}R=N+1|0;O=O+1|0;if((O|0)>=(K|0)){S=R;break c}else N=R}}N=y|(J|0)<1;O=F;R=0;while(1){if((A|0)<(M+O|0)){D=19;break b}if(!N){Q=(k[L>>2]|0)+((ha(k[p>>2]|0,K)|0)+R<<2)|0;P=w;T=k[Q>>2]|0;Q=z+O|0;while(1){U=T;V=0;while(1){i[Q+V>>0]=i[U>>0]|0;V=V+1|0;if((V|0)==(J|0))break;else U=U+1|0}if(!P)break;else{P=P+-1|0;T=T+J|0;Q=Q+n|0}}}Q=O+J|0;R=R+1|0;if((R|0)>=(K|0)){S=Q;break}else O=Q}}else S=F;while(0);E=E+1|0;if((E|0)>=(k[t>>2]|0))break;else{F=S;I=I+88|0}}W=k[p>>2]|0}else W=H;k[p>>2]=W+1;I=m[u>>1]|0;k[v>>2]=(k[v>>2]|0)+I;F=k[o>>2]|0;C=C-I|0;if((C|0)<=0)break a;else{z=z+F|0;A=A-F|0;B=F}}if((D|0)==4){vc(k[a+628>>2]|0,145605,145619,f);G=0;r=d;return G|0}else if((D|0)==19){vc(k[a+628>>2]|0,145605,145669,e);G=0;r=d;return G|0}else if((D|0)==32){r=d;return G|0}}while(0);if((k[g+140>>2]|0)>>>0<(k[g+116>>2]|0)>>>0)X=1;else X=(Ag(g)|0)!=0;G=X&1;r=d;return G|0}function Fg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=4;c=jr(40)|0;k[c>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){e=vr(k[d>>2]|0,c|0,b|0)|0;if(!e)La(d|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;ta(21,a|0)|0;e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,c|0,b|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(c|0);return g|0}g=1;kr(c|0);return g|0}function Gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=4;e=jr(40)|0;k[e>>2]=0;e=tr(a+624|0,1,e|0,d|0)|0;d=L;w=0;f=w;w=0;if((f|0)!=0&(x|0)!=0){g=vr(k[f>>2]|0,e|0,d|0)|0;if(!g)La(f|0,x|0);L=x}else g=-1;if((g|0)==1)h=L;else h=0;while(1){if(h){i=-1;j=6;break}w=0;l=ma(18,a|0,b|0,c|0)|0;g=w;w=0;if((g|0)!=0&(x|0)!=0){m=vr(k[g>>2]|0,e|0,d|0)|0;if(!m)La(g|0,x|0);L=x}else m=-1;if((m|0)==1)h=L;else break}if((j|0)==6){kr(e|0);return i|0}i=l;kr(e|0);return i|0}function Hg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;b=4;c=jr(40)|0;k[c>>2]=0;d=a+492|0;w=0;e=ta(19,d|0)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){g=vr(k[f>>2]|0,c|0,b|0)|0;if(!g)La(f|0,x|0);L=x}else g=-1;if((g|0)!=1){k[a>>2]=e;k[d>>2]=14;k[a+500>>2]=15;k[a+12>>2]=0;c=tr(a+624|0,1,c|0,b|0)|0;b=L;w=0;d=w;w=0;if((d|0)!=0&(x|0)!=0){h=vr(k[d>>2]|0,c|0,b|0)|0;if(!h)La(d|0,x|0);L=x}else h=-1;if((h|0)!=1)i=0;else i=L}else i=L;while(1){if(i){j=0;l=7;break}w=0;ua(14,a|0,90,488);h=w;w=0;if((h|0)!=0&(x|0)!=0){m=vr(k[h>>2]|0,c|0,b|0)|0;if(!m)La(h|0,x|0);L=x}else m=-1;if((m|0)==1)i=L;else break}if((l|0)==7){kr(c|0);return j|0}j=1;kr(c|0);return j|0}function Ig(a){a=a|0;var b=0;b=k[a>>2]|0;k[b+20>>2]=123;rb[k[b+4>>2]&31](a,-1);b=a+800|0;k[b>>2]=145943;k[b+4>>2]=2;return 1}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((b|0)<=0)return;c=a+800|0;d=c+4|0;e=k[d>>2]|0;if(e>>>0<b>>>0){f=k[a>>2]|0;k[f+20>>2]=123;rb[k[f+4>>2]&31](a,-1);k[c>>2]=145943;k[d>>2]=2;return}else{k[c>>2]=(k[c>>2]|0)+b;k[d>>2]=e-b;return}}function Kg(a){a=a|0;return}function Lg(a){a=a|0;var b=0;b=a+800|0;k[b>>2]=k[a+912>>2];k[b+4>>2]=k[a+916>>2];return}function Mg(a){a=a|0;var b=0,c=0;b=k[a+828>>2]|0;c=a+800|0;k[c>>2]=k[b+588>>2];k[c+4>>2]=k[b+608>>2];return}function Ng(a,b,c){a=+a;b=+b;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0;if(b<.016939999535679817){d=Sg(a,b)|0;return d|0}e=(c|0)==0;f=(b+-.016939999535679817)*285.7142768952314;if(e)g=f;else g=f+ +(iq()|0)*4.656612875245797e-10+-.5;c=~~g;if((c|0)>162){d=Sg(a,b)|0;return d|0}g=+o[107752+(c<<3)>>2];if(g>a){d=Sg(a,b)|0;return d|0}f=(a-g)*285.7142768952314;if(e)h=f;else h=f+ +(iq()|0)*4.656612875245797e-10+-.5;e=~~h;if((e|0)<(j[107752+(c<<3)+4>>1]|0)){d=(j[107752+(c<<3)+6>>1]|0)+e|0;return d|0}else{d=Sg(a,b)|0;return d|0}return 0}function Og(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0,i=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0;c=a>>>14&1023;if((c|0)!=0?(d=+ea(+((+(c|0)+.5)*.010830424696249145+-8.317766166719343)),!(d<=0.0)):0){c=a&16383;if(c>>>0>16288){e=.210526316;f=.473684211}else{a=0;g=163;a:while(1){h=a;while(1){if((g-h|0)<=1){i=h;k=9;break a}l=h+g>>1;m=j[107752+(l<<3)+6>>1]|0;n=c-(m<<16>>16)|0;if((n|0)>0)h=l;else{p=l;q=m;r=n;s=h;break}}if((r|0)<0){a=s;g=p}else{t=q;u=p;break}}if((k|0)==9){t=j[107752+(i<<3)+6>>1]|0;u=i}e=+o[107752+(u<<3)>>2]+(+(c-(t<<16>>16)|0)+.5)*3.5000001080334187e-03;f=(+(u|0)+.5)*3.5000001080334187e-03+.016939999535679817}v=1.0/(e*6.0-f*16.0+12.0);w=e*9.0*v;e=f*4.0*v;o[b>>2]=d*(w/e);o[b+4>>2]=d;o[b+8>>2]=d*((1.0-w-e)/e);return}o[b+8>>2]=0.0;o[b+4>>2]=0.0;o[b>>2]=0.0;return}function Pg(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,h=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0,n=0,p=0,q=0,r=0;c=a+4|0;d=+o[c>>2];e=d;if(!(e>=15.742))if(!(e<=.00024283)){f=(+fa(+e)*1.4426950408889634+12.0)*64.0;if(!b){g=d;h=f}else{e=f+ +(iq()|0)*4.656612875245797e-10+-.5;g=+o[c>>2];h=e}i=~~h;j=g}else{i=0;j=d}else{i=1023;j=d}d=+o[a>>2];g=j;j=d+g*15.0+ +o[a+8>>2]*3.0;if((i|0)==0|j<=0.0){k=.210526316;l=.473684211;m=Ng(k,l,b)|0;n=(m|0)<0;p=n?12266:m;q=i<<14;r=p|q;return r|0}k=d*4.0/j;l=g*9.0/j;m=Ng(k,l,b)|0;n=(m|0)<0;p=n?12266:m;q=i<<14;r=p|q;return r|0}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0,h=0.0,i=0.0,j=0.0,k=0,l=0,m=0.0,n=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0;c=a+4|0;d=+o[c>>2];do if(!(d>=18371976.0e12))if(!(d<=-18371976.0e12)){if(d>5.4136769e-20){e=(+fa(+d)*1.4426950408889634+64.0)*256.0;if(!b)f=e;else f=e+ +(iq()|0)*4.656612875245797e-10+-.5;g=~~f;break}if(d<-5.4136769e-20){e=(+fa(+-d)*1.4426950408889634+64.0)*256.0;if(!b)h=e;else h=e+ +(iq()|0)*4.656612875245797e-10+-.5;g=~~h|-32768}else g=0}else g=65535;else g=32767;while(0);h=+o[a>>2];d=+o[c>>2];f=h+d*15.0+ +o[a+8>>2]*3.0;if(!((g|0)==0|f<=0.0)){e=h*4.0/f;h=d*9.0/f;if(!(e<=0.0)){i=e;j=h;k=13}else{l=0;m=h}}else{i=.210526316;j=.473684211;k=13}if((k|0)==13){h=i*410.0;if(!b)n=h;else n=h+ +(iq()|0)*4.656612875245797e-10+-.5;l=~~n;m=j}k=l>>>0>255;if(m<=0.0){p=0;q=p>>>0>255;r=q?255:p;s=g<<16;t=l<<8;u=k?65280:t;v=u|s;w=v|r;return w|0}j=m*410.0;if(!b)x=j;else x=j+ +(iq()|0)*4.656612875245797e-10+-.5;p=~~x;q=p>>>0>255;r=q?255:p;s=g<<16;t=l<<8;u=k?65280:t;v=u|s;w=v|r;return w|0}function Rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=r;r=r+16|0;d=c+8|0;if((b&-2|0)!=34676)Ja(146583,146646,1634,146656);if(!(_b(a,109056,2)|0)){vc(k[a+628>>2]|0,146656,146671,c);e=0;r=c;return e|0}f=me(32)|0;k[a+576>>2]=f;if(!f){g=k[a+628>>2]|0;k[d>>2]=k[a>>2];vc(g,146656,146713,d);e=0;r=c;return e|0}else{pe(f,0,32);k[f>>2]=-1;k[f+4>>2]=(b|0)==34677&1;k[f+20>>2]=15;k[a+504>>2]=22;k[a+508>>2]=23;k[a+540>>2]=25;k[a+548>>2]=26;k[a+516>>2]=24;k[a+544>>2]=27;k[a+552>>2]=28;k[a+556>>2]=19;k[a+564>>2]=20;b=a+672|0;k[f+24>>2]=k[b>>2];k[b>>2]=19;b=a+668|0;k[f+28>>2]=k[b>>2];k[b>>2]=20;e=1;r=c;return e|0}return 0}function Sg(a,b){a=+a;b=+b;var c=0,d=0,e=0.0,f=0.0,g=0.0,h=0.0,i=0.0,l=0,m=0,n=0,q=0,s=0,t=0,u=0.0,v=0,w=0.0,x=0.0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0;c=r;r=r+800|0;d=c;if(k[27282]|0){e=b+-.473684211;f=a+-.210526316;g=+da(+e,+f);h=g*15.915494277358546;i=h+50.0;l=~~i;m=109132+(l<<2)|0;n=k[m>>2]|0;r=c;return n|0}q=99;while(1){p[d+(q<<3)>>3]=2.0;if(!q){s=162;t=163;break}else q=q+-1|0}while(1){u=(+(s|0)+.5)*3.5000001080334187e-03+.016939999535679817;q=(j[107752+(s<<3)+4>>1]|0)+-1|0;switch(t|0){case 1:case 163:{v=1;break}default:v=q}w=+o[107752+(s<<3)>>2];x=u+-.473684211;y=107752+(s<<3)+6|0;z=q;do{u=+da(+x,+((+(z|0)+.5)*3.5000001080334187e-03+w+-.210526316))*15.915494277358546+50.0;q=~~u;A=+W(+(u-(+(q|0)+.5)));B=d+(q<<3)|0;if(A<+p[B>>3]){k[109132+(q<<2)>>2]=(j[y>>1]|0)+z;p[B>>3]=A}z=z-v|0}while((z|0)>-1);if(!s){C=99;D=100;break}else{z=s;s=s+-1|0;t=z}}while(1){do if(+p[d+(C<<3)>>3]>1.5){t=1;while(1){if(+p[d+(((t+C|0)%100|0)<<3)>>3]<1.5){E=t;break}s=t+1|0;if((s|0)<50)t=s;else{E=s;break}}t=D+99|0;s=-1;v=1;while(1){if(+p[d+(((t+s|0)%100|0)<<3)>>3]<1.5){F=v;G=s;break}z=v+1|0;y=~v;if((z|0)<50){s=y;v=z}else{F=z;G=y;break}}if((E|0)<(F|0)){k[109132+(C<<2)>>2]=k[109132+(((E+C|0)%100|0)<<2)>>2];break}else{k[109132+(C<<2)>>2]=k[109132+(((t+G|0)%100|0)<<2)>>2];break}}while(0);if(!C)break;else{v=C;C=C+-1|0;D=v}}k[27282]=1;e=b+-.473684211;f=a+-.210526316;g=+da(+e,+f);h=g*15.915494277358546;i=h+50.0;l=~~i;m=109132+(l<<2)|0;n=k[m>>2]|0;r=c;return n|0}function Tg(a,b,c){a=a|0;b=b|0;c=c|0;return}function Ug(a){a=a|0;return 1}function Vg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;k[a+652>>2]=3;e=m[a+90>>1]|0;a:do switch(e|0){case 32845:{if(dh(a)|0){f=a+532|0;if((j[a+88>>1]|0)==-30859){k[f>>2]=29;switch(k[d>>2]|0){case 0:{k[d+20>>2]=16;g=1;break a;break}case 1:{k[d+20>>2]=17;g=1;break a;break}case 3:{k[d+20>>2]=18;g=1;break a;break}default:{g=1;break a}}}else{k[f>>2]=30;switch(k[d>>2]|0){case 0:{k[d+20>>2]=19;g=1;break a;break}case 1:{k[d+20>>2]=20;g=1;break a;break}case 3:{k[d+20>>2]=21;g=1;break a;break}default:{g=1;break a}}}}else g=0;break}case 32844:{if(!(kh(a)|0))g=0;else{k[a+532>>2]=31;switch(k[d>>2]|0){case 0:{k[d+20>>2]=22;g=1;break a;break}case 3:{k[d+20>>2]=23;g=1;break a;break}default:{g=1;break a}}}break}default:{f=k[a+628>>2]|0;k[c>>2]=e;k[c+4>>2]=147007;vc(f,147521,146936,c);g=0}}while(0);r=b;return g|0}function Wg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=Pd(a)|0;if(!e){f=0;return f|0}if((c|0)%(e|0)|0)Ja(146868,146646,385,147503);g=a+532|0;if(!c){f=1;return f|0}else{h=b;i=c}while(1){if(!(xb[k[g>>2]&63](a,h,e,d)|0)){f=0;j=7;break}if((i|0)==(e|0)){f=1;j=7;break}else{h=h+e|0;i=i-e|0}}if((j|0)==7)return f|0;return 0}function Xg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=de(a)|0;if(!e){f=0;return f|0}if((c|0)%(e|0)|0)Ja(146868,146646,404,147486);g=a+532|0;if(!c){f=1;return f|0}else{h=b;i=c}while(1){if(!(xb[k[g>>2]&63](a,h,e,d)|0)){f=0;j=7;break}if((i|0)==(e|0)){f=1;j=7;break}else{h=h+e|0;i=i-e|0}}if((j|0)==7)return f|0;return 0}function Yg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;b=r;r=r+16|0;c=b+8|0;d=b;e=k[a+576>>2]|0;f=a+90|0;g=m[f>>1]|0;a:do switch(g|0){case 32845:{if(dh(a)|0){h=a+536|0;if((j[a+88>>1]|0)==-30859){k[h>>2]=32;switch(k[e>>2]|0){case 2:{i=1;break a;break}case 0:{k[e+20>>2]=24;i=1;break a;break}case 1:{k[e+20>>2]=25;i=1;break a;break}default:{l=14;break a}}}else{k[h>>2]=33;switch(k[e>>2]|0){case 2:{i=1;break a;break}case 0:{k[e+20>>2]=26;i=1;break a;break}case 1:{k[e+20>>2]=27;i=1;break a;break}default:{l=14;break a}}}}else i=1;break}case 32844:{if(!(kh(a)|0))i=1;else{k[a+536>>2]=34;switch(k[e>>2]|0){case 1:{i=1;break a;break}case 0:break;default:{l=14;break a}}k[e+20>>2]=28;i=1}break}default:{h=k[a+628>>2]|0;k[d>>2]=g;k[d+4>>2]=147007;vc(h,146918,146936,d);i=1}}while(0);if((l|0)==14){l=k[a+628>>2]|0;k[c>>2]=(j[f>>1]|0)==-32692?147037:147042;vc(l,146918,147051,c);i=0}r=b;return i|0}function Zg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=Pd(a)|0;if(!e){f=0;return f|0}if((c|0)%(e|0)|0)Ja(146868,146646,656,146900);g=a+536|0;if(!c){f=1;return f|0}else{h=b;i=c}while(1){if((xb[k[g>>2]&63](a,h,e,d)|0)!=1){f=0;j=7;break}if((i|0)==(e|0)){f=1;j=7;break}else{h=h+e|0;i=i-e|0}}if((j|0)==7)return f|0;return 0}function _g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=de(a)|0;if(!e){f=0;return f|0}if((c|0)%(e|0)|0)Ja(146868,146646,674,146883);g=a+536|0;if(!c){f=1;return f|0}else{h=b;i=c}while(1){if((xb[k[g>>2]&63](a,h,e,d)|0)!=1){f=0;j=7;break}if((i|0)==(e|0)){f=1;j=7;break}else{h=h+e|0;i=i-e|0}}if((j|0)==7)return f|0;return 0}function $g(a){a=a|0;j[a+98>>1]=(j[a+90>>1]|0)==-32692?1:3;j[a+84>>1]=16;j[a+86>>1]=2;return}function ah(a){a=a|0;var b=0,c=0,d=0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(154168,146646,1537,146854);k[a+672>>2]=k[c+24>>2];k[a+668>>2]=k[c+28>>2];d=k[c+12>>2]|0;if(!d){ne(c);k[b>>2]=0;Ve(a);return}ne(d);ne(c);k[b>>2]=0;Ve(a);return}function bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if((b|0)==65560){e=k[d>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}else{h=nb[k[d+24>>2]&63](a,b,c)|0;return h|0}return 0}function ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=r;r=r+48|0;e=d+32|0;f=d+24|0;g=d+16|0;h=d+8|0;i=d;j=k[a+576>>2]|0;switch(b|0){case 65560:{l=(k[c>>2]|0)+(4-1)&~(4-1);m=k[l>>2]|0;k[c>>2]=l+4;k[j>>2]=m;switch(m|0){case 0:{n=32;o=3;break}case 1:{n=16;o=2;break}case 2:{k[i>>2]=1;Ob(a,277,i)|0;n=32;o=1;break}case 3:{n=8;o=1;break}default:{i=k[a+628>>2]|0;l=k[a>>2]|0;k[h>>2]=m;vc(i,l,146749,h);p=0;r=d;return p|0}}k[g>>2]=n;Ob(a,258,g)|0;k[f>>2]=o;Ob(a,339,f)|0;if(!(k[a+12>>2]&1024))q=-1;else q=ge(a)|0;k[a+496>>2]=q;q=Pd(a)|0;k[a+580>>2]=q;p=1;r=d;return p|0}case 65561:{q=(k[c>>2]|0)+(4-1)&~(4-1);f=k[q>>2]|0;k[c>>2]=q+4;k[j+4>>2]=f;if(f>>>0<2){p=1;r=d;return p|0}q=k[a+628>>2]|0;k[e>>2]=f;vc(q,146795,146811,e);p=0;r=d;return p|0}default:{p=nb[k[j+28>>2]&63](a,b,c)|0;r=d;return p|0}}return 0}function dh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=k[a+576>>2]|0;if(!e)Ja(154187,146646,1335,147323);if((j[a+90>>1]|0)!=-32691)Ja(147339,146646,1336,147323);if((j[a+126>>1]|0)!=1){vc(k[a+628>>2]|0,147323,147380,b);f=0;r=b;return f|0}g=k[e>>2]|0;if((g|0)==-1){switch(m[a+84>>1]<<3|m[a+86>>1]|0){case 259:{h=0;break}case 258:case 257:case 260:{h=2;break}case 129:case 130:case 132:{h=1;break}case 65:case 68:{h=3;break}default:h=-1}switch(m[a+98>>1]|0){case 1:{i=(h|0)==2?2:-1;break}case 3:{i=(h|0)==2?-1:h;break}default:i=-1}k[e>>2]=i;l=i}else l=g;switch(l|0){case 0:{k[e+8>>2]=12;break}case 1:{k[e+8>>2]=6;break}case 2:{k[e+8>>2]=4;break}case 3:{k[e+8>>2]=3;break}default:{vc(k[a+628>>2]|0,147323,147433,d);f=0;r=b;return f|0}}if(!(k[a+12>>2]&1024))n=ha(k[a+100>>2]|0,k[a+56>>2]|0)|0;else n=ha(k[a+72>>2]|0,k[a+68>>2]|0)|0;k[e+16>>2]=n;if((n|0)!=0?(d=me(n<<2)|0,k[e+12>>2]=d,(d|0)!=0):0){f=1;r=b;return f|0}vc(k[a+628>>2]|0,147323,147254,c);f=0;r=b;return f|0}function eh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=k[a+576>>2]|0;if(d<<16>>16)Ja(147105,146646,516,147308);if(!e)Ja(154187,146646,517,147308);d=(c|0)/(k[e+8>>2]|0)|0;do if((k[e>>2]|0)!=2)if((k[e+16>>2]|0)<(d|0))Ja(147125,146646,524,147308);else{c=k[e+12>>2]|0;vb[k[e+20>>2]&127](e,b,d);f=c;break}else f=b;while(0);b=a+604|0;e=k[b>>2]|0;c=a+592|0;g=k[c>>2]|0;h=a+608|0;j=g-(k[h>>2]|0)|0;do if(d){l=d;m=j;n=e;o=f;while(1){l=l+-1|0;if((m|0)<3){k[b>>2]=n;k[h>>2]=(k[c>>2]|0)-m;if(!(je(a)|0)){p=-1;q=17;break}r=(k[c>>2]|0)-(k[h>>2]|0)|0;s=k[b>>2]|0}else{r=m;s=n}i[s>>0]=(k[o>>2]|0)>>>16;i[s+1>>0]=(k[o>>2]|0)>>>8;t=s+3|0;i[s+2>>0]=k[o>>2];u=r+-3|0;if(!l){v=t;w=u;q=15;break}else{m=u;n=t;o=o+4|0}}if((q|0)==15){x=k[c>>2]|0;y=w;z=v;break}else if((q|0)==17)return p|0}else{x=g;y=j;z=e}while(0);k[b>>2]=z;k[h>>2]=x-y;p=1;return p|0}function fh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((c|0)<=0)return;d=a+4|0;e=c;c=k[a+12>>2]|0;a=b;while(1){b=Pg(a,k[d>>2]|0)|0;k[c>>2]=b;if((e|0)>1){e=e+-1|0;c=c+4|0;a=a+12|0}else break}return}function gh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;if((c|0)<=0)return;d=a+4|0;e=c;c=k[a+12>>2]|0;a=b;while(1){b=e;e=e+-1|0;f=j[a>>1]|0;g=f<<16>>16;do if(f<<16>>16>=1)if(f<<16>>16<=7409)if(!(k[d>>2]|0)){h=g+-3314>>2;break}else{h=~~((+(f<<16>>16)+-3314.0)*.25+ +(iq()|0)*4.656612875245797e-10+-.5);break}else h=1023;else h=0;while(0);f=Ng((+(j[a+2>>1]|0)+.5)*.000030517578125,(+(j[a+4>>1]|0)+.5)*.000030517578125,k[d>>2]|0)|0;k[c>>2]=((f|0)<0?12266:f)|h<<14;if((b|0)<=1)break;else{c=c+4|0;a=a+6|0}}return}function hh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;e=k[a+576>>2]|0;if(d<<16>>16)Ja(147105,146646,568,147293);if(!e)Ja(154187,146646,569,147293);d=(c|0)/(k[e+8>>2]|0)|0;do if((k[e>>2]|0)!=2)if((k[e+16>>2]|0)<(d|0))Ja(147125,146646,577,147293);else{c=k[e+12>>2]|0;vb[k[e+20>>2]&127](e,b,d);f=c;break}else f=b;while(0);b=a+604|0;e=a+592|0;c=a+608|0;g=(d|0)>0;h=24;j=(k[e>>2]|0)-(k[c>>2]|0)|0;l=k[b>>2]|0;m=0;a:while(1){if(g){n=255<<h;o=0;p=j;q=l;r=m;while(1){if((p|0)<4){k[b>>2]=q;k[c>>2]=(k[e>>2]|0)-p;if(!(je(a)|0)){s=-1;t=43;break a}u=(k[e>>2]|0)-(k[c>>2]|0)|0;v=k[b>>2]|0}else{u=p;v=q}b:do if((o|0)<(d|0)){w=o;while(1){x=k[f+(w<<2)>>2]|0;y=1;while(1){z=y+w|0;A=(z|0)<(d|0);if(!A){B=z;C=A;D=y;break}if((k[f+(z<<2)>>2]^x)&n){B=z;C=A;D=y;break}A=y+1|0;if((A|0)<129)y=A;else{E=w;F=A;break b}}y=(D|0)>3;if(y|C^1){G=B;H=y;I=w;J=D;break}else w=B}E=H?I:G;F=J}else{E=o;F=r}while(0);c:do if((E-o&-2|0)==2){w=k[f+(o<<2)>>2]&n;y=o+1|0;while(1){x=y+1|0;if((k[f+(y<<2)>>2]&n|0)!=(w|0)){K=o;L=u;M=v;break c}if((x|0)==(E|0)){N=y;break}else y=x}i[v>>0]=127-o+N;i[v+1>>0]=w>>>h;K=E;L=u+-2|0;M=v+2|0}else{K=o;L=u;M=v}while(0);if((E|0)>(K|0)){y=~E;x=K;A=L;z=M;while(1){O=E-x|0;P=(O|0)>127?127:O;if((A|0)<(P+3|0)){k[b>>2]=z;k[c>>2]=(k[e>>2]|0)-A;if(!(je(a)|0)){s=-1;t=43;break a}Q=(k[e>>2]|0)-(k[c>>2]|0)|0;R=k[b>>2]|0}else{Q=A;R=z}i[R>>0]=P;O=R+1|0;if(!P){S=x;T=O;U=-1}else{V=x+y|0;W=(V|0)>-128?V:-128;V=R+(0-W)|0;X=x+-1|0;Y=x;Z=P;P=O;while(1){Z=Z+-1|0;i[P>>0]=(k[f+(Y<<2)>>2]|0)>>>h;if(!Z)break;else{Y=Y+1|0;P=P+1|0}}S=X-W|0;T=V;U=W}P=Q+U|0;if((E|0)>(S|0)){x=S;A=P;z=T}else{_=S;$=P;aa=T;break}}}else{_=K;$=L;aa=M}if((F|0)>3){i[aa>>0]=F+126;i[aa+1>>0]=(k[f+(E<<2)>>2]|0)>>>h;ba=$+-2|0;ca=aa+2|0;da=F}else{ba=$;ca=aa;da=0}o=da+_|0;if((o|0)>=(d|0)){ea=ba;fa=ca;ga=da;break}else{p=ba;q=ca;r=da}}}else{ea=j;fa=l;ga=m}h=h+-8|0;if((h|0)<=-1){ha=ea;ia=fa;t=42;break}else{j=ea;l=fa;m=ga}}if((t|0)==42){k[b>>2]=ia;k[c>>2]=(k[e>>2]|0)-ha;s=1;return s|0}else if((t|0)==43)return s|0;return 0}function ih(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((c|0)<=0)return;d=a+4|0;e=c;c=k[a+12>>2]|0;a=b;while(1){b=Qg(a,k[d>>2]|0)|0;k[c>>2]=b;if((e|0)>1){e=e+-1|0;c=c+4|0;a=a+12|0}else break}return}function jh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0;d=k[a+12>>2]|0;e=a+4|0;a=k[e>>2]|0;f=(c|0)>0;if(!a){if(f){g=c;h=d;i=b}else return;while(1){k[h>>2]=((j[i+2>>1]|0)*410|0)>>>7&65280|m[i>>1]<<16|((j[i+4>>1]|0)*410|0)>>>15&255;if((g|0)>1){g=g+-1|0;h=h+4|0;i=i+6|0}else break}return}if(f){l=c;n=a;o=d;p=b}else return;while(1){b=m[p>>1]<<16;q=+(j[p+2>>1]|0)*.01251220703125;if(!n){r=q;s=0}else{t=q+ +(iq()|0)*4.656612875245797e-10+-.5;r=t;s=k[e>>2]|0}t=+(j[p+4>>1]|0)*.01251220703125;if(!s)u=t;else u=t+ +(iq()|0)*4.656612875245797e-10+-.5;k[o>>2]=~~r<<8&65280|b|~~u&255;if((l|0)<=1)break;l=l+-1|0;n=k[e>>2]|0;o=o+4|0;p=p+6|0}return}function kh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;b=r;r=r+16|0;c=b+8|0;d=b;e=k[a+576>>2]|0;if(!e)Ja(154187,146646,1243,147148);if((j[a+90>>1]|0)!=-32692)Ja(147164,146646,1244,147148);f=k[e>>2]|0;if((f|0)==-1){switch(m[a+86>>1]|m[a+84>>1]<<6|m[a+98>>1]<<3|0){case 2059:{g=0;break}case 1033:case 1034:case 1036:{g=1;break}case 521:case 524:{g=3;break}default:g=-1}k[e>>2]=g;h=g}else h=f;switch(h|0){case 0:{k[e+8>>2]=4;break}case 1:{k[e+8>>2]=2;break}case 3:{k[e+8>>2]=1;break}default:{vc(k[a+628>>2]|0,147148,147203,d);i=0;r=b;return i|0}}if(!(k[a+12>>2]&1024))l=ha(k[a+100>>2]|0,k[a+56>>2]|0)|0;else l=ha(k[a+72>>2]|0,k[a+68>>2]|0)|0;k[e+16>>2]=l;if((l|0)!=0?(d=me(l<<1)|0,k[e+12>>2]=d,(d|0)!=0):0){i=1;r=b;return i|0}vc(k[a+628>>2]|0,147148,147254,c);i=0;r=b;return i|0}function lh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;e=k[a+576>>2]|0;if(d<<16>>16)Ja(147105,146646,428,147112);if(!e)Ja(154187,146646,429,147112);d=(c|0)/(k[e+8>>2]|0)|0;do if((k[e>>2]|0)!=1)if((k[e+16>>2]|0)<(d|0))Ja(147125,146646,436,147112);else{c=k[e+12>>2]|0;vb[k[e+20>>2]&127](e,b,d);f=c;break}else f=b;while(0);b=a+604|0;e=a+592|0;c=a+608|0;g=(d|0)>0;h=8;l=(k[e>>2]|0)-(k[c>>2]|0)|0;n=k[b>>2]|0;o=0;a:while(1){if(g){p=255<<h;q=0;r=l;s=n;t=o;while(1){if((r|0)<4){k[b>>2]=s;k[c>>2]=(k[e>>2]|0)-r;if(!(je(a)|0)){u=-1;v=43;break a}w=(k[e>>2]|0)-(k[c>>2]|0)|0;x=k[b>>2]|0}else{w=r;x=s}b:do if((q|0)<(d|0)){y=q;while(1){z=(m[f+(y<<1)>>1]&p)<<16>>16;A=1;while(1){B=A+y|0;C=(B|0)<(d|0);if(!C){D=B;E=C;F=A;break}if((j[f+(B<<1)>>1]&p|0)!=(z|0)){D=B;E=C;F=A;break}C=A+1|0;if((C|0)<129)A=C;else{G=y;H=C;break b}}A=(F|0)>3;if(A|E^1){I=D;J=A;K=y;L=F;break}else y=D}G=J?K:I;H=L}else{G=q;H=t}while(0);c:do if((G-q&-2|0)==2){y=(m[f+(q<<1)>>1]&p)<<16>>16;A=q+1|0;while(1){z=A+1|0;if((j[f+(A<<1)>>1]&p|0)!=(y|0)){M=q;N=w;O=x;break c}if((z|0)==(G|0)){P=A;break}else A=z}i[x>>0]=127-q+P;i[x+1>>0]=y>>h;M=G;N=w+-2|0;O=x+2|0}else{M=q;N=w;O=x}while(0);if((G|0)>(M|0)){A=~G;z=M;C=N;B=O;while(1){Q=G-z|0;R=(Q|0)>127?127:Q;if((C|0)<(R+3|0)){k[b>>2]=B;k[c>>2]=(k[e>>2]|0)-C;if(!(je(a)|0)){u=-1;v=43;break a}S=(k[e>>2]|0)-(k[c>>2]|0)|0;T=k[b>>2]|0}else{S=C;T=B}i[T>>0]=R;Q=T+1|0;if(!R){U=z;V=Q;W=-1}else{X=z+A|0;Y=(X|0)>-128?X:-128;X=T+(0-Y)|0;Z=z+-1|0;_=z;$=R;R=Q;while(1){$=$+-1|0;i[R>>0]=j[f+(_<<1)>>1]>>h;if(!$)break;else{_=_+1|0;R=R+1|0}}U=Z-Y|0;V=X;W=Y}R=S+W|0;if((G|0)>(U|0)){z=U;C=R;B=V}else{aa=U;ba=R;ca=V;break}}}else{aa=M;ba=N;ca=O}if((H|0)>3){i[ca>>0]=H+126;i[ca+1>>0]=j[f+(G<<1)>>1]>>h;da=ba+-2|0;ea=ca+2|0;fa=H}else{da=ba;ea=ca;fa=0}q=fa+aa|0;if((q|0)>=(d|0)){ga=da;ha=ea;ia=fa;break}else{r=da;s=ea;t=fa}}}else{ga=l;ha=n;ia=o}h=h+-8|0;if((h|0)<=-1){ja=ga;ka=ha;v=42;break}else{l=ga;n=ha;o=ia}}if((v|0)==42){k[b>>2]=ka;k[c>>2]=(k[e>>2]|0)-ja;u=1;return u|0}else if((v|0)==43)return u|0;return 0}function mh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0,h=0.0,i=0.0,l=0,m=0.0;if((c|0)<=0)return;d=a+4|0;e=c;c=k[a+12>>2]|0;a=b;while(1){b=e;e=e+-1|0;f=+o[a>>2];a=a+4|0;g=k[d>>2]|0;do if(!(f>=18371976.0e12))if(!(f<=-18371976.0e12)){if(f>5.4136769e-20){h=(+fa(+f)*1.4426950408889634+64.0)*256.0;if(!g)i=h;else i=h+ +(iq()|0)*4.656612875245797e-10+-.5;l=~~i;break}if(f<-5.4136769e-20){h=(+fa(+-f)*1.4426950408889634+64.0)*256.0;if(!g)m=h;else m=h+ +(iq()|0)*4.656612875245797e-10+-.5;l=~~m|-32768}else l=0}else l=65535;else l=32767;while(0);j[c>>1]=l;if((b|0)<=1)break;else c=c+2|0}return}function nh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;e=r;r=r+16|0;f=e;g=k[a+576>>2]|0;if(d<<16>>16)Ja(147105,146646,263,147614);if(!g)Ja(154187,146646,264,147614);d=(c|0)/(k[g+8>>2]|0)|0;do if((k[g>>2]|0)!=2)if((k[g+16>>2]|0)<(d|0))Ja(147125,146646,271,147614);else{h=k[g+12>>2]|0;break}else h=b;while(0);c=a+604|0;i=k[c>>2]|0;j=a+608|0;m=k[j>>2]|0;if((m|0)>0&(d|0)>0){n=((m+((m|0)<3?~m:-4)+3|0)>>>0)/3|0;o=d+-1|0;p=n>>>0>o>>>0?o:n;n=~p;o=p+1|0;p=n*3|0;q=ha(n,-3)|0;n=i;s=0;while(1){k[h+(s<<2)>>2]=(l[n+1>>0]|0)<<8|(l[n>>0]|0)<<16|(l[n+2>>0]|0);s=s+1|0;if((s|0)==(o|0))break;else n=n+3|0}t=i+q|0;u=m+p|0;v=o}else{t=i;u=m;v=0}k[c>>2]=t;k[j>>2]=u;if((d|0)==(v|0)){vb[k[g+20>>2]&127](g,b,d);w=1;r=e;return w|0}else{b=k[a+628>>2]|0;g=d-v|0;k[f>>2]=k[a+444>>2];a=f+8|0;k[a>>2]=g;k[a+4>>2]=((g|0)<0)<<31>>31;vc(b,147614,147552,f);w=0;r=e;return w|0}return 0}function oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){Og(k[c>>2]|0,a);if((d|0)>1){d=d+-1|0;c=c+4|0;a=a+12|0}else break}return}function ph(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,i=0.0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){b=d;d=d+-1|0;e=k[c>>2]|0;f=a+2|0;j[a>>1]=(e>>>12&4093)+13314;g=e&16383;if(g>>>0>16288){h=.210526316;i=.473684211}else{e=0;l=163;a:while(1){m=e;while(1){if((l-m|0)<=1){n=m;p=8;break a}q=m+l>>1;r=j[107752+(q<<3)+6>>1]|0;s=g-(r<<16>>16)|0;if((s|0)>0)m=q;else{t=q;u=r;v=s;w=m;break}}if((v|0)<0){e=w;l=t}else{x=u;y=t;break}}if((p|0)==8){p=0;x=j[107752+(n<<3)+6>>1]|0;y=n}h=+o[107752+(y<<3)>>2]+(+(g-(x<<16>>16)|0)+.5)*3.5000001080334187e-03;i=(+(y|0)+.5)*3.5000001080334187e-03+.016939999535679817}j[f>>1]=~~(h*32768.0);j[a+4>>1]=~~(i*32768.0);if((b|0)<=1)break;else{c=c+4|0;a=a+6|0}}return}function qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0.0,l=0.0,m=0.0,n=0.0,p=0.0,q=0.0,s=0,t=0,u=0;d=r;r=r+16|0;e=d;if((c|0)<=0){r=d;return}f=e+4|0;g=e+8|0;h=c;c=k[a+12>>2]|0;a=b;while(1){b=h;h=h+-1|0;Og(k[c>>2]|0,e);c=c+4|0;j=+o[e>>2];l=+o[f>>2];m=+o[g>>2];n=j*2.69-l*1.276-m*.414;p=l*1.978-j*1.022+m*.044;q=j*.061-l*.224+m*1.163;if(!(n<=0.0))if(!(n>=1.0))s=~~(+X(+n)*256.0)&255;else s=-1;else s=0;i[a>>0]=s;if(!(p<=0.0))if(!(p>=1.0))t=~~(+X(+p)*256.0)&255;else t=-1;else t=0;i[a+1>>0]=t;if(!(q<=0.0))if(!(q>=1.0))u=~~(+X(+q)*256.0)&255;else u=-1;else u=0;i[a+2>>0]=u;if((b|0)<=1)break;else a=a+3|0}r=d;return}function rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;e=r;r=r+16|0;f=e;if(d<<16>>16)Ja(147105,146646,319,147599);d=k[a+576>>2]|0;if(!d)Ja(154187,146646,321,147599);g=(c|0)/(k[d+8>>2]|0)|0;do if((k[d>>2]|0)!=2)if((k[d+16>>2]|0)<(g|0))Ja(147125,146646,328,147599);else{h=k[d+12>>2]|0;break}else h=b;while(0);pe(h,0,g<<2);c=a+604|0;j=k[c>>2]|0;m=a+608|0;n=k[m>>2]|0;a:do if((g|0)>0){o=j;p=n;q=32;while(1){q=q+-8|0;if((q|0)<=-1){s=o;t=p;u=26;break a}b:do if((p|0)>0){v=o;w=p;x=0;while(1){y=i[v>>0]|0;z=y&255;A=v+1|0;c:do if(y<<24>>24<0){B=v+2|0;C=(l[A>>0]|0)<<q;D=w+-2|0;if((x|0)<(g|0)){E=x-g|0;F=126-z|0;G=x-(E>>>0>F>>>0?E:F)|0;F=x;do{E=h+(F<<2)|0;F=F+1|0;k[E>>2]=k[E>>2]|C}while((F|0)!=(G|0));H=B;I=D;J=G}else{H=B;I=D;J=x}}else{G=w+-1|0;if(!G){K=A;L=0;M=x;break b}else{N=G;O=A;P=x;Q=z}while(1){if(!((P|0)<(g|0)&(Q|0)!=0)){H=O;I=N;J=P;break c}G=O+1|0;F=P+1|0;C=h+(P<<2)|0;k[C>>2]=(l[O>>0]|0)<<q|k[C>>2];N=N+-1|0;if(!N){K=G;L=0;M=F;break b}else{O=G;P=F;Q=Q+-1|0}}}while(0);if((g|0)>(J|0)&(I|0)>0){v=H;w=I;x=J}else{K=H;L=I;M=J;break}}}else{K=o;L=p;M=0}while(0);if((g|0)!=(M|0)){R=K;S=L;T=M;u=25;break}else{o=K;p=L}}}else{p=(g|0)==0;o=32;while(1){o=o+-8|0;if((o|0)<=-1){s=j;t=n;u=26;break a}if(!p){R=j;S=n;T=0;u=25;break}}}while(0);if((u|0)==25){n=k[a+628>>2]|0;j=g-T|0;k[f>>2]=k[a+444>>2];a=f+8|0;k[a>>2]=j;k[a+4>>2]=((j|0)<0)<<31>>31;vc(n,147599,147552,f);U=0;V=S;W=R;k[c>>2]=W;k[m>>2]=V;r=e;return U|0}else if((u|0)==26){vb[k[d+20>>2]&127](d,b,g);U=1;V=t;W=s;k[c>>2]=W;k[m>>2]=V;r=e;return U|0}return 0}function sh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,i=0.0,j=0.0,l=0.0,m=0.0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){b=d;d=d+-1|0;e=k[c>>2]|0;c=c+4|0;f=e>>16;g=f&32767;if((g|0)!=0?(h=+ea(+((+(g|0)+.5)*2.7076061740622863e-03+-44.3614195558365)),i=(f&32768|0)!=0?-h:h,!(i<=0.0)):0){h=(+((e>>>8&255)>>>0)+.5)*2.4390243902439024e-03;j=(+((e&255)>>>0)+.5)*2.4390243902439024e-03;l=1.0/(h*6.0-j*16.0+12.0);m=h*9.0*l;h=j*4.0*l;o[a>>2]=i*(m/h);o[a+4>>2]=i;o[a+8>>2]=i*((1.0-m-h)/h)}else{o[a+8>>2]=0.0;o[a+4>>2]=0.0;o[a>>2]=0.0}if((b|0)<=1)break;else a=a+12|0}return}function th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){b=k[c>>2]|0;j[a>>1]=b>>>16;j[a+2>>1]=~~((+((b>>>8&255)>>>0)+.5)*2.4390243902439024e-03*32768.0);j[a+4>>1]=~~((+((b&255)>>>0)+.5)*2.4390243902439024e-03*32768.0);if((d|0)>1){d=d+-1|0;c=c+4|0;a=a+6|0}else break}return}function uh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,j=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){b=d;d=d+-1|0;e=k[c>>2]|0;c=c+4|0;f=e>>16;g=f&32767;if((g|0)!=0?(h=+ea(+((+(g|0)+.5)*2.7076061740622863e-03+-44.3614195558365)),j=(f&32768|0)!=0?-h:h,!(j<=0.0)):0){h=(+((e>>>8&255)>>>0)+.5)*2.4390243902439024e-03;l=(+((e&255)>>>0)+.5)*2.4390243902439024e-03;m=1.0/(h*6.0-l*16.0+12.0);n=h*9.0*m;h=l*4.0*m;o=j*(n/h);p=j;q=j*((1.0-n-h)/h)}else{o=0.0;p=0.0;q=0.0}h=o;n=p;j=q;m=h*2.69-n*1.276-j*.414;l=j*.044+(n*1.978-h*1.022);r=j*1.163+(h*.061-n*.224);if(!(m<=0.0))if(!(m>=1.0))s=~~(+X(+m)*256.0)&255;else s=-1;else s=0;i[a>>0]=s;if(!(l<=0.0))if(!(l>=1.0))t=~~(+X(+l)*256.0)&255;else t=-1;else t=0;i[a+1>>0]=t;if(!(r<=0.0))if(!(r>=1.0))u=~~(+X(+r)*256.0)&255;else u=-1;else u=0;i[a+2>>0]=u;if((b|0)<=1)break;else a=a+3|0}return}function vh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;e=r;r=r+16|0;f=e;g=k[a+576>>2]|0;if(d<<16>>16)Ja(147105,146646,197,147539);if(!g)Ja(154187,146646,198,147539);d=(c|0)/(k[g+8>>2]|0)|0;do if((k[g>>2]|0)!=1)if((k[g+16>>2]|0)<(d|0))Ja(147125,146646,205,147539);else{h=k[g+12>>2]|0;break}else h=b;while(0);pe(h,0,d<<1);c=a+604|0;n=a+608|0;o=(d|0)>0;p=k[c>>2]|0;q=k[n>>2]|0;s=16;while(1){s=s+-8|0;if((s|0)<=-1){t=p;u=q;v=23;break}a:do if(o&(q|0)>0){w=p;x=q;y=0;while(1){z=i[w>>0]|0;A=z&255;B=w+1|0;b:do if(z<<24>>24<0){C=w+2|0;D=(l[B>>0]|0)<<s;E=x+-2|0;if((y|0)<(d|0)){F=y-d|0;G=126-A|0;H=y-(F>>>0>G>>>0?F:G)|0;G=y;do{F=h+(G<<1)|0;G=G+1|0;j[F>>1]=m[F>>1]|0|D}while((G|0)!=(H|0));I=C;J=E;K=H}else{I=C;J=E;K=y}}else{H=x+-1|0;if(!H){L=B;M=0;N=y;break a}else{O=H;P=B;Q=y;R=A}while(1){if(!((Q|0)<(d|0)&(R|0)!=0)){I=P;J=O;K=Q;break b}H=P+1|0;G=Q+1|0;D=h+(Q<<1)|0;j[D>>1]=m[D>>1]|0|(l[P>>0]|0)<<s;O=O+-1|0;if(!O){L=H;M=0;N=G;break a}else{P=H;Q=G;R=R+-1|0}}}while(0);if((d|0)>(K|0)&(J|0)>0){w=I;x=J;y=K}else{L=I;M=J;N=K;break}}}else{L=p;M=q;N=0}while(0);if((d|0)!=(N|0)){S=L;T=M;U=N;v=22;break}else{p=L;q=M}}if((v|0)==22){M=k[a+628>>2]|0;q=d-U|0;k[f>>2]=k[a+444>>2];a=f+8|0;k[a>>2]=q;k[a+4>>2]=((q|0)<0)<<31>>31;vc(M,147539,147552,f);V=0;W=T;X=S;k[c>>2]=X;k[n>>2]=W;r=e;return V|0}else if((v|0)==23){vb[k[g+20>>2]&127](g,b,d);V=1;W=u;X=t;k[c>>2]=X;k[n>>2]=W;r=e;return V|0}return 0}function wh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0;if((c|0)<=0)return;d=c;c=k[a+12>>2]|0;a=b;while(1){b=j[c>>1]|0;e=b&32767;if(!e)f=0.0;else{g=+ea(+((+(e|0)+.5)*2.7076061740622863e-03+-44.3614195558365));f=(b&32768|0)!=0?-g:g}o[a>>2]=f;if((d|0)>1){d=d+-1|0;c=c+2|0;a=a+4|0}else break}return}function xh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0.0,h=0.0,l=0;if((c|0)<=0)return;d=c;c=b;b=k[a+12>>2]|0;while(1){a=d;d=d+-1|0;e=j[b>>1]|0;b=b+2|0;f=e&32767;if((f|0)!=0?(g=+ea(+((+(f|0)+.5)*2.7076061740622863e-03+-44.3614195558365)),h=(e&32768|0)!=0?-g:g,!(h<=0.0)):0)if(!(h>=1.0))l=~~(+X(+h)*256.0);else l=255;else l=0;i[c>>0]=l;if((a|0)<=1)break;else c=c+1|0}return}function yh(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;if((b|0)!=5)Ja(147656,147682,1110,147692);b=me(160)|0;k[a+576>>2]=b;if(!b){vc(k[a+628>>2]|0,147692,147704,c);d=0;r=c;return d|0}else{k[b+124>>2]=0;k[b+104>>2]=0;k[b+152>>2]=0;k[b+80>>2]=k[a+8>>2];k[a+504>>2]=25;k[a+508>>2]=26;k[a+512>>2]=31;k[a+532>>2]=35;k[a+540>>2]=35;k[a+548>>2]=35;k[a+516>>2]=27;k[a+524>>2]=32;k[a+528>>2]=28;k[a+536>>2]=36;k[a+544>>2]=36;k[a+552>>2]=36;k[a+564>>2]=21;Ii(a)|0;d=1;r=c;return d|0}return 0}function zh(a){a=a|0;return 1}function Ah(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0;b=r;r=r+16|0;c=b+8|0;d=b;e=a+576|0;f=k[e>>2]|0;do if(!f){g=me(160)|0;k[e>>2]=g;if(!g){vc(k[a+628>>2]|0,148271,147704,d);h=0;r=b;return h|0}else{k[g+124>>2]=0;k[g+104>>2]=0;Ii(a)|0;g=k[e>>2]|0;if(g){l=g;break}Ja(154187,147682,229,148271)}}else l=f;while(0);f=l+124|0;if(k[f>>2]|0){h=1;r=b;return h|0}l=me(40952)|0;k[f>>2]=l;if(!l){vc(k[a+628>>2]|0,148271,148286,c);h=0;r=b;return h|0}else m=255;while(1){c=m&255;i[l+(m<<3)+6>>0]=c;i[l+(m<<3)+7>>0]=c;j[l+(m<<3)+4>>1]=1;k[l+(m<<3)>>2]=0;if(!m)break;else m=m+-1|0}pe(l+2048|0,0,16);h=1;r=b;return h|0}function Bh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;if(!d)Ja(154187,147682,267,148208);e=d+124|0;f=k[e>>2]|0;if(!f){ub[k[a+508>>2]&63](a)|0;g=k[e>>2]|0;if(!g){h=0;r=b;return h|0}else l=g}else l=f;f=k[a+588>>2]|0;if((i[f>>0]|0)==0?(i[f+1>>0]&1)!=0:0){f=d+104|0;if(!(k[f>>2]|0)){ie(k[a+628>>2]|0,148208,148221,c);k[a+532>>2]=37;k[a+540>>2]=37;k[a+548>>2]=37;ub[k[a+508>>2]&63](a)|0;k[f>>2]=37;m=k[e>>2]|0}else m=l;j[d+66>>1]=511;n=m}else{j[d+66>>1]=510;k[d+104>>2]=35;n=l}j[d+64>>1]=9;k[d+76>>2]=0;k[d+72>>2]=0;k[d+88>>2]=0;l=d+84|0;k[l>>2]=511;m=k[a+608>>2]|0;a=rr(m|0,((m|0)<0)<<31>>31|0,3)|0;m=d+96|0;k[m>>2]=a;k[m+4>>2]=L;m=n+2064|0;k[d+116>>2]=m;pe(m,0,38888);m=k[e>>2]|0;k[d+112>>2]=m+-8;k[d+120>>2]=m+((k[l>>2]|0)+-1<<3);h=1;r=b;return h|0}function Ch(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0;d=r;r=r+80|0;e=d+64|0;f=d+56|0;g=d+48|0;h=d+40|0;n=d+32|0;o=d+24|0;p=d+16|0;q=d+8|0;s=d;t=k[a+576>>2]|0;if(!t)Ja(154187,147682,375,147871);u=t+124|0;if(!(k[u>>2]|0))Ja(147881,147682,376,147871);v=t+88|0;w=k[v>>2]|0;do if(!w){x=c;y=b}else{z=k[t+108>>2]|0;A=(m[z+4>>1]|0)-w|0;if((A|0)<=(c|0)){B=b+A|0;C=z;D=A;E=B;do{E=E+-1|0;F=C;C=k[C>>2]|0;i[E>>0]=i[F+6>>0]|0;D=D+-1|0}while((D|0)!=0&(C|0)!=0);k[v>>2]=0;x=c-A|0;y=B;break}k[v>>2]=w+c;C=z;D=A;do{C=k[C>>2]|0;D=D+-1|0;G=(C|0)!=0}while((D|0)>(c|0)&G);if(!G){H=1;r=d;return H|0}D=C;A=c;z=b+c|0;do{z=z+-1|0;i[z>>0]=i[D+6>>0]|0;D=k[D>>2]|0;A=A+-1|0}while((A|0)!=0&(D|0)!=0);H=1;r=d;return H|0}while(0);c=a+604|0;b=k[c>>2]|0;G=t+64|0;w=m[G>>1]|0;D=t+72|0;A=k[D>>2]|0;z=t+76|0;C=k[z>>2]|0;B=t+84|0;E=k[B>>2]|0;F=t+112|0;I=k[F>>2]|0;J=t+116|0;K=k[J>>2]|0;M=t+120|0;N=k[M>>2]|0;a:do if((x|0)>0){O=t+96|0;P=I;Q=b;R=K;S=N;T=w;U=E;V=C;W=A;X=x;Y=y;b:while(1){Z=O;_=k[Z>>2]|0;$=k[Z+4>>2]|0;Z=((T|0)<0)<<31>>31;if($>>>0<Z>>>0|($|0)==(Z|0)&_>>>0<T>>>0){aa=P;ba=Q;ca=R;da=S;ea=T;fa=U;ga=V;ha=W;ia=X;ja=18;break}ka=Q+1|0;la=l[Q>>0]|0|W<<8;ma=V+8|0;if((ma|0)<(T|0)){na=Q+2|0;oa=V+16|0;pa=l[ka>>0]|0|la<<8}else{na=ka;oa=ma;pa=la}la=oa-T|0;ma=pa>>>la&U;ka=ma&65535;qa=pr(_|0,$|0,T|0,Z|0)|0;Z=O;k[Z>>2]=qa;k[Z+4>>2]=L;Z=ma&65535;c:do switch(ka<<16>>16){case 257:{ra=na;sa=R;ta=S;ua=T;va=U;wa=la;xa=pa;ya=X;za=P;break a;break}case 256:{qa=k[u>>2]|0;$=na;_=la;Aa=pa;d:while(1){Ba=qa+2064|0;pe(Ba,0,38888);Ca=k[u>>2]|0;Da=O;Ea=k[Da>>2]|0;Fa=k[Da+4>>2]|0;if(Fa>>>0<0|(Fa|0)==0&Ea>>>0<9){Ga=Ba;Ha=Ca;Ia=P;Ka=$;La=_;Ma=Aa;Na=X;ja=24;break b}Da=$+1|0;Oa=l[$>>0]|0|Aa<<8;Pa=_+8|0;if((Pa|0)<9){Qa=$+2|0;Ra=_+16|0;Sa=l[Da>>0]|0|Oa<<8}else{Qa=Da;Ra=Pa;Sa=Oa}Oa=Ra+-9|0;Pa=Sa>>>Oa;Da=Pa&511;Ta=Da&65535;Ua=sr(Ea|0,Fa|0,-9,-1)|0;Fa=O;k[Fa>>2]=Ua;k[Fa+4>>2]=L;switch(Ta<<16>>16){case 257:{Va=Ba;Wa=Ca;Xa=Oa;Ya=P;Za=Qa;_a=Sa;$a=X;ja=55;break b;break}case 256:{qa=Ca;$=Qa;_=Oa;Aa=Sa;break}default:{ab=Ba;bb=Ca;cb=Oa;db=Pa;eb=Da;fb=Ta;gb=Qa;hb=Sa;break d}}}if((fb&65535)>256){ja=29;break b}i[Y>>0]=db;ib=gb;jb=ab;kb=bb+4080|0;lb=9;mb=511;nb=cb;ob=hb;pb=X+-1|0;qb=(k[u>>2]|0)+(eb<<3)|0;rb=Y+1|0;break}default:{Aa=k[u>>2]|0;_=Aa+(Z<<3)|0;$=Aa+40952|0;if(!(R>>>0>=Aa>>>0&R>>>0<$>>>0)){ja=33;break b}k[R>>2]=P;if(!(P>>>0>=Aa>>>0&P>>>0<$>>>0)){ja=35;break b}$=R+7|0;i[$>>0]=i[P+7>>0]|0;j[R+4>>1]=(m[P+4>>1]|0)+1;i[R+6>>0]=i[(_>>>0<R>>>0?Aa+(Z<<3)+7|0:$)>>0]|0;$=R+8|0;if($>>>0>S>>>0){qa=T+1|0;Ta=(qa|0)>12?12:qa;qa=1<<Ta;sb=Aa+(qa+-2<<3)|0;tb=Ta;ub=qa+-1|0}else{sb=S;tb=T;ub=U}if((ka&65535)<=255){i[Y>>0]=ma;ib=na;jb=$;kb=sb;lb=tb;mb=ub;nb=la;ob=pa;pb=X+-1|0;qb=_;rb=Y+1|0;break c}qa=j[Aa+(Z<<3)+4>>1]|0;Aa=qa&65535;if(!(qa<<16>>16)){ja=40;break b}if((X|0)<(Aa|0)){vb=la;wb=_;xb=$;yb=na;zb=sb;Ab=tb;Bb=ub;Cb=pa;Db=X;Eb=Y;ja=42;break b}qa=Y+Aa|0;Ta=_;Da=qa;do{Da=Da+-1|0;Pa=Ta;Ta=k[Ta>>2]|0;i[Da>>0]=i[Pa+6>>0]|0;Fb=(Ta|0)!=0}while(Da>>>0>Y>>>0&Fb);if(Fb){Gb=la;Hb=_;Ib=$;Jb=na;Kb=sb;Lb=tb;Mb=ub;Nb=pa;Ob=X;ja=52;break b}ib=na;jb=$;kb=sb;lb=tb;mb=ub;nb=la;ob=pa;pb=X-Aa|0;qb=_;rb=qa}}while(0);if((pb|0)>0){P=qb;Q=ib;R=jb;S=kb;T=lb;U=mb;V=nb;W=ob;X=pb;Y=rb}else{ra=ib;sa=jb;ta=kb;ua=lb;va=mb;wa=nb;xa=ob;ya=pb;za=qb;break a}}if((ja|0)==18){Y=k[a+628>>2]|0;k[s>>2]=k[a+452>>2];ie(Y,147871,147905,s);ra=ba;sa=ca;ta=da;ua=ea;va=fa;wa=ga;xa=ha;ya=ia;za=aa;break}else if((ja|0)==24){Y=k[a+628>>2]|0;k[q>>2]=k[a+452>>2];ie(Y,147871,147905,q);ra=Ka;sa=Ga;ta=Ha+4080|0;ua=9;va=511;wa=La;xa=Ma;ya=Na;za=Ia;break}else if((ja|0)==29){Y=k[a+628>>2]|0;X=k[a>>2]|0;k[p>>2]=k[a+444>>2];vc(Y,X,147954,p);H=0;r=d;return H|0}else if((ja|0)==33){X=k[a+628>>2]|0;k[o>>2]=k[a+444>>2];vc(X,147871,148e3,o);H=0;r=d;return H|0}else if((ja|0)==35){X=k[a+628>>2]|0;k[n>>2]=k[a+444>>2];vc(X,147871,148e3,n);H=0;r=d;return H|0}else if((ja|0)==40){X=k[a+628>>2]|0;k[h>>2]=k[a+444>>2];vc(X,147871,148035,h);H=0;r=d;return H|0}else if((ja|0)==42){k[t+108>>2]=wb;X=wb;while(1){Y=k[X>>2]|0;if(!Y){ra=yb;sa=xb;ta=zb;ua=Ab;va=Bb;wa=vb;xa=Cb;ya=Db;za=wb;break a}if((m[Y+4>>1]|0|0)>(Db|0))X=Y;else{Pb=Y;break}}k[v>>2]=Db;X=Pb;Y=Db;W=Eb+Db|0;do{W=W+-1|0;i[W>>0]=i[X+6>>0]|0;X=k[X>>2]|0;Y=Y+-1|0;Qb=(X|0)!=0}while((Y|0)!=0&Qb);if(!Qb){ra=yb;sa=xb;ta=zb;ua=Ab;va=Bb;wa=vb;xa=Cb;ya=Y;za=wb;break}X=k[a+628>>2]|0;k[g>>2]=k[a+444>>2];vc(X,147871,148106,g);ra=yb;sa=xb;ta=zb;ua=Ab;va=Bb;wa=vb;xa=Cb;ya=Y;za=wb;break}else if((ja|0)==52){X=k[a+628>>2]|0;k[f>>2]=k[a+444>>2];vc(X,147871,148106,f);ra=Jb;sa=Ib;ta=Kb;ua=Lb;va=Mb;wa=Gb;xa=Nb;ya=Ob;za=Hb;break}else if((ja|0)==55){ra=Za;sa=Va;ta=Wa+4080|0;ua=9;va=511;wa=Xa;xa=_a;ya=$a;za=Ya;break}}else{ra=b;sa=K;ta=N;ua=w;va=E;wa=C;xa=A;ya=x;za=I}while(0);k[c>>2]=ra;j[G>>1]=ua;k[D>>2]=xa;k[z>>2]=wa;k[B>>2]=va;k[F>>2]=za;k[J>>2]=sa;k[M>>2]=ta;if((ya|0)<=0){H=1;r=d;return H|0}ta=k[a+628>>2]|0;k[e>>2]=k[a+444>>2];a=e+8|0;k[a>>2]=ya;k[a+4>>2]=((ya|0)<0)<<31>>31;vc(ta,147871,148158,e);H=0;r=d;return H|0}function Dh(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+16|0;c=k[a+576>>2]|0;if(!c)Ja(154187,147682,788,147828);d=me(72008)|0;k[c+152>>2]=d;if(d){e=1;r=b;return e|0}vc(k[a+628>>2]|0,147828,147843,b);e=0;r=b;return e|0}function Eh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;b=k[a+576>>2]|0;if(!b)Ja(154187,147682,807,147815);c=b+152|0;d=k[c>>2]|0;if(!d){ub[k[a+516>>2]&63](a)|0;e=k[c>>2]|0}else e=d;j[b+64>>1]=9;j[b+66>>1]=511;j[b+68>>1]=258;k[b+76>>2]=0;k[b+72>>2]=0;k[b+132>>2]=1e4;k[b+136>>2]=0;k[b+140>>2]=0;k[b+144>>2]=0;k[b+148>>2]=(k[a+588>>2]|0)+((k[a+592>>2]|0)+-5);a=e+72e3|0;d=8993;while(1){d=d+-8|0;k[a+-56>>2]=-1;k[a+-48>>2]=-1;k[a+-40>>2]=-1;k[a+-32>>2]=-1;k[a+-24>>2]=-1;k[a+-16>>2]=-1;k[a+-8>>2]=-1;k[a>>2]=-1;if((d|0)<=-1)break;else a=a+-64|0}k[e>>2]=-1;k[b+128>>2]=65535;return 1}function Fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=k[a+576>>2]|0;c=k[a+604>>2]|0;d=k[b+76>>2]|0;e=k[b+72>>2]|0;f=m[b+64>>1]|0;if(c>>>0>(k[b+148>>2]|0)>>>0){g=a+588|0;k[a+608>>2]=c-(k[g>>2]|0);je(a)|0;h=k[g>>2]|0}else h=c;c=b+128|0;b=k[c>>2]|0;if((b|0)==65535){j=d;l=e;n=h}else{g=b|e<<f;e=f+d|0;d=e+-8|0;b=h+1|0;i[h>>0]=g>>>d;if((d|0)>7){o=e+-16|0;i[b>>0]=g>>>o;p=o;q=h+2|0}else{p=d;q=b}k[c>>2]=65535;j=p;l=g;n=q}q=l<<f|257;l=j+f|0;f=l+-8|0;j=n+1|0;i[n>>0]=q>>>f;if((f|0)>7){g=l+-16|0;i[j>>0]=q>>>g;r=j;s=g;t=n+2|0}else{r=n;s=f;t=j}if((s|0)<=0){u=t;v=a+588|0;w=k[v>>2]|0;x=u;y=w;z=x-y|0;A=a+608|0;k[A>>2]=z;return 1}i[t>>0]=q<<8-s;u=r+2|0;v=a+588|0;w=k[v>>2]|0;x=u;y=w;z=x-y|0;A=a+608|0;k[A>>2]=z;return 1}function Gh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;d=k[a+576>>2]|0;if(!d){e=0;return e|0}f=d+152|0;if(!(k[f>>2]|0))Ja(147763,147682,888,147787);g=d+140|0;h=k[g>>2]|0;n=d+144|0;o=k[n>>2]|0;p=d+132|0;q=k[p>>2]|0;r=d+72|0;s=k[r>>2]|0;t=d+76|0;u=k[t>>2]|0;v=d+68|0;w=m[v>>1]|0;x=d+66|0;y=m[x>>1]|0;z=d+64|0;A=m[z>>1]|0;B=a+604|0;C=k[B>>2]|0;D=k[d+148>>2]|0;E=d+128|0;F=k[E>>2]|0;G=F&65535;if((c|0)>0&(F&65535|0)==65535){F=s<<A|256;H=A+u|0;I=H+-8|0;J=C+1|0;i[C>>0]=F>>>I;if((I|0)>7){K=H+-16|0;i[J>>0]=F>>>K;L=K;M=C+2|0}else{L=I;M=J}N=b+1|0;O=c+-1|0;P=l[b>>0]|0;Q=h+1|0;R=L;S=F;T=M;U=A+o|0}else{N=b;O=c;P=G;Q=h;R=u;S=s;T=C;U=o}a:do if((O|0)>0){o=a+588|0;C=a+608|0;s=d+136|0;u=N;h=O;G=q;c=P;b=w;M=Q;F=y;L=A;J=R;I=S;K=T;H=U;b:while(1){V=i[u>>0]|0;u=u+1|0;W=V&255;X=h;h=h+-1|0;Y=M+1|0;Z=c&65535;_=(W<<12)+Z|0;$=W<<5;W=$^Z;aa=k[f>>2]|0;ba=k[aa+(W<<3)>>2]|0;c:do if((ba|0)!=(_|0)){d:do if((ba|0)>-1){ca=($|0)==(Z|0)?1:9001-W|0;da=W;while(1){ea=da-ca|0;fa=(ea|0)<0?ea+9001|0:ea;ea=k[aa+(fa<<3)>>2]|0;if((ea|0)==(_|0)){ga=fa;break}if((ea|0)>-1)da=fa;else{ha=fa;break d}}ia=G;ja=j[aa+(ga<<3)+4>>1]|0;ka=b;la=Y;ma=F;na=L;oa=J;pa=I;qa=K;ra=H;break c}else ha=W;while(0);if(K>>>0>D>>>0){k[C>>2]=K-(k[o>>2]|0);je(a)|0;sa=k[o>>2]|0}else sa=K;da=I<<L|Z;ca=L+J|0;fa=ca+-8|0;ea=sa+1|0;i[sa>>0]=da>>>fa;if((fa|0)>7){ta=ca+-16|0;i[ea>>0]=da>>>ta;ua=ea;va=ta;wa=sa+2|0}else{ua=sa;va=fa;wa=ea}ea=L+H|0;fa=V&255;ta=b+1|0;j[aa+(ha<<3)+4>>1]=b;k[aa+(ha<<3)>>2]=_;if((ta|0)==4094){ca=k[f>>2]|0;xa=ca+72e3|0;ya=8993;while(1){ya=ya+-8|0;k[xa+-56>>2]=-1;k[xa+-48>>2]=-1;k[xa+-40>>2]=-1;k[xa+-32>>2]=-1;k[xa+-24>>2]=-1;k[xa+-16>>2]=-1;k[xa+-8>>2]=-1;k[xa>>2]=-1;if((ya|0)<=-1)break;else xa=xa+-64|0}k[ca>>2]=-1;k[s>>2]=0;xa=da<<L|256;ya=va+L|0;za=ya+-8|0;Aa=ua+2|0;i[wa>>0]=xa>>>za;if((za|0)<=7){ia=G;ja=fa;ka=258;la=0;ma=511;na=9;oa=za;pa=xa;qa=Aa;ra=L;break}za=ya+-16|0;i[Aa>>0]=xa>>>za;ia=G;ja=fa;ka=258;la=0;ma=511;na=9;oa=za;pa=xa;qa=ua+3|0;ra=L;break}if((b|0)>=(F|0)){xa=L+1|0;if((xa|0)>=13)break b;ia=G;ja=fa;ka=ta;la=Y;ma=(1<<xa)+-1|0;na=xa;oa=va;pa=da;qa=wa;ra=ea;break}if((Y|0)>=(G|0)){xa=M+10001|0;if((M|0)>8388606){za=ea>>8;if(!za)Ba=2147483647;else Ba=(Y|0)/(za|0)|0}else Ba=(Y<<8|0)/(ea|0)|0;if((Ba|0)>(k[s>>2]|0)){k[s>>2]=Ba;ia=xa;ja=fa;ka=ta;la=Y;ma=F;na=L;oa=va;pa=da;qa=wa;ra=ea;break}za=k[f>>2]|0;Aa=za+72e3|0;ya=8993;while(1){ya=ya+-8|0;k[Aa+-56>>2]=-1;k[Aa+-48>>2]=-1;k[Aa+-40>>2]=-1;k[Aa+-32>>2]=-1;k[Aa+-24>>2]=-1;k[Aa+-16>>2]=-1;k[Aa+-8>>2]=-1;k[Aa>>2]=-1;if((ya|0)<=-1)break;else Aa=Aa+-64|0}k[za>>2]=-1;k[s>>2]=0;Aa=da<<L|256;ya=va+L|0;ca=ya+-8|0;Ca=ua+2|0;i[wa>>0]=Aa>>>ca;if((ca|0)>7){Da=ya+-16|0;i[Ca>>0]=Aa>>>Da;ia=xa;ja=fa;ka=258;la=0;ma=511;na=9;oa=Da;pa=Aa;qa=ua+3|0;ra=L}else{ia=xa;ja=fa;ka=258;la=0;ma=511;na=9;oa=ca;pa=Aa;qa=Ca;ra=L}}else{ia=G;ja=fa;ka=ta;la=Y;ma=F;na=L;oa=va;pa=da;qa=wa;ra=ea}}else{ia=G;ja=j[aa+(W<<3)+4>>1]|0;ka=b;la=Y;ma=F;na=L;oa=J;pa=I;qa=K;ra=H}while(0);if((X|0)<=1){Ea=ia;Fa=ja;Ga=ka;Ha=la;Ia=ma;Ka=na;La=oa;Ma=pa;Na=qa;Oa=ra;break a}else{G=ia;c=ja;b=ka;M=la;F=ma;L=na;J=oa;I=pa;K=qa;H=ra}}Ja(147797,147682,986,147787)}else{Ea=q;Fa=P;Ga=w;Ha=Q;Ia=y;Ka=A;La=R;Ma=S;Na=T;Oa=U}while(0);k[g>>2]=Ha;k[n>>2]=Oa;k[p>>2]=Ea;k[E>>2]=Fa&65535;k[r>>2]=Ma;k[t>>2]=La;j[v>>1]=Ga;j[x>>1]=Ia;j[z>>1]=Ka;k[B>>2]=Na;e=1;return e|0}function Hh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;Ji(a)|0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(147733,147682,1092,147752);d=k[c+124>>2]|0;if(!d){e=c;f=c}else{ne(d);d=k[b>>2]|0;e=d;f=d}d=k[f+152>>2]|0;if(!d){g=e;ne(g);k[b>>2]=0;Ve(a);return}ne(d);g=k[b>>2]|0;ne(g);k[b>>2]=0;Ve(a);return}function Ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0;d=r;r=r+64|0;e=d+48|0;f=d+40|0;g=d+32|0;h=d+24|0;n=d+16|0;o=d+8|0;p=d;q=k[a+576>>2]|0;if(!q)Ja(154187,147682,601,148255);s=q+88|0;t=k[s>>2]|0;do if(!t){u=c;v=b}else{w=k[q+108>>2]|0;x=(m[w+4>>1]|0)-t|0;if((x|0)<=(c|0)){y=b+x|0;z=w;A=x;B=y;while(1){B=B+-1|0;i[B>>0]=i[z+6>>0]|0;A=A+-1|0;if(!A)break;else z=k[z>>2]|0}k[s>>2]=0;u=c-x|0;v=y;break}k[s>>2]=t+c;z=w;A=x;while(1){B=k[z>>2]|0;A=A+-1|0;if((A|0)<=(c|0)){C=B;break}else z=B}z=C;A=c;x=b+c|0;while(1){x=x+-1|0;i[x>>0]=i[z+6>>0]|0;A=A+-1|0;if(!A){D=1;break}else z=k[z>>2]|0}r=d;return D|0}while(0);c=a+604|0;b=k[c>>2]|0;C=q+64|0;t=m[C>>1]|0;z=q+72|0;A=k[z>>2]|0;x=q+76|0;w=k[x>>2]|0;y=q+84|0;B=k[y>>2]|0;E=q+112|0;F=k[E>>2]|0;G=q+116|0;H=k[G>>2]|0;I=q+120|0;J=k[I>>2]|0;a:do if((u|0)>0){K=q+96|0;M=q+124|0;N=F;O=b;P=H;Q=J;R=t;S=B;T=w;U=A;V=u;W=v;b:while(1){X=K;Y=k[X>>2]|0;Z=k[X+4>>2]|0;X=((R|0)<0)<<31>>31;if(Z>>>0<X>>>0|(Z|0)==(X|0)&Y>>>0<R>>>0){_=N;$=O;aa=P;ba=Q;ca=R;da=S;ea=T;fa=U;ga=V;ha=16;break}ia=O+1|0;ja=(l[O>>0]|0)<<T|U;ka=T+8|0;if((ka|0)<(R|0)){la=O+2|0;ma=T+16|0;na=(l[ia>>0]|0)<<ka|ja}else{la=ia;ma=ka;na=ja}ja=na&S;ka=ja&65535;ia=na>>R;oa=ma-R|0;pa=pr(Y|0,Z|0,R|0,X|0)|0;X=K;k[X>>2]=pa;k[X+4>>2]=L;c:do switch(ka|0){case 257:{qa=la;ra=P;sa=Q;ta=R;ua=S;va=oa;wa=ia;xa=V;ya=N;break a;break}case 256:{X=k[M>>2]|0;pa=la;Z=oa;Y=ia;d:while(1){za=X+2064|0;pe(za,0,38888);Aa=k[M>>2]|0;Ba=K;Ca=k[Ba>>2]|0;Da=k[Ba+4>>2]|0;if(Da>>>0<0|(Da|0)==0&Ca>>>0<9){Ea=za;Fa=Aa;Ga=N;Ha=pa;Ia=Z;Ka=Y;La=V;ha=22;break b}Ba=pa+1|0;Ma=(l[pa>>0]|0)<<Z|Y;Na=Z+8|0;if((Na|0)<9){Oa=pa+2|0;Pa=Z+16|0;Qa=(l[Ba>>0]|0)<<Na|Ma}else{Oa=Ba;Pa=Na;Qa=Ma}Ma=Qa&511;Na=Qa>>9;Ba=Pa+-9|0;Ra=sr(Ca|0,Da|0,-9,-1)|0;Da=K;k[Da>>2]=Ra;k[Da+4>>2]=L;switch(Ma|0){case 257:{Sa=za;Ta=Aa;Ua=Na;Va=Ba;Wa=N;Xa=Oa;Ya=V;ha=47;break b;break}case 256:{X=Aa;pa=Oa;Z=Ba;Y=Na;break}default:{Za=za;_a=Aa;$a=Ma;ab=Na;bb=Ba;cb=Oa;db=Qa;break d}}}if($a>>>0>256){ha=27;break b}i[W>>0]=db;eb=cb;fb=Za;gb=_a+4088|0;hb=9;ib=511;jb=bb;kb=ab;lb=V+-1|0;mb=(k[M>>2]|0)+($a<<3)|0;nb=W+1|0;break}default:{Y=k[M>>2]|0;Z=Y+(ka<<3)|0;pa=Y+40952|0;if(!(P>>>0>=Y>>>0&P>>>0<pa>>>0)){ha=31;break b}k[P>>2]=N;if(!(N>>>0>=Y>>>0&N>>>0<pa>>>0)){ha=33;break b}pa=P+7|0;i[pa>>0]=i[N+7>>0]|0;j[P+4>>1]=(m[N+4>>1]|0)+1;i[P+6>>0]=i[(Z>>>0<P>>>0?Y+(ka<<3)+7|0:pa)>>0]|0;pa=P+8|0;if(pa>>>0>Q>>>0){X=R+1|0;Ba=(X|0)>12?12:X;X=(1<<Ba)+-1|0;ob=Y+(X<<3)|0;pb=Ba;qb=X}else{ob=Q;pb=R;qb=S}if(ka>>>0<=255){i[W>>0]=ja;eb=la;fb=pa;gb=ob;hb=pb;ib=qb;jb=oa;kb=ia;lb=V+-1|0;mb=Z;nb=W+1|0;break c}X=j[Y+(ka<<3)+4>>1]|0;Y=X&65535;if(!(X<<16>>16)){ha=38;break b}if((V|0)<(Y|0)){rb=ia;sb=oa;tb=Z;ub=pa;vb=la;wb=ob;xb=pb;yb=qb;zb=V;Ab=W;ha=40;break b}X=W+Y|0;Ba=Z;Na=X;do{Na=Na+-1|0;i[Na>>0]=i[Ba+6>>0]|0;Ba=k[Ba>>2]|0}while((Ba|0)!=0);eb=la;fb=pa;gb=ob;hb=pb;ib=qb;jb=oa;kb=ia;lb=V-Y|0;mb=Z;nb=X}}while(0);if((lb|0)>0){N=mb;O=eb;P=fb;Q=gb;R=hb;S=ib;T=jb;U=kb;V=lb;W=nb}else{qa=eb;ra=fb;sa=gb;ta=hb;ua=ib;va=jb;wa=kb;xa=lb;ya=mb;break a}}if((ha|0)==16){W=k[a+628>>2]|0;k[p>>2]=k[a+452>>2];ie(W,148255,147905,p);qa=$;ra=aa;sa=ba;ta=ca;ua=da;va=ea;wa=fa;xa=ga;ya=_;break}else if((ha|0)==22){W=k[a+628>>2]|0;k[o>>2]=k[a+452>>2];ie(W,148255,147905,o);qa=Ha;ra=Ea;sa=Fa+4088|0;ta=9;ua=511;va=Ia;wa=Ka;xa=La;ya=Ga;break}else if((ha|0)==27){W=k[a+628>>2]|0;V=k[a>>2]|0;k[n>>2]=k[a+444>>2];vc(W,V,147954,n);D=0;r=d;return D|0}else if((ha|0)==31){V=k[a+628>>2]|0;k[h>>2]=k[a+444>>2];vc(V,148255,148e3,h);D=0;r=d;return D|0}else if((ha|0)==33){V=k[a+628>>2]|0;k[g>>2]=k[a+444>>2];vc(V,148255,148e3,g);D=0;r=d;return D|0}else if((ha|0)==38){V=k[a+628>>2]|0;k[f>>2]=k[a+444>>2];vc(V,148255,148035,f);D=0;r=d;return D|0}else if((ha|0)==40){k[q+108>>2]=tb;V=tb;while(1){W=k[V>>2]|0;if((m[W+4>>1]|0|0)>(zb|0))V=W;else{Bb=W;break}}k[s>>2]=zb;V=Bb;W=zb;U=Ab+zb|0;while(1){U=U+-1|0;i[U>>0]=i[V+6>>0]|0;W=W+-1|0;if(!W){qa=vb;ra=ub;sa=wb;ta=xb;ua=yb;va=sb;wa=rb;xa=0;ya=tb;break}else V=k[V>>2]|0}}else if((ha|0)==47){qa=Xa;ra=Sa;sa=Ta+4088|0;ta=9;ua=511;va=Va;wa=Ua;xa=Ya;ya=Wa;break}}else{qa=b;ra=H;sa=J;ta=t;ua=B;va=w;wa=A;xa=u;ya=F}while(0);k[c>>2]=qa;j[C>>1]=ta;k[z>>2]=wa;k[x>>2]=va;k[y>>2]=ua;k[E>>2]=ya;k[G>>2]=ra;k[I>>2]=sa;if((xa|0)<=0){D=1;r=d;return D|0}sa=k[a+628>>2]|0;k[e>>2]=k[a+444>>2];a=e+8|0;k[a>>2]=xa;k[a+4>>2]=((xa|0)<0)<<31>>31;vc(sa,148255,148158,e);D=0;r=d;return D|0}function Jh(a,b){a=a|0;b=b|0;k[a+512>>2]=33;k[a+532>>2]=38;k[a+540>>2]=38;k[a+548>>2]=38;return 1}function Kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b;d=j[a+84>>1]|0;if(d<<16>>16==2){e=1;r=b;return e|0}f=k[a+628>>2]|0;k[c>>2]=d&65535;vc(f,148358,148372,c);e=0;r=b;return e|0}function Lh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0;d=r;r=r+16|0;e=d+8|0;f=(c|0)>0;if(f)qr(b|0,-1,c|0)|0;g=a+604|0;h=a+608|0;j=k[a+580>>2]|0;if((c|0)%(j|0)|0){vc(k[a+628>>2]|0,148314,153793,d);m=0;r=d;return m|0}n=k[h>>2]|0;o=k[g>>2]|0;a:do if((n|0)>0&f){p=a+56|0;q=a+12|0;s=a+68|0;t=j+1|0;u=c;v=o;w=n;x=b;b:while(1){y=v+1|0;z=l[v>>0]|0;A=w+-1|0;c:do switch(z|0){case 0:{if((w|0)<=(j|0))break b;qe(x,y,j);B=v+t|0;C=A-j|0;break}case 64:{if((w|0)<5)break b;D=(l[y>>0]|0)<<8|(l[v+2>>0]|0);E=(l[v+3>>0]|0)<<8|(l[v+4>>0]|0);F=E+4|0;if((w|0)<=(F|0)|(E+D|0)>(j|0))break b;qe(x+D|0,v+5|0,E);B=v+(E+5)|0;C=A-F|0;break}default:{F=k[((k[q>>2]&1024|0)==0?p:s)>>2]|0;E=y;D=A;G=z;H=0;I=x;while(1){J=G>>>6;K=G&63;L=H>>>0<F>>>0;d:do if((K|0)!=0&L){M=J<<6&255;N=J<<4;O=J<<2;P=K;Q=H;R=I;while(1){S=P;T=Q;e:while(1){U=S;S=S+-1|0;V=T+1|0;switch(T&3|0){case 3:{W=U;X=S;Y=V;break e;break}case 0:{i[R>>0]=M;break}case 1:{i[R>>0]=l[R>>0]|0|N;break}case 2:{i[R>>0]=l[R>>0]|0|O;break}default:{}}Z=V>>>0<F>>>0;if(!((U|0)>1&Z)){_=Z;$=V;aa=R;break d}else T=V}T=R+1|0;i[R>>0]=l[R>>0]|0|J;S=Y>>>0<F>>>0;if((W|0)>1&S){P=X;Q=Y;R=T}else{_=S;$=Y;aa=T;break}}}else{_=L;$=H;aa=I}while(0);if(!_){B=E;C=D;break c}if(!D)break b;L=l[E>>0]|0;E=E+1|0;D=D+-1|0;G=L;H=$;I=aa}}}while(0);u=u-j|0;if(!((C|0)>0&(u|0)>0)){ba=B;ca=C;break a}else{v=B;w=C;x=x+j|0}}x=k[a+628>>2]|0;k[e>>2]=k[a+444>>2];vc(x,148314,148325,e);m=0;r=d;return m|0}else{ba=o;ca=n}while(0);k[g>>2]=ba;k[h>>2]=ca;m=1;r=d;return m|0}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+32|0;d=c+16|0;if((b|0)!=6)Ja(148403,148429,424,148441);if(!(_b(a,109532,7)|0)){vc(k[a+628>>2]|0,148441,148455,c);e=0;r=c;return e|0}b=me(5368)|0;if(!b){vc(k[a+628>>2]|0,148441,148499,c+8|0);e=0;r=c;return e|0}else{pe(b,0,5368);k[b>>2]=a;i[b+224>>0]=1;i[b+228>>0]=2;i[b+229>>0]=2;k[d>>2]=2;k[d+4>>2]=2;Ob(a,530,d)|0;k[a+504>>2]=29;k[a+508>>2]=30;k[a+512>>2]=34;k[a+652>>2]=29;k[a+532>>2]=39;k[a+540>>2]=39;k[a+548>>2]=39;k[a+516>>2]=31;k[a+524>>2]=35;k[a+528>>2]=32;k[a+536>>2]=40;k[a+544>>2]=40;k[a+552>>2]=40;k[a+564>>2]=22;k[a+576>>2]=b;d=a+668|0;f=a+672|0;k[b+160>>2]=k[f>>2];k[f>>2]=21;k[b+164>>2]=k[d>>2];k[d>>2]=22;d=a+676|0;k[b+168>>2]=k[d>>2];k[d>>2]=30;d=a+12|0;k[d>>2]=k[d>>2]|131072;e=1;r=c;return e|0}return 0}function Nh(a){a=a|0;return 1}function Oh(a){a=a|0;var b=0;b=r;r=r+16|0;ie(k[a+628>>2]|0,151837,151854,b);r=b;return 1}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;c=r;r=r+48|0;d=c+32|0;e=c+24|0;f=c+16|0;g=c+8|0;h=c;n=a+576|0;o=k[n>>2]|0;if(!(i[o+226>>0]|0))_h(a);do if(!(i[o+488>>0]|0)){p=k[n>>2]|0;q=p+488|0;if(i[q>>0]|0)Ja(151233,148429,1040,151256);s=k[a+56>>2]|0;k[p+184>>2]=s;t=k[a+60>>2]|0;k[p+188>>2]=t;if(!(k[a+12>>2]&1024)){u=t;v=s;w=k[a+100>>2]|0}else{s=k[a+72>>2]|0;x=t+-1+s|0;u=x-((x>>>0)%(s>>>0)|0)|0;v=k[a+68>>2]|0;w=s}k[p+192>>2]=v;k[p+196>>2]=w;k[p+200>>2]=u;a:do switch(j[a+98>>1]|0){case 1:{i[p+204>>0]=1;i[p+205>>0]=0;i[p+206>>0]=1;i[p+228>>0]=1;i[p+229>>0]=1;break}case 3:{i[p+204>>0]=3;i[p+205>>0]=0;s=p+206|0;if((j[a+126>>1]|0)==1){i[s>>0]=3;break a}else{i[s>>0]=1;break a}break}default:{s=k[a+628>>2]|0;k[h>>2]=l[p+204>>0];vc(s,151256,151276,h);y=0;r=c;return y|0}}while(0);do if(w>>>0<t>>>0){s=l[p+229>>0]<<3;if(!((w>>>0)%(s>>>0)|0)){x=l[p+228>>0]<<3;z=(ha((w>>>0)/(s>>>0)|0,((v+-1+x|0)>>>0)/(x>>>0)|0)|0)&65535;j[p+360>>1]=z;break}vc(k[a+628>>2]|0,151256,151337,g);y=0;r=c;return y|0}while(0);if(!($h(a)|0)){y=0;r=c;return y|0}else{i[p+392>>0]=1;k[p+396>>2]=k[p+1220>>2];k[p+400>>2]=k[p+1224>>2];t=p+1232|0;z=m[p+1256>>1]|0;x=pr(k[t>>2]|0,k[t+4>>2]|0,z|0,0)|0;t=p+408|0;k[t>>2]=x;k[t+4>>2]=L;t=p+1248|0;x=sr(z|0,0,k[t>>2]|0,k[t+4>>2]|0)|0;t=p+416|0;k[t>>2]=x;k[t+4>>2]=L;i[q>>0]=1;break}}while(0);g=b&65535;b:do if(!(i[o+392+(g<<5)>>0]|0)){v=k[n>>2]|0;if(!(b<<16>>16))Ja(151399,148429,1102,151403);if((b&65535)>=3)Ja(151425,148429,1103,151403);if(!(i[v+392>>0]|0))Ja(151429,148429,1104,151403);if(i[v+392+(g<<5)>>0]|0)Ja(151451,148429,1105,151403);w=g+255&255;while(1){h=w&255;if(!(i[v+392+(h<<5)>>0]|0))w=w+-1<<24>>24;else{A=h;B=w;break}}w=v+205|0;i[w>>0]=B;q=v+1220|0;k[q>>2]=k[v+392+(A<<5)+4>>2];p=v+1224|0;k[p>>2]=k[v+392+(A<<5)+8>>2];h=v+392+(A<<5)+16|0;u=k[h+4>>2]|0;t=v+1232|0;x=t;k[x>>2]=k[h>>2];k[x+4>>2]=u;i[v+1240>>0]=0;u=v+392+(A<<5)+24|0;x=k[u+4>>2]|0;h=v+1248|0;z=h;k[z>>2]=k[u>>2];k[z+4>>2]=x;x=v+1256|0;j[x>>1]=0;z=v+1260|0;k[z>>2]=0;if(A>>>0<g>>>0){u=0;c:while(1){if(!(u<<16>>16)){if(!(ai(v)|0)){y=0;C=105;break}s=j[x>>1]|0;if(!(s<<16>>16)){C=36;break}else D=s}else D=u;s=k[z>>2]|0;E=i[s>>0]|0;F=s+1|0;k[z>>2]=F;s=D+-1<<16>>16;j[x>>1]=s;if(E<<24>>24==-1){G=s;H=F}else{u=s;continue}d:while(1){if(!(G<<16>>16)){if(!(ai(v)|0)){y=0;C=105;break c}s=j[x>>1]|0;if(!(s<<16>>16)){C=42;break c}I=k[z>>2]|0;J=s}else{I=H;J=G}s=i[I>>0]|0;F=I+1|0;k[z>>2]=F;E=J+-1<<16>>16;j[x>>1]=E;switch(s<<24>>24){case -1:{G=E;H=F;break}case -38:{break d;break}default:{u=E;continue c}}}i[w>>0]=(i[w>>0]|0)+1<<24>>24;if(!(bi(a)|0)){y=0;C=105;break}E=l[w>>0]|0;i[v+392+(E<<5)>>0]=1;k[v+392+(E<<5)+4>>2]=k[q>>2];k[v+392+(E<<5)+8>>2]=k[p>>2];F=t;u=j[x>>1]|0;s=u&65535;K=pr(k[F>>2]|0,k[F+4>>2]|0,s|0,0)|0;F=v+392+(E<<5)+16|0;k[F>>2]=K;k[F+4>>2]=L;F=h;K=sr(s|0,0,k[F>>2]|0,k[F+4>>2]|0)|0;F=v+392+(E<<5)+24|0;k[F>>2]=K;k[F+4>>2]=L;if(E>>>0>=g>>>0)break b}if((C|0)==36)Ja(149747,148429,2016,149786);else if((C|0)==42)Ja(149747,148429,2016,149786);else if((C|0)==105){r=c;return y|0}}}while(0);H=k[((k[a+12>>2]&1024|0)==0?a+452|0:a+492|0)>>2]|0;G=o+489|0;J=o+490|0;do if(!(i[G>>0]|0))C=54;else{if((j[J>>1]|0)==b<<16>>16?(I=o+492|0,D=k[I>>2]|0,D>>>0<=H>>>0):0){M=I;N=D;break}do if(i[o+496>>0]|0){D=k[n>>2]|0;I=D+496|0;if(!(i[I>>0]|0))Ja(150963,148429,1245,150993);else{Bk(D+632|0);i[I>>0]=0;break}}while(0);i[G>>0]=0;C=54}while(0);do if((C|0)==54){i[o+205>>0]=b;j[J>>1]=b;G=ha(k[a+164>>2]|0,g)|0;I=o+492|0;k[I>>2]=G;G=o+1240|0;if(i[G>>0]|0){D=o+1232|0;A=D;B=o+1256|0;v=pr(k[A>>2]|0,k[A+4>>2]|0,m[B>>1]|0,0)|0;A=o+392+(g<<5)+16|0;h=k[A>>2]|0;u=k[A+4>>2]|0;if(!((v|0)==(h|0)&(L|0)==(u|0))){O=D;P=B;Q=h;R=u;C=57}}else{u=o+392+(g<<5)+16|0;O=o+1232|0;P=o+1256|0;Q=k[u>>2]|0;R=k[u+4>>2]|0;C=57}if((C|0)==57){k[o+1220>>2]=k[o+392+(g<<5)+4>>2];k[o+1224>>2]=k[o+392+(g<<5)+8>>2];u=O;k[u>>2]=Q;k[u+4>>2]=R;i[G>>0]=0;G=o+392+(g<<5)+24|0;u=k[G+4>>2]|0;h=o+1248|0;k[h>>2]=k[G>>2];k[h+4>>2]=u;j[P>>1]=0;k[o+1260>>2]=0}u=k[n>>2]|0;h=u+496|0;if(i[h>>0]|0){y=0;r=c;return y|0}k[u+3312>>2]=0;i[u+362>>0]=0;G=u+500|0;Ql(G)|0;k[u+508>>2]=23;k[G>>2]=24;B=u+632|0;k[B>>2]=G;k[u+644>>2]=a;if(!(gi(u,B)|0)){y=0;r=c;return y|0}i[h>>0]=1;k[u+1124>>2]=0;k[u+1128>>2]=25;k[u+1132>>2]=33;k[u+1136>>2]=5;k[u+1140>>2]=36;k[u+1144>>2]=26;k[u+656>>2]=u+1120;if(!(mi(u,B)|0)){y=0;r=c;return y|0}h=i[u+206>>0]|0;if((i[u+230>>0]|0)==0&(h&255)>1){k[u+700>>2]=1;k[u+708>>2]=0;i[u+497>>0]=0;G=u+1148|0;if(!(i[G>>0]|0)){D=u+1180|0;if(k[D>>2]|0)Ja(151473,148429,1185,151509);v=u+1200|0;if(k[v>>2]|0)Ja(151530,148429,1186,151509);A=u+192|0;x=u+228|0;t=l[x>>0]|0;p=t<<3;q=(k[A>>2]|0)+-1+p|0;w=q-((q>>>0)%(p>>>0)|0)|0;p=u+1152|0;k[p>>2]=w;q=u+229|0;z=l[q>>0]<<3;E=u+1156|0;k[E>>2]=z;F=(w>>>0)/(t>>>0)|0;t=u+1160|0;k[t>>2]=F;K=u+1164|0;k[K>>2]=8;s=ha(z,w)|0;w=u+1168|0;k[w>>2]=s;z=u+1172|0;k[z>>2]=F<<3;S=s+(F<<4)|0;k[u+1176>>2]=S;F=me(S)|0;k[D>>2]=F;if(!F){vc(k[a+628>>2]|0,151509,150005,f);y=0;r=c;return y|0}D=u+1184|0;k[D>>2]=F;S=k[w>>2]|0;w=u+1188|0;k[w>>2]=F+S;s=u+1192|0;k[s>>2]=F+((k[z>>2]|0)+S);S=(k[E>>2]|0)+3+(k[K>>2]<<1)|0;k[u+1196>>2]=S;z=me(S<<2)|0;k[v>>2]=z;if(!z){vc(k[a+628>>2]|0,151509,150005,e);y=0;r=c;return y|0}S=z+12|0;k[z>>2]=S;F=k[E>>2]|0;E=F+3|0;k[z+4>>2]=(k[v>>2]|0)+(E<<2);T=k[K>>2]|0;k[z+8>>2]=(k[v>>2]|0)+(T+E<<2);if(!F)U=S;else{E=k[p>>2]|0;p=F>>>0>1?(F<<2)+12|0:16;v=S;S=0;while(1){K=(k[D>>2]|0)+(ha(S,E)|0)|0;k[v>>2]=K;S=S+1|0;if((S|0)==(F|0))break;else v=v+4|0}U=z+p|0}if(T){v=k[t>>2]|0;F=T>>>0>1;S=U;E=0;while(1){D=(k[w>>2]|0)+(ha(E,v)|0)|0;k[S>>2]=D;E=E+1|0;if((E|0)==(T|0))break;else S=S+4|0}S=U+((F?T:1)<<2)|0;E=0;while(1){w=(k[s>>2]|0)+(ha(E,v)|0)|0;k[S>>2]=w;E=E+1|0;if((E|0)==(T|0))break;else S=S+4|0}}S=l[x>>0]|0;T=(((k[A>>2]|0)+-1+S|0)>>>0)/(S>>>0)|0;k[u+1204>>2]=T;k[u+1208>>2]=0;E=l[q>>0]|0;v=ha((ha(E,S)|0)+2|0,T)|0;k[u+1212>>2]=v;k[u+1216>>2]=(((k[u+196>>2]|0)+-1+E|0)>>>0)/(E>>>0)|0;i[G>>0]=1}}else{k[u+672>>2]=0;k[u+676>>2]=0;i[u+497>>0]=1;E=ha(k[u+192>>2]|0,h&255)|0;k[u+1212>>2]=E;k[u+1216>>2]=k[u+196>>2]}if(!(ni(u,B)|0)){y=0;r=c;return y|0}else{i[u+489>>0]=1;M=I;N=k[I>>2]|0;break}}while(0);if(N>>>0>=H>>>0){y=1;r=c;return y|0}N=o+497|0;e:while(1){o=k[n>>2]|0;f:do if(!(i[N>>0]|0)){U=k[o+1216>>2]|0;e=o+1208|0;f=k[e>>2]|0;P=o+1164|0;g=k[P>>2]|0;do if(f){R=g-f|0;if(U>>>0>R>>>0){k[e>>2]=0;V=U-R|0;break}else{R=f+U|0;k[e>>2]=(R|0)==(g|0)?0:R;break f}}else V=U;while(0);if(V>>>0<g>>>0)W=V;else{U=o+632|0;f=o+1200|0;R=o+229|0;Q=V;while(1){if(!(ci(o,U,k[f>>2]|0,l[R>>0]<<3)|0)){y=0;C=105;break e}O=k[P>>2]|0;b=Q-O|0;if(b>>>0<O>>>0){W=b;break}else Q=b}}if(W){if(!(ci(o,o+632|0,k[o+1200>>2]|0,l[o+229>>0]<<3)|0)){y=0;C=105;break e}k[e>>2]=W}}else{Q=o+5364|0;if((k[Q>>2]|0)==0?(P=me(k[o+1212>>2]|0)|0,k[Q>>2]=P,(P|0)==0):0){C=101;break e}P=o+632|0;R=o+1216|0;if(k[R>>2]|0){f=0;do{f=f+1|0;if(!(di(o,P,Q)|0)){y=0;C=105;break e}}while(f>>>0<(k[R>>2]|0)>>>0)}}while(0);o=(k[M>>2]|0)+1|0;k[M>>2]=o;if(o>>>0>=H>>>0){y=1;C=105;break}}if((C|0)==101){vc(k[a+628>>2]|0,151568,150005,d);y=0;r=c;return y|0}else if((C|0)==105){r=c;return y|0}return 0}function Qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;c=k[a+576>>2]|0;b=c+492|0;d=(k[b>>2]|0)+1|0;k[b>>2]=d;if((d>>>0)%((k[a+164>>2]|0)>>>0)|0)return;a=c+496|0;if(!(i[a>>0]|0))Ja(150963,148429,891,151217);Bk(c+632|0);i[a>>0]=0;i[c+489>>0]=0;return}function Rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=r;r=r+16|0;e=d+8|0;f=d;g=d+12|0;h=k[a+576>>2]|0;if(i[h+497>>0]|0){j=h+1212|0;a:do if(!((c>>>0)%((k[j>>2]|0)>>>0)|0)){if((c|0)<=0)Ja(151191,148429,869,151196);k[g>>2]=b;m=h+632|0;n=c;do{if(!(di(h,m,g)|0))break a;o=k[j>>2]|0;k[g>>2]=(k[g>>2]|0)+o;n=n-o|0}while((n|0)>0);p=1;r=d;return p|0}else vc(k[a+628>>2]|0,151196,151162,e);while(0);p=0;r=d;return p|0}e=h+1212|0;if((c>>>0)%((k[e>>2]|0)>>>0)|0){vc(k[a+628>>2]|0,151147,151162,f);p=0;r=d;return p|0}if((c|0)<=0)Ja(151191,148429,821,151147);f=h+632|0;a=h+1200|0;g=h+1208|0;j=h+229|0;n=h+1184|0;m=h+1152|0;o=h+1188|0;q=h+1160|0;s=h+1192|0;t=h+1204|0;u=h+1164|0;v=h+228|0;w=k[g>>2]|0;x=b;b=c;while(1){if(!w){if(!(ci(h,f,k[a>>2]|0,l[j>>0]<<3)|0)){p=0;y=30;break}z=k[g>>2]|0}else z=w;c=ha(k[q>>2]|0,z)|0;if(!(k[t>>2]|0))A=z;else{B=i[j>>0]|0;C=ha(B&255,z)|0;D=B;B=(k[o>>2]|0)+c|0;E=(k[s>>2]|0)+c|0;c=(k[n>>2]|0)+(ha(C,k[m>>2]|0)|0)|0;C=x;F=0;while(1){G=i[v>>0]|0;if(!(D<<24>>24)){H=G;I=C}else{J=G;K=D;L=G;G=C;M=c;N=0;while(1){if(!(L<<24>>24)){O=J;P=0;Q=K;R=G;S=M}else{T=G;U=M;V=0;while(1){W=U+1|0;X=T+1|0;i[T>>0]=i[U>>0]|0;V=V+1<<24>>24;Y=i[v>>0]|0;if((V&255)>=(Y&255)){Z=W;_=X;$=Y;break}else{T=X;U=W}}O=$;P=$;Q=i[j>>0]|0;R=_;S=Z}N=N+1<<24>>24;if((N&255)>=(Q&255)){H=O;I=R;break}else{J=O;K=Q;L=P;G=R;M=S+((k[m>>2]|0)-(P&255))|0}}}i[I>>0]=i[B>>0]|0;i[I+1>>0]=i[E>>0]|0;M=F+1|0;if(M>>>0>=(k[t>>2]|0)>>>0)break;D=i[j>>0]|0;B=B+1|0;E=E+1|0;c=c+(H&255)|0;C=I+2|0;F=M}A=k[g>>2]|0}F=A+1|0;w=(F|0)==(k[u>>2]|0)?0:F;k[g>>2]=w;F=k[e>>2]|0;b=b-F|0;if((b|0)<=0){p=1;y=30;break}else x=x+F|0}if((y|0)==30){r=d;return p|0}return 0}function Sh(a){a=a|0;var b=0;b=r;r=r+16|0;vc(k[a+628>>2]|0,151130,151030,b);r=b;return 0}function Th(a,b){a=a|0;b=b|0;b=r;r=r+16|0;vc(k[a+628>>2]|0,151115,151030,b);r=b;return 0}function Uh(a){a=a|0;var b=0;b=r;r=r+16|0;vc(k[a+628>>2]|0,151099,151030,b);r=b;return 0}function Vh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=r;r=r+16|0;vc(k[a+628>>2]|0,151018,151030,d);r=d;return 0}function Wh(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+576|0;c=k[b>>2]|0;if(!c)return;k[a+672>>2]=k[c+160>>2];k[a+668>>2]=k[c+164>>2];k[a+676>>2]=k[c+168>>2];d=k[c+312>>2]|0;if(d)ne(d);d=k[c+316>>2]|0;if(d)ne(d);d=k[c+320>>2]|0;if(d)ne(d);d=k[c+324>>2]|0;if(d)ne(d);d=k[c+328>>2]|0;if(d)ne(d);d=k[c+332>>2]|0;if(d)ne(d);d=k[c+336>>2]|0;if(d)ne(d);d=k[c+340>>2]|0;if(d)ne(d);d=k[c+344>>2]|0;if(d)ne(d);d=k[c+348>>2]|0;if(d)ne(d);d=k[c+352>>2]|0;if(d)ne(d);d=k[c+356>>2]|0;if(d)ne(d);do if(i[c+496>>0]|0){d=k[b>>2]|0;e=d+496|0;if(!(i[e>>0]|0))Ja(150963,148429,1245,150993);else{Bk(d+632|0);i[e>>0]=0;break}}while(0);e=k[c+1180>>2]|0;if(e)ne(e);e=k[c+1200>>2]|0;if(e)ne(e);e=k[c+5364>>2]|0;if(e)ne(e);ne(c);k[b>>2]=0;Ve(a);return}function Xh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0;d=k[a+576>>2]|0;switch(b|0){case 513:{e=d+208|0;f=k[e>>2]|0;g=k[e+4>>2]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);h=k[e>>2]|0;k[c>>2]=e+4;e=h;k[e>>2]=f;k[e+4>>2]=g;m=1;return m|0}case 514:{g=d+216|0;e=k[g>>2]|0;f=k[g+4>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;g=h;k[g>>2]=e;k[g+4>>2]=f;m=1;return m|0}case 530:{if(!(i[d+226>>0]|0))_h(a);f=l[d+228>>0]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);e=k[g>>2]|0;k[c>>2]=g+4;j[e>>1]=f;f=l[d+229>>0]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);g=k[e>>2]|0;k[c>>2]=e+4;j[g>>1]=f;m=1;return m|0}case 519:{f=l[d+231>>0]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);e=k[g>>2]|0;k[c>>2]=g+4;k[e>>2]=f;f=(k[c>>2]|0)+(4-1)&~(4-1);e=k[f>>2]|0;k[c>>2]=f+4;k[e>>2]=d+240;m=1;return m|0}case 520:{e=l[d+232>>0]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;e=(k[c>>2]|0)+(4-1)&~(4-1);g=k[e>>2]|0;k[c>>2]=e+4;k[g>>2]=d+264;m=1;return m|0}case 521:{g=l[d+233>>0]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);f=k[e>>2]|0;k[c>>2]=e+4;k[f>>2]=g;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=d+288;m=1;return m|0}case 512:{f=l[d+224>>0]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);e=k[g>>2]|0;k[c>>2]=g+4;j[e>>1]=f;m=1;return m|0}case 515:{f=j[d+360>>1]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);g=k[e>>2]|0;k[c>>2]=e+4;j[g>>1]=f;m=1;return m|0}default:{m=nb[k[d+160>>2]&63](a,b,c)|0;return m|0}}return 0}function Yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+32|0;e=d+16|0;f=d+8|0;g=d;h=k[a+576>>2]|0;switch(b|0){case 513:{m=(k[c>>2]|0)+(8-1)&~(8-1);n=m;o=k[n>>2]|0;p=k[n+4>>2]|0;k[c>>2]=m+8;m=h+208|0;k[m>>2]=o;k[m+4>>2]=p;break}case 514:{p=(k[c>>2]|0)+(8-1)&~(8-1);m=p;o=k[m>>2]|0;n=k[m+4>>2]|0;k[c>>2]=p+8;p=h+216|0;k[p>>2]=o;k[p+4>>2]=n;break}case 530:{i[h+227>>0]=1;n=(k[c>>2]|0)+(4-1)&~(4-1);p=k[n>>2]|0;k[c>>2]=n+4;n=h+228|0;i[n>>0]=p;p=(k[c>>2]|0)+(4-1)&~(4-1);o=k[p>>2]|0;k[c>>2]=p+4;i[h+229>>0]=o;j[a+192>>1]=l[n>>0]|0;j[a+194>>1]=o&255;break}case 519:{o=(k[c>>2]|0)+(4-1)&~(4-1);n=k[o>>2]|0;k[c>>2]=o+4;if(n)if(n>>>0>3){vc(k[a+628>>2]|0,148714,148729,g);q=0;r=d;return q|0}else{i[h+231>>0]=n;g=(k[c>>2]|0)+(4-1)&~(4-1);o=k[g>>2]|0;k[c>>2]=g+4;g=0;do{p=o+(g<<3)|0;m=k[p+4>>2]|0;s=h+240+(g<<3)|0;k[s>>2]=k[p>>2];k[s+4>>2]=m;g=g+1|0}while((g|0)!=(n|0))}break}case 520:{n=(k[c>>2]|0)+(4-1)&~(4-1);g=k[n>>2]|0;k[c>>2]=n+4;if(g)if(g>>>0>3){vc(k[a+628>>2]|0,148714,148765,f);q=0;r=d;return q|0}else{i[h+232>>0]=g;f=(k[c>>2]|0)+(4-1)&~(4-1);n=k[f>>2]|0;k[c>>2]=f+4;f=0;do{o=n+(f<<3)|0;m=k[o+4>>2]|0;s=h+264+(f<<3)|0;k[s>>2]=k[o>>2];k[s+4>>2]=m;f=f+1|0}while((f|0)!=(g|0))}break}case 521:{g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;if(f)if(f>>>0>3){vc(k[a+628>>2]|0,148714,148802,e);q=0;r=d;return q|0}else{i[h+233>>0]=f;e=(k[c>>2]|0)+(4-1)&~(4-1);g=k[e>>2]|0;k[c>>2]=e+4;e=0;do{n=g+(e<<3)|0;m=k[n+4>>2]|0;s=h+288+(e<<3)|0;k[s>>2]=k[n>>2];k[s+4>>2]=m;e=e+1|0}while((e|0)!=(f|0))}break}case 512:{f=(k[c>>2]|0)+(4-1)&~(4-1);e=k[f>>2]|0;k[c>>2]=f+4;i[h+224>>0]=e;break}case 515:{e=(k[c>>2]|0)+(4-1)&~(4-1);f=k[e>>2]|0;k[c>>2]=e+4;j[h+360>>1]=f;break}default:{q=nb[k[h+164>>2]&63](a,b,c)|0;r=d;return q|0}}c=cc(a,b)|0;if(!c){q=0;r=d;return q|0}b=j[c+24>>1]|0;c=a+40+(((b&65535)>>>5&65535)<<2)|0;k[c>>2]=1<<(b&31)|k[c>>2];c=a+12|0;k[c>>2]=k[c>>2]|8;q=1;r=d;return q|0}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;d=r;r=r+64|0;e=d+48|0;f=d+40|0;g=d+32|0;h=d+24|0;j=d+16|0;n=d+8|0;o=d;p=k[a+576>>2]|0;if(!p)Ja(148530,148429,616,148539);q=a+48|0;s=k[q>>2]|0;if(!(s&4))t=s;else{k[o>>2]=k[p+208>>2];wq(b,148553,o)|0;t=k[q>>2]|0}if(!(t&8))u=t;else{k[n>>2]=k[p+216>>2];wq(b,148583,n)|0;u=k[q>>2]|0}if(!(u&16))v=u;else{zq(148619,14,1,b)|0;u=p+231|0;if(i[u>>0]|0){n=0;do{k[j>>2]=k[p+240+((n&255)<<3)>>2];wq(b,148634,j)|0;n=n+1<<24>>24}while((n&255)<(l[u>>0]|0))}xq(10,b)|0;v=k[q>>2]|0}if(!(v&32))w=v;else{zq(148639,15,1,b)|0;v=p+232|0;if(i[v>>0]|0){u=0;do{k[h>>2]=k[p+264+((u&255)<<3)>>2];wq(b,148634,h)|0;u=u+1<<24>>24}while((u&255)<(l[v>>0]|0))}xq(10,b)|0;w=k[q>>2]|0}if(!(w&64))x=w;else{zq(148655,15,1,b)|0;w=p+233|0;if(i[w>>0]|0){v=0;do{k[g>>2]=k[p+288+((v&255)<<3)>>2];wq(b,148634,g)|0;v=v+1<<24>>24}while((v&255)<(l[w>>0]|0))}xq(10,b)|0;x=k[q>>2]|0}if(!(x&128))y=x;else{k[f>>2]=l[p+224>>0];wq(b,148671,f)|0;y=k[q>>2]|0}if(y&256){k[e>>2]=m[p+360>>1];wq(b,148687,e)|0}e=k[p+168>>2]|0;if(!e){r=d;return}vb[e&127](a,b,c);r=d;return}function _h(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=r;r=r+64|0;c=b+48|0;d=b+40|0;e=b+32|0;f=b+16|0;g=b+8|0;h=b;m=k[a+576>>2]|0;gc(a)|0;n=m+226|0;if(i[n>>0]|0)Ja(148839,148429,989,148870);a:do if((j[a+98>>1]|0)==3){switch(j[a+90>>1]|0){case 10:case 6:break;default:break a}i[n>>0]=1;o=m+228|0;p=i[o>>0]|0;q=m+229|0;s=i[q>>0]|0;t=m+225|0;i[t>>0]=1;$h(a)|0;u=m+230|0;v=(i[u>>0]|0)==0;if(v)w=i[o>>0]|0;else{i[o>>0]=1;i[q>>0]=1;w=1}i[t>>0]=0;t=p&255;if(w<<24>>24==p<<24>>24?(i[q>>0]|0)==s<<24>>24:0)x=17;else x=13;do if((x|0)==13)if(v){p=k[a+628>>2]|0;y=w&255;z=l[q>>0]|0;if(!(i[m+227>>0]|0)){k[g>>2]=y;k[g+4>>2]=z;ie(p,148870,148970,g);x=17;break}else{k[f>>2]=y;k[f+4>>2]=z;k[f+8>>2]=t;k[f+12>>2]=s&255;ie(p,148870,149125,f);x=17;break}}else x=18;while(0);if((x|0)==17?(i[u>>0]|0)!=0:0)x=18;if((x|0)==18){v=k[a+628>>2]|0;if(!(i[m+227>>0]|0))ie(v,148870,149258,e);else{k[d>>2]=t;k[d+4>>2]=s&255;ie(v,148870,149488,d)}if(i[u>>0]|0){i[n>>0]=1;r=b;return}}v=i[o>>0]|0;p=i[q>>0]|0;if((v&255)>=(p&255)){i[n>>0]=1;r=b;return}z=k[a+628>>2]|0;k[c>>2]=v&255;k[c+4>>2]=p&255;ie(z,148870,149696,c);i[n>>0]=1;r=b;return}while(0);if(i[m+227>>0]|0)ie(k[a+628>>2]|0,148870,148894,h);i[m+228>>0]=1;i[m+229>>0]=1;i[m+230>>0]=0;i[n>>0]=1;r=b;return}
85
+function Cj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;c=a+116|0;d=(b|0)==0;e=a+72|0;f=a+88|0;g=a+108|0;h=a+56|0;m=a+84|0;n=a+68|0;o=a+52|0;p=a+64|0;q=a+96|0;r=a+120|0;s=a+112|0;t=a+100|0;u=a+5792|0;v=a+5796|0;w=a+5784|0;x=a+5788|0;y=a+104|0;z=a+92|0;A=a+128|0;B=a+44|0;C=a+136|0;a:while(1){D=k[c>>2]|0;while(1){if(D>>>0<262){zj(a);E=k[c>>2]|0;if(d&E>>>0<262){F=0;G=55;break a}if(!E){G=38;break a}if(E>>>0<=2){k[r>>2]=k[q>>2];k[t>>2]=k[s>>2];k[q>>2]=2;H=2;G=16}else G=8}else G=8;do if((G|0)==8){G=0;E=k[g>>2]|0;I=((l[(k[h>>2]|0)+(E+2)>>0]|0)^k[e>>2]<<k[f>>2])&k[m>>2];k[e>>2]=I;J=(k[n>>2]|0)+(I<<1)|0;I=j[J>>1]|0;j[(k[p>>2]|0)+((k[o>>2]&E)<<1)>>1]=I;K=I&65535;j[J>>1]=E;E=k[q>>2]|0;k[r>>2]=E;k[t>>2]=k[s>>2];k[q>>2]=2;if(I<<16>>16)if(E>>>0<(k[A>>2]|0)>>>0)if(((k[g>>2]|0)-K|0)>>>0<=((k[B>>2]|0)+-262|0)>>>0){I=Dj(a,K)|0;k[q>>2]=I;if(I>>>0<6){if((k[C>>2]|0)!=1){if((I|0)!=3){H=I;G=16;break}if(((k[g>>2]|0)-(k[s>>2]|0)|0)>>>0<=4096){H=3;G=16;break}}k[q>>2]=2;H=2;G=16}else{H=I;G=16}}else{H=2;G=16}else{L=E;M=2}else{H=2;G=16}}while(0);if((G|0)==16){G=0;L=k[r>>2]|0;M=H}if(!(L>>>0<3|M>>>0>L>>>0)){N=L;break}if(!(k[y>>2]|0)){k[y>>2]=1;k[g>>2]=(k[g>>2]|0)+1;E=(k[c>>2]|0)+-1|0;k[c>>2]=E;D=E;continue}E=i[(k[h>>2]|0)+((k[g>>2]|0)+-1)>>0]|0;I=k[u>>2]|0;j[(k[v>>2]|0)+(I<<1)>>1]=0;k[u>>2]=I+1;i[(k[w>>2]|0)+I>>0]=E;I=a+148+((E&255)<<2)|0;j[I>>1]=(j[I>>1]|0)+1<<16>>16;if((k[u>>2]|0)==((k[x>>2]|0)+-1|0)){I=k[z>>2]|0;if((I|0)>-1)O=(k[h>>2]|0)+I|0;else O=0;Pj(a,O,(k[g>>2]|0)-I|0,0);k[z>>2]=k[g>>2];I=k[a>>2]|0;E=k[I+28>>2]|0;Nj(E);K=E+20|0;J=k[K>>2]|0;P=I+16|0;Q=k[P>>2]|0;R=J>>>0>Q>>>0?Q:J;if((R|0)!=0?(J=I+12|0,Q=E+16|0,wr(k[J>>2]|0,k[Q>>2]|0,R|0)|0,k[J>>2]=(k[J>>2]|0)+R,k[Q>>2]=(k[Q>>2]|0)+R,J=I+20|0,k[J>>2]=(k[J>>2]|0)+R,k[P>>2]=(k[P>>2]|0)-R,P=k[K>>2]|0,k[K>>2]=P-R,(P|0)==(R|0)):0)k[Q>>2]=k[E+8>>2]}k[g>>2]=(k[g>>2]|0)+1;D=(k[c>>2]|0)+-1|0;k[c>>2]=D;if(!(k[(k[a>>2]|0)+16>>2]|0)){F=0;G=55;break a}}D=k[g>>2]|0;E=D+-3+(k[c>>2]|0)|0;Q=N+253|0;R=D+65535-(k[t>>2]|0)|0;D=k[u>>2]|0;j[(k[v>>2]|0)+(D<<1)>>1]=R;k[u>>2]=D+1;i[(k[w>>2]|0)+D>>0]=Q;D=a+148+((l[155385+(Q&255)>>0]|0|256)+1<<2)|0;j[D>>1]=(j[D>>1]|0)+1<<16>>16;D=R+65535&65535;R=a+2440+((l[154873+(D>>>0<256?D:(D>>>7)+256|0)>>0]|0)<<2)|0;j[R>>1]=(j[R>>1]|0)+1<<16>>16;R=k[u>>2]|0;D=(k[x>>2]|0)+-1|0;Q=k[r>>2]|0;k[c>>2]=1-Q+(k[c>>2]|0);P=Q+-2|0;k[r>>2]=P;Q=k[g>>2]|0;K=P;while(1){P=Q+1|0;k[g>>2]=P;if(P>>>0<=E>>>0){J=((l[(k[h>>2]|0)+(Q+3)>>0]|0)^k[e>>2]<<k[f>>2])&k[m>>2];k[e>>2]=J;I=(k[n>>2]|0)+(J<<1)|0;j[(k[p>>2]|0)+((k[o>>2]&P)<<1)>>1]=j[I>>1]|0;j[I>>1]=P}K=K+-1|0;k[r>>2]=K;if(!K){S=Q;break}else Q=P}k[y>>2]=0;k[q>>2]=2;Q=S+2|0;k[g>>2]=Q;if((R|0)!=(D|0))continue;K=k[z>>2]|0;if((K|0)>-1)T=(k[h>>2]|0)+K|0;else T=0;Pj(a,T,Q-K|0,0);k[z>>2]=k[g>>2];K=k[a>>2]|0;Q=k[K+28>>2]|0;Nj(Q);E=Q+20|0;P=k[E>>2]|0;I=K+16|0;J=k[I>>2]|0;U=P>>>0>J>>>0?J:P;if((U|0)!=0?(P=K+12|0,J=Q+16|0,wr(k[P>>2]|0,k[J>>2]|0,U|0)|0,k[P>>2]=(k[P>>2]|0)+U,k[J>>2]=(k[J>>2]|0)+U,P=K+20|0,k[P>>2]=(k[P>>2]|0)+U,k[I>>2]=(k[I>>2]|0)-U,I=k[E>>2]|0,k[E>>2]=I-U,(I|0)==(U|0)):0)k[J>>2]=k[Q+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){F=0;G=55;break}}if((G|0)==38){if(k[y>>2]|0){T=i[(k[h>>2]|0)+((k[g>>2]|0)+-1)>>0]|0;S=k[u>>2]|0;j[(k[v>>2]|0)+(S<<1)>>1]=0;k[u>>2]=S+1;i[(k[w>>2]|0)+S>>0]=T;S=a+148+((T&255)<<2)|0;j[S>>1]=(j[S>>1]|0)+1<<16>>16;k[y>>2]=0}y=k[g>>2]|0;k[a+5812>>2]=y>>>0<2?y:2;if((b|0)==4){b=k[z>>2]|0;if((b|0)>-1)V=(k[h>>2]|0)+b|0;else V=0;Pj(a,V,y-b|0,1);k[z>>2]=k[g>>2];b=k[a>>2]|0;V=k[b+28>>2]|0;Nj(V);S=V+20|0;T=k[S>>2]|0;w=b+16|0;v=k[w>>2]|0;q=T>>>0>v>>>0?v:T;if((q|0)!=0?(T=b+12|0,v=V+16|0,wr(k[T>>2]|0,k[v>>2]|0,q|0)|0,k[T>>2]=(k[T>>2]|0)+q,k[v>>2]=(k[v>>2]|0)+q,T=b+20|0,k[T>>2]=(k[T>>2]|0)+q,k[w>>2]=(k[w>>2]|0)-q,w=k[S>>2]|0,k[S>>2]=w-q,(w|0)==(q|0)):0)k[v>>2]=k[V+8>>2];F=(k[(k[a>>2]|0)+16>>2]|0)==0?2:3;return F|0}if(k[u>>2]|0){u=k[z>>2]|0;if((u|0)>-1)W=(k[h>>2]|0)+u|0;else W=0;Pj(a,W,y-u|0,0);k[z>>2]=k[g>>2];g=k[a>>2]|0;z=k[g+28>>2]|0;Nj(z);u=z+20|0;y=k[u>>2]|0;W=g+16|0;h=k[W>>2]|0;V=y>>>0>h>>>0?h:y;if((V|0)!=0?(y=g+12|0,h=z+16|0,wr(k[y>>2]|0,k[h>>2]|0,V|0)|0,k[y>>2]=(k[y>>2]|0)+V,k[h>>2]=(k[h>>2]|0)+V,y=g+20|0,k[y>>2]=(k[y>>2]|0)+V,k[W>>2]=(k[W>>2]|0)-V,W=k[u>>2]|0,k[u>>2]=W-V,(W|0)==(V|0)):0)k[h>>2]=k[z+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){F=0;return F|0}}F=1;return F|0}else if((G|0)==55)return F|0;return 0}function Dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=k[a+124>>2]|0;d=k[a+56>>2]|0;e=k[a+108>>2]|0;f=d+e|0;g=k[a+120>>2]|0;h=k[a+144>>2]|0;j=(k[a+44>>2]|0)+-262|0;l=e>>>0>j>>>0?e-j|0:0;j=k[a+64>>2]|0;n=k[a+52>>2]|0;o=d+(e+258)|0;p=k[a+116>>2]|0;q=h>>>0>p>>>0?p:h;h=a+112|0;r=d+(e+1)|0;s=d+(e+2)|0;t=o;u=e+257|0;v=b;b=g;w=g>>>0<(k[a+140>>2]|0)>>>0?c:c>>>2;c=i[d+(g+e)>>0]|0;a=i[d+(e+-1+g)>>0]|0;while(1){g=d+v|0;if((((i[d+(v+b)>>0]|0)==c<<24>>24?(i[d+(b+-1+v)>>0]|0)==a<<24>>24:0)?(i[g>>0]|0)==(i[f>>0]|0):0)?(i[d+(v+1)>>0]|0)==(i[r>>0]|0):0){g=d+(v+2)|0;x=s;while(1){y=x+1|0;if((i[y>>0]|0)!=(i[g+1>>0]|0)){z=y;break}y=x+2|0;if((i[y>>0]|0)!=(i[g+2>>0]|0)){z=y;break}y=x+3|0;if((i[y>>0]|0)!=(i[g+3>>0]|0)){z=y;break}y=x+4|0;if((i[y>>0]|0)!=(i[g+4>>0]|0)){z=y;break}y=x+5|0;if((i[y>>0]|0)!=(i[g+5>>0]|0)){z=y;break}y=x+6|0;if((i[y>>0]|0)!=(i[g+6>>0]|0)){z=y;break}y=x+7|0;if((i[y>>0]|0)!=(i[g+7>>0]|0)){z=y;break}y=x+8|0;g=g+8|0;if(!(y>>>0<o>>>0?(i[y>>0]|0)==(i[g>>0]|0):0)){z=y;break}else x=y}x=z-t|0;g=x+258|0;if((g|0)>(b|0)){k[h>>2]=v;if((g|0)>=(q|0)){A=g;B=20;break}C=g;D=i[d+(g+e)>>0]|0;E=i[d+(u+x)>>0]|0}else{C=b;D=c;E=a}}else{C=b;D=c;E=a}v=m[j+((v&n)<<1)>>1]|0;if(v>>>0<=l>>>0){A=C;B=20;break}w=w+-1|0;if(!w){A=C;B=20;break}else{b=C;c=D;a=E}}if((B|0)==20)return (A>>>0>p>>>0?p:A)|0;return 0}function Ej(a){a=a|0;var b=0,c=0,d=0;if(!a){b=-2;return b|0}c=k[a+28>>2]|0;if(!c){b=-2;return b|0}k[c+40>>2]=0;k[c+44>>2]=0;k[c+48>>2]=0;k[c+28>>2]=0;k[a+20>>2]=0;k[a+8>>2]=0;k[a+24>>2]=0;d=k[c+8>>2]|0;if(d)k[a+48>>2]=d&1;k[c>>2]=0;k[c+4>>2]=0;k[c+12>>2]=0;k[c+20>>2]=32768;k[c+32>>2]=0;k[c+56>>2]=0;k[c+60>>2]=0;d=c+1328|0;k[c+108>>2]=d;k[c+80>>2]=d;k[c+76>>2]=d;k[c+7104>>2]=1;k[c+7108>>2]=-1;b=0;return b|0}function Fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;if(!b){d=-6;return d|0}if((c|0)!=56|(i[b>>0]|0)!=49){d=-6;return d|0}if(!a){d=-2;return d|0}b=a+24|0;k[b>>2]=0;c=a+32|0;e=k[c>>2]|0;if(!e){k[c>>2]=29;k[a+40>>2]=0;f=29}else f=e;e=a+36|0;if(!(k[e>>2]|0))k[e>>2]=6;e=nb[f&63](k[a+40>>2]|0,1,7116)|0;if(!e){d=-4;return d|0}k[a+28>>2]=e;k[e+52>>2]=0;k[e+8>>2]=1;k[e+36>>2]=15;k[e+40>>2]=0;k[e+44>>2]=0;k[e+48>>2]=0;k[e+28>>2]=0;k[a+20>>2]=0;k[a+8>>2]=0;k[b>>2]=0;k[a+48>>2]=1;k[e>>2]=0;k[e+4>>2]=0;k[e+12>>2]=0;k[e+20>>2]=32768;k[e+32>>2]=0;k[e+56>>2]=0;k[e+60>>2]=0;a=e+1328|0;k[e+108>>2]=a;k[e+80>>2]=a;k[e+76>>2]=a;k[e+7104>>2]=1;k[e+7108>>2]=-1;d=0;return d|0}function Gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0,ee=0,fe=0,ge=0,he=0,ie=0,je=0,ke=0,le=0,me=0,ne=0,oe=0,pe=0,qe=0,re=0,se=0,te=0,ue=0,ve=0,we=0,xe=0,ye=0,ze=0,Ae=0,Be=0,Ce=0,De=0,Ee=0,Fe=0,Ge=0,He=0,Ie=0,Je=0,Ke=0,Le=0,Me=0,Ne=0,Oe=0,Pe=0,Qe=0,Re=0,Se=0,Te=0,Ue=0,Ve=0,We=0,Xe=0,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,mf=0,nf=0,of=0,pf=0,qf=0,rf=0,sf=0,tf=0,uf=0,vf=0,wf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=0,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,dg=0,eg=0,fg=0,gg=0,hg=0,ig=0,jg=0,kg=0,lg=0,mg=0,ng=0,og=0,pg=0,qg=0,rg=0,sg=0,tg=0,ug=0,vg=0,wg=0,xg=0,yg=0,zg=0,Ag=0,Bg=0,Cg=0,Dg=0,Eg=0,Fg=0,Gg=0,Hg=0,Ig=0,Jg=0,Kg=0,Lg=0,Mg=0,Ng=0,Og=0,Pg=0,Qg=0,Rg=0,Sg=0,Tg=0,Ug=0,Vg=0,Wg=0,Xg=0,Yg=0,Zg=0;c=r;r=r+16|0;d=c;if(!a){e=-2;r=c;return e|0}f=k[a+28>>2]|0;if(!f){e=-2;r=c;return e|0}g=a+12|0;h=k[g>>2]|0;if(!h){e=-2;r=c;return e|0}n=k[a>>2]|0;if((n|0)==0?(k[a+4>>2]|0)!=0:0){e=-2;r=c;return e|0}o=k[f>>2]|0;if((o|0)==11){k[f>>2]=12;p=12}else p=o;o=a+16|0;q=k[o>>2]|0;s=a+4|0;t=k[s>>2]|0;u=f+56|0;v=f+60|0;w=f+8|0;x=f+24|0;y=d+1|0;z=f+16|0;A=f+32|0;B=a+24|0;C=f+36|0;D=f+20|0;E=a+48|0;F=f+64|0;G=f+12|0;H=(b+-5|0)>>>0<2;I=f+4|0;J=f+76|0;K=f+84|0;L=f+80|0;M=f+88|0;N=(b|0)==6;O=f+7108|0;P=f+72|0;Q=f+7112|0;R=f+68|0;S=f+44|0;T=f+7104|0;U=f+48|0;V=f+52|0;W=f+40|0;X=a+20|0;Y=f+28|0;Z=d+2|0;_=d+3|0;$=f+104|0;aa=f+96|0;ba=f+100|0;ca=f+624|0;da=f+1328|0;ea=f+108|0;fa=f+112|0;ga=f+752|0;ha=f+92|0;ia=h;h=p;p=k[v>>2]|0;ja=t;ka=k[u>>2]|0;la=q;ma=n;n=q;q=0;a:while(1){b:do switch(h|0){case 28:{na=ia;oa=la;pa=p;qa=ja;ra=ka;sa=ma;ta=n;ua=1;break a;break}case 29:{va=ia;wa=p;xa=ja;ya=ka;za=la;Aa=ma;Ba=n;Ca=281;break a;break}case 30:{e=-4;Ca=296;break a;break}case 0:{Da=k[w>>2]|0;if(!Da){k[f>>2]=12;Ea=p;Fa=ja;Ga=ka;Ha=la;Ia=ma;Ja=n;Ka=ia;La=q;break b}if(p>>>0<16){Ma=p;Na=ja;Oa=ka;Pa=ma;while(1){if(!Na){na=ia;oa=la;pa=Ma;qa=0;ra=Oa;sa=Pa;ta=n;ua=q;break a}Qa=Na+-1|0;Ra=Pa+1|0;Sa=(l[Pa>>0]<<Ma)+Oa|0;Ta=Ma+8|0;if(Ta>>>0<16){Ma=Ta;Na=Qa;Oa=Sa;Pa=Ra}else{Ua=Ta;Va=Qa;Wa=Sa;Xa=Ra;break}}}else{Ua=p;Va=ja;Wa=ka;Xa=ma}if((Wa|0)==35615&(Da&2|0)!=0){Pa=Xj(0,0,0)|0;k[x>>2]=Pa;i[d>>0]=31;i[y>>0]=-117;Pa=Xj(k[x>>2]|0,d,2)|0;k[x>>2]=Pa;k[f>>2]=1;Ea=0;Fa=Va;Ga=0;Ha=la;Ia=Xa;Ja=n;Ka=ia;La=q;break b}k[z>>2]=0;Pa=k[A>>2]|0;if(Pa)k[Pa+48>>2]=-1;if((Da&1|0)!=0?((((Wa<<8&65280)+(Wa>>>8)|0)>>>0)%31|0|0)==0:0){if((Wa&15|0)!=8){k[B>>2]=154515;k[f>>2]=29;Ea=Ua;Fa=Va;Ga=Wa;Ha=la;Ia=Xa;Ja=n;Ka=ia;La=q;break b}Pa=Wa>>>4;Oa=Ua+-4|0;Na=(Pa&15)+8|0;Ma=k[C>>2]|0;if(Ma){if(Na>>>0>Ma>>>0){k[B>>2]=154542;k[f>>2]=29;Ea=Oa;Fa=Va;Ga=Pa;Ha=la;Ia=Xa;Ja=n;Ka=ia;La=q;break b}}else k[C>>2]=Na;k[D>>2]=1<<Na;Na=Wj(0,0,0)|0;k[x>>2]=Na;k[E>>2]=Na;k[f>>2]=Wa>>>12&2^11;Ea=0;Fa=Va;Ga=0;Ha=la;Ia=Xa;Ja=n;Ka=ia;La=q;break b}k[B>>2]=154492;k[f>>2]=29;Ea=Ua;Fa=Va;Ga=Wa;Ha=la;Ia=Xa;Ja=n;Ka=ia;La=q;break}case 1:{if(p>>>0<16){Na=p;Pa=ja;Oa=ka;Ma=ma;while(1){if(!Pa){na=ia;oa=la;pa=Na;qa=0;ra=Oa;sa=Ma;ta=n;ua=q;break a}Ra=Pa+-1|0;Sa=Ma+1|0;Qa=(l[Ma>>0]<<Na)+Oa|0;Ta=Na+8|0;if(Ta>>>0<16){Na=Ta;Pa=Ra;Oa=Qa;Ma=Sa}else{Ya=Qa;Za=Ta;_a=Ra;$a=Sa;break}}}else{Ya=ka;Za=p;_a=ja;$a=ma}k[z>>2]=Ya;if((Ya&255|0)!=8){k[B>>2]=154515;k[f>>2]=29;Ea=Za;Fa=_a;Ga=Ya;Ha=la;Ia=$a;Ja=n;Ka=ia;La=q;break b}if(Ya&57344){k[B>>2]=154562;k[f>>2]=29;Ea=Za;Fa=_a;Ga=Ya;Ha=la;Ia=$a;Ja=n;Ka=ia;La=q;break b}Ma=k[A>>2]|0;if(Ma)k[Ma>>2]=Ya>>>8&1;if(Ya&512){i[d>>0]=Ya;i[y>>0]=Ya>>>8;Ma=Xj(k[x>>2]|0,d,2)|0;k[x>>2]=Ma}k[f>>2]=2;ab=0;bb=_a;cb=0;db=$a;Ca=47;break}case 2:{if(p>>>0<32){ab=p;bb=ja;cb=ka;db=ma;Ca=47}else{eb=ja;fb=ka;gb=ma;Ca=49}break}case 3:{if(p>>>0<16){hb=p;ib=ja;jb=ka;kb=ma;Ca=55}else{lb=ja;mb=ka;nb=ma;Ca=57}break}case 4:{ob=p;pb=ja;qb=ka;rb=ma;Ca=62;break}case 5:{sb=p;tb=ja;ub=ka;vb=ma;Ca=73;break}case 6:{wb=p;xb=ja;yb=ka;zb=ma;Ca=83;break}case 7:{Ab=p;Bb=ja;Cb=ka;Db=ma;Ca=96;break}case 8:{Eb=p;Fb=ja;Gb=ka;Hb=ma;Ca=109;break}case 9:{if(p>>>0<32){Ma=p;Oa=ja;Pa=ka;Na=ma;while(1){if(!Oa){na=ia;oa=la;pa=Ma;qa=0;ra=Pa;sa=Na;ta=n;ua=q;break a}Da=Oa+-1|0;Sa=Na+1|0;Ra=(l[Na>>0]<<Ma)+Pa|0;Ma=Ma+8|0;if(Ma>>>0>=32){Ib=Da;Jb=Ra;Kb=Sa;break}else{Oa=Da;Pa=Ra;Na=Sa}}}else{Ib=ja;Jb=ka;Kb=ma}Na=xr(Jb|0)|0;k[x>>2]=Na;k[E>>2]=Na;k[f>>2]=10;Lb=0;Mb=Ib;Nb=0;Ob=Kb;Ca=121;break}case 10:{Lb=p;Mb=ja;Nb=ka;Ob=ma;Ca=121;break}case 11:{Pb=p;Qb=ja;Rb=ka;Sb=ma;Ca=124;break}case 12:{Tb=p;Ub=ja;Vb=ka;Wb=ma;Ca=125;break}case 13:{Na=p&7;Pa=ka>>>Na;Oa=p-Na|0;if(Oa>>>0<32){Na=Oa;Ma=ja;Sa=Pa;Ra=ma;while(1){if(!Ma){na=ia;oa=la;pa=Na;qa=0;ra=Sa;sa=Ra;ta=n;ua=q;break a}Da=Ma+-1|0;Ta=Ra+1|0;Qa=(l[Ra>>0]<<Na)+Sa|0;Xb=Na+8|0;if(Xb>>>0<32){Na=Xb;Ma=Da;Sa=Qa;Ra=Ta}else{Yb=Xb;Zb=Da;_b=Qa;$b=Ta;break}}}else{Yb=Oa;Zb=ja;_b=Pa;$b=ma}Ra=_b&65535;if((Ra|0)==(_b>>>16^65535|0)){k[F>>2]=Ra;k[f>>2]=14;if(N){na=ia;oa=la;pa=0;qa=Zb;ra=0;sa=$b;ta=n;ua=q;break a}else{ac=0;bc=Zb;cc=0;dc=$b;Ca=143;break b}}else{k[B>>2]=154626;k[f>>2]=29;Ea=Yb;Fa=Zb;Ga=_b;Ha=la;Ia=$b;Ja=n;Ka=ia;La=q;break b}break}case 14:{ac=p;bc=ja;cc=ka;dc=ma;Ca=143;break}case 15:{ec=p;fc=ja;gc=ka;hc=ma;Ca=144;break}case 16:{if(p>>>0<14){Ra=p;Sa=ja;Ma=ka;Na=ma;while(1){if(!Sa){na=ia;oa=la;pa=Ra;qa=0;ra=Ma;sa=Na;ta=n;ua=q;break a}Ta=Sa+-1|0;Qa=Na+1|0;Da=(l[Na>>0]<<Ra)+Ma|0;Xb=Ra+8|0;if(Xb>>>0<14){Ra=Xb;Sa=Ta;Ma=Da;Na=Qa}else{ic=Xb;jc=Ta;kc=Da;lc=Qa;break}}}else{ic=p;jc=ja;kc=ka;lc=ma}Na=(kc&31)+257|0;k[aa>>2]=Na;Ma=(kc>>>5&31)+1|0;k[ba>>2]=Ma;Sa=(kc>>>10&15)+4|0;k[ha>>2]=Sa;Ra=kc>>>14;Pa=ic+-14|0;if(Na>>>0>286|Ma>>>0>30){k[B>>2]=154655;k[f>>2]=29;Ea=Pa;Fa=jc;Ga=Ra;Ha=la;Ia=lc;Ja=n;Ka=ia;La=q;break b}else{k[$>>2]=0;k[f>>2]=17;mc=Sa;nc=0;oc=Pa;pc=jc;qc=Ra;rc=lc;Ca=154;break b}break}case 17:{Ra=k[$>>2]|0;Pa=k[ha>>2]|0;if(Ra>>>0<Pa>>>0){mc=Pa;nc=Ra;oc=p;pc=ja;qc=ka;rc=ma;Ca=154}else{sc=Ra;tc=p;uc=ja;vc=ka;wc=ma;Ca=155}break}case 18:{xc=k[$>>2]|0;yc=p;zc=ja;Ac=ka;Bc=ma;Cc=q;Ca=165;break}case 19:{Dc=p;Ec=ja;Fc=ka;Gc=ma;Hc=q;Ca=199;break}case 20:{Ic=p;Jc=ja;Kc=ka;Lc=ma;Mc=q;Ca=200;break}case 21:{Nc=k[P>>2]|0;Oc=p;Pc=ja;Qc=ka;Rc=ma;Sc=q;Ca=218;break}case 22:{Tc=p;Uc=ja;Vc=ka;Wc=ma;Xc=q;Ca=225;break}case 23:{Yc=k[P>>2]|0;Zc=p;_c=ja;$c=ka;ad=ma;bd=q;Ca=237;break}case 24:{cd=p;dd=ja;ed=ka;fd=ma;gd=q;Ca=243;break}case 25:{if(!la){na=ia;oa=0;pa=p;qa=ja;ra=ka;sa=ma;ta=n;ua=q;break a}i[ia>>0]=k[F>>2];k[f>>2]=20;Ea=p;Fa=ja;Ga=ka;Ha=la+-1|0;Ia=ma;Ja=n;Ka=ia+1|0;La=q;break}case 26:{if(k[w>>2]|0){if(p>>>0<32){Ra=p;Pa=ja;Sa=ka;Ma=ma;while(1){if(!Pa){na=ia;oa=la;pa=Ra;qa=0;ra=Sa;sa=Ma;ta=n;ua=q;break a}Na=Pa+-1|0;Oa=Ma+1|0;Qa=(l[Ma>>0]<<Ra)+Sa|0;Da=Ra+8|0;if(Da>>>0<32){Ra=Da;Pa=Na;Sa=Qa;Ma=Oa}else{hd=Da;id=Na;jd=Qa;kd=Oa;break}}}else{hd=p;id=ja;jd=ka;kd=ma}Ma=n-la|0;k[X>>2]=(k[X>>2]|0)+Ma;k[Y>>2]=(k[Y>>2]|0)+Ma;if((n|0)==(la|0))ld=k[x>>2]|0;else{Sa=k[x>>2]|0;Pa=ia+(0-Ma)|0;if(!(k[z>>2]|0))md=Wj(Sa,Pa,Ma)|0;else md=Xj(Sa,Pa,Ma)|0;k[x>>2]=md;k[E>>2]=md;ld=md}Ma=(k[z>>2]|0)==0;Pa=xr(jd|0)|0;if(((Ma?Pa:jd)|0)==(ld|0)){nd=0;od=id;pd=0;qd=kd;rd=la}else{k[B>>2]=154829;k[f>>2]=29;Ea=hd;Fa=id;Ga=jd;Ha=la;Ia=kd;Ja=la;Ka=ia;La=q;break b}}else{nd=p;od=ja;pd=ka;qd=ma;rd=n}k[f>>2]=27;sd=nd;td=od;ud=pd;vd=qd;wd=rd;Ca=273;break}case 27:{sd=p;td=ja;ud=ka;vd=ma;wd=n;Ca=273;break}default:{Ca=295;break a}}while(0);if((Ca|0)==47)while(1){Ca=0;if(!bb){na=ia;oa=la;pa=ab;qa=0;ra=cb;sa=db;ta=n;ua=q;break a}Pa=bb+-1|0;Ma=db+1|0;Sa=(l[db>>0]<<ab)+cb|0;ab=ab+8|0;if(ab>>>0>=32){eb=Pa;fb=Sa;gb=Ma;Ca=49;break}else{bb=Pa;cb=Sa;db=Ma;Ca=47}}else if((Ca|0)==121){Ca=0;if(!(k[G>>2]|0)){xd=ia;yd=Lb;zd=Mb;Ad=Nb;Bd=la;Cd=Ob;Ca=122;break}Ma=Wj(0,0,0)|0;k[x>>2]=Ma;k[E>>2]=Ma;k[f>>2]=11;Pb=Lb;Qb=Mb;Rb=Nb;Sb=Ob;Ca=124}else if((Ca|0)==143){Ca=0;k[f>>2]=15;ec=ac;fc=bc;gc=cc;hc=dc;Ca=144}else if((Ca|0)==154){Ca=0;Ma=nc;Sa=oc;Pa=pc;Ra=qc;Oa=rc;while(1){if(Sa>>>0<3){Qa=Sa;Na=Pa;Da=Ra;Ta=Oa;while(1){if(!Na){na=ia;oa=la;pa=Qa;qa=0;ra=Da;sa=Ta;ta=n;ua=q;break a}Xb=Na+-1|0;Dd=Ta+1|0;Ed=(l[Ta>>0]<<Qa)+Da|0;Fd=Qa+8|0;if(Fd>>>0<3){Qa=Fd;Na=Xb;Da=Ed;Ta=Dd}else{Gd=Fd;Hd=Xb;Id=Ed;Jd=Dd;break}}}else{Gd=Sa;Hd=Pa;Id=Ra;Jd=Oa}Ta=Ma+1|0;k[$>>2]=Ta;j[f+112+(m[127246+(Ma<<1)>>1]<<1)>>1]=Id&7;Da=Id>>>3;Na=Gd+-3|0;if(Ta>>>0<mc>>>0){Ma=Ta;Sa=Na;Pa=Hd;Ra=Da;Oa=Jd}else{sc=Ta;tc=Na;uc=Hd;vc=Da;wc=Jd;Ca=155;break}}}else if((Ca|0)==273){Ca=0;if(!(k[w>>2]|0)){Kd=ia;Ld=sd;Md=td;Nd=ud;Od=la;Pd=vd;Qd=wd;Ca=280;break}if(!(k[z>>2]|0)){Kd=ia;Ld=sd;Md=td;Nd=ud;Od=la;Pd=vd;Qd=wd;Ca=280;break}if(sd>>>0<32){Oa=sd;Ra=td;Pa=ud;Sa=vd;while(1){if(!Ra){na=ia;oa=la;pa=Oa;qa=0;ra=Pa;sa=Sa;ta=wd;ua=q;break a}Ma=Ra+-1|0;Da=Sa+1|0;Na=(l[Sa>>0]<<Oa)+Pa|0;Ta=Oa+8|0;if(Ta>>>0<32){Oa=Ta;Ra=Ma;Pa=Na;Sa=Da}else{Rd=Ta;Sd=Ma;Td=Na;Ud=Da;break}}}else{Rd=sd;Sd=td;Td=ud;Ud=vd}if((Td|0)==(k[Y>>2]|0)){Kd=ia;Ld=0;Md=Sd;Nd=0;Od=la;Pd=Ud;Qd=wd;Ca=280;break}k[B>>2]=154850;k[f>>2]=29;Ea=Rd;Fa=Sd;Ga=Td;Ha=la;Ia=Ud;Ja=wd;Ka=ia;La=q}do if((Ca|0)==49){Ca=0;Sa=k[A>>2]|0;if(Sa)k[Sa+4>>2]=fb;if(k[z>>2]&512){i[d>>0]=fb;i[y>>0]=fb>>>8;i[Z>>0]=fb>>>16;i[_>>0]=fb>>>24;Sa=Xj(k[x>>2]|0,d,4)|0;k[x>>2]=Sa}k[f>>2]=3;hb=0;ib=eb;jb=0;kb=gb;Ca=55}else if((Ca|0)==124){Ca=0;if(H){na=ia;oa=la;pa=Pb;qa=Qb;ra=Rb;sa=Sb;ta=n;ua=q;break a}else{Tb=Pb;Ub=Qb;Vb=Rb;Wb=Sb;Ca=125}}else if((Ca|0)==144){Ca=0;Sa=k[F>>2]|0;if(!Sa){k[f>>2]=11;Ea=ec;Fa=fc;Ga=gc;Ha=la;Ia=hc;Ja=n;Ka=ia;La=q;break}Pa=Sa>>>0>fc>>>0?fc:Sa;Sa=Pa>>>0>la>>>0?la:Pa;if(!Sa){na=ia;oa=la;pa=ec;qa=fc;ra=gc;sa=hc;ta=n;ua=q;break a}wr(ia|0,hc|0,Sa|0)|0;k[F>>2]=(k[F>>2]|0)-Sa;Ea=ec;Fa=fc-Sa|0;Ga=gc;Ha=la-Sa|0;Ia=hc+Sa|0;Ja=n;Ka=ia+Sa|0;La=q}else if((Ca|0)==155){Ca=0;if(sc>>>0<19){Sa=sc;do{j[f+112+(m[127246+(Sa<<1)>>1]<<1)>>1]=0;Sa=Sa+1|0}while((Sa|0)!=19);k[$>>2]=19}k[ea>>2]=da;k[J>>2]=da;k[K>>2]=7;Sa=Kj(0,fa,19,ea,K,ga)|0;if(!Sa){k[$>>2]=0;k[f>>2]=18;xc=0;yc=tc;zc=uc;Ac=vc;Bc=wc;Cc=0;Ca=165;break}else{k[B>>2]=154691;k[f>>2]=29;Ea=tc;Fa=uc;Ga=vc;Ha=la;Ia=wc;Ja=n;Ka=ia;La=Sa;break}}while(0);c:do if((Ca|0)==55)while(1){Ca=0;if(!ib){na=ia;oa=la;pa=hb;qa=0;ra=jb;sa=kb;ta=n;ua=q;break a}Sa=ib+-1|0;Pa=kb+1|0;Ra=(l[kb>>0]<<hb)+jb|0;hb=hb+8|0;if(hb>>>0>=16){lb=Sa;mb=Ra;nb=Pa;Ca=57;break}else{ib=Sa;jb=Ra;kb=Pa;Ca=55}}else if((Ca|0)==125){Ca=0;if(k[I>>2]|0){Pa=Tb&7;k[f>>2]=26;Ea=Tb-Pa|0;Fa=Ub;Ga=Vb>>>Pa;Ha=la;Ia=Wb;Ja=n;Ka=ia;La=q;break}if(Tb>>>0<3){Pa=Tb;Ra=Ub;Sa=Vb;Oa=Wb;while(1){if(!Ra){na=ia;oa=la;pa=Pa;qa=0;ra=Sa;sa=Oa;ta=n;ua=q;break a}Da=Ra+-1|0;Na=Oa+1|0;Ma=(l[Oa>>0]<<Pa)+Sa|0;Ta=Pa+8|0;if(Ta>>>0<3){Pa=Ta;Ra=Da;Sa=Ma;Oa=Na}else{Vd=Ta;Wd=Da;Xd=Ma;Yd=Na;break}}}else{Vd=Tb;Wd=Ub;Xd=Vb;Yd=Wb}k[I>>2]=Xd&1;switch(Xd>>>1&3|0){case 0:{k[f>>2]=13;break}case 1:{k[J>>2]=125070;k[K>>2]=9;k[L>>2]=127118;k[M>>2]=5;k[f>>2]=19;if(N){Zd=ia;_d=Vd;$d=Wd;ae=Xd;be=la;ce=Yd;de=n;ee=q;Ca=133;break a}break}case 2:{k[f>>2]=16;break}case 3:{k[B>>2]=154607;k[f>>2]=29;break}default:{}}Ea=Vd+-3|0;Fa=Wd;Ga=Xd>>>3;Ha=la;Ia=Yd;Ja=n;Ka=ia;La=q}else if((Ca|0)==165){Ca=0;Oa=k[aa>>2]|0;Sa=k[ba>>2]|0;do if(xc>>>0<(Sa+Oa|0)>>>0){Ra=xc;Pa=Sa;Na=Oa;Ma=yc;Da=zc;Ta=Ac;Qa=Bc;d:while(1){Dd=(1<<k[K>>2])+-1|0;Ed=Dd&Ta;Xb=k[J>>2]|0;Fd=l[Xb+(Ed<<2)+1>>0]|0;if(Ma>>>0<Fd>>>0){fe=Ma;ge=Da;he=Ta;ie=Qa;while(1){if(!ge){na=ia;oa=la;pa=fe;qa=0;ra=he;sa=ie;ta=n;ua=Cc;break a}je=ge+-1|0;ke=ie+1|0;le=(l[ie>>0]<<fe)+he|0;me=fe+8|0;ne=Dd&le;oe=l[Xb+(ne<<2)+1>>0]|0;if(me>>>0<oe>>>0){fe=me;ge=je;he=le;ie=ke}else{pe=oe;qe=ne;re=me;se=je;te=le;ue=ke;break}}}else{pe=Fd;qe=Ed;re=Ma;se=Da;te=Ta;ue=Qa}ie=j[Xb+(qe<<2)+2>>1]|0;if((ie&65535)>=16){switch(ie<<16>>16){case 16:{he=pe+2|0;if(re>>>0<he>>>0){ge=re;fe=se;Dd=te;ke=ue;while(1){if(!fe){na=ia;oa=la;pa=ge;qa=0;ra=Dd;sa=ke;ta=n;ua=Cc;break a}le=fe+-1|0;je=ke+1|0;me=(l[ke>>0]<<ge)+Dd|0;ne=ge+8|0;if(ne>>>0<he>>>0){ge=ne;fe=le;Dd=me;ke=je}else{ve=ne;we=le;xe=me;ye=je;break}}}else{ve=re;we=se;xe=te;ye=ue}ke=xe>>>pe;Dd=ve-pe|0;if(!Ra){ze=ke;Ae=Dd;Be=we;Ce=ye;Ca=179;break d}De=Dd+-2|0;Ee=(ke&3)+3|0;Fe=we;Ge=ke>>>2;He=m[f+112+(Ra+-1<<1)>>1]|0;Ie=ye;break}case 17:{ke=pe+3|0;if(re>>>0<ke>>>0){Dd=re;fe=se;ge=te;he=ue;while(1){if(!fe){na=ia;oa=la;pa=Dd;qa=0;ra=ge;sa=he;ta=n;ua=Cc;break a}Xb=fe+-1|0;Ed=he+1|0;Fd=(l[he>>0]<<Dd)+ge|0;je=Dd+8|0;if(je>>>0<ke>>>0){Dd=je;fe=Xb;ge=Fd;he=Ed}else{Je=je;Ke=Xb;Le=Fd;Me=Ed;break}}}else{Je=re;Ke=se;Le=te;Me=ue}he=Le>>>pe;De=-3-pe+Je|0;Ee=(he&7)+3|0;Fe=Ke;Ge=he>>>3;He=0;Ie=Me;break}default:{he=pe+7|0;if(re>>>0<he>>>0){ge=re;fe=se;Dd=te;ke=ue;while(1){if(!fe){na=ia;oa=la;pa=ge;qa=0;ra=Dd;sa=ke;ta=n;ua=Cc;break a}Ed=fe+-1|0;Fd=ke+1|0;Xb=(l[ke>>0]<<ge)+Dd|0;je=ge+8|0;if(je>>>0<he>>>0){ge=je;fe=Ed;Dd=Xb;ke=Fd}else{Ne=je;Oe=Ed;Pe=Xb;Qe=Fd;break}}}else{Ne=re;Oe=se;Pe=te;Qe=ue}ke=Pe>>>pe;De=-7-pe+Ne|0;Ee=(ke&127)+11|0;Fe=Oe;Ge=ke>>>7;He=0;Ie=Qe}}if((Ra+Ee|0)>>>0>(Pa+Na|0)>>>0){Re=De;Se=Fe;Te=Ge;Ue=Ie;Ca=189;break}ke=He&65535;Dd=Ee+-1|0;k[$>>2]=Ra+1;j[f+112+(Ra<<1)>>1]=ke;if(!Dd){Ve=De;We=Fe;Xe=Ge;Ye=Ie}else{fe=Dd;do{Dd=k[$>>2]|0;fe=fe+-1|0;k[$>>2]=Dd+1;j[f+112+(Dd<<1)>>1]=ke}while((fe|0)!=0);Ve=De;We=Fe;Xe=Ge;Ye=Ie}}else{k[$>>2]=Ra+1;j[f+112+(Ra<<1)>>1]=ie;Ve=re-pe|0;We=se;Xe=te>>>pe;Ye=ue}Ra=k[$>>2]|0;fe=k[aa>>2]|0;Pa=k[ba>>2]|0;if(Ra>>>0>=(Pa+fe|0)>>>0){Ze=fe;_e=Ve;$e=We;af=Xe;bf=Ye;Ca=191;break}else{Na=fe;Ma=Ve;Da=We;Ta=Xe;Qa=Ye}}if((Ca|0)==179){Ca=0;k[B>>2]=154716;k[f>>2]=29;Ea=Ae;Fa=Be;Ga=ze;Ha=la;Ia=Ce;Ja=n;Ka=ia;La=Cc;break c}else if((Ca|0)==189){Ca=0;k[B>>2]=154716;k[f>>2]=29;Ea=Re;Fa=Se;Ga=Te;Ha=la;Ia=Ue;Ja=n;Ka=ia;La=Cc;break c}else if((Ca|0)==191){Ca=0;if((k[f>>2]|0)==29){Ea=_e;Fa=$e;Ga=af;Ha=la;Ia=bf;Ja=n;Ka=ia;La=Cc;break c}else{cf=Ze;df=_e;ef=$e;ff=af;gf=bf;break}}}else{cf=Oa;df=yc;ef=zc;ff=Ac;gf=Bc}while(0);if(!(j[ca>>1]|0)){k[B>>2]=154742;k[f>>2]=29;Ea=df;Fa=ef;Ga=ff;Ha=la;Ia=gf;Ja=n;Ka=ia;La=Cc;break}k[ea>>2]=da;k[J>>2]=da;k[K>>2]=9;Oa=Kj(1,fa,cf,ea,K,ga)|0;if(Oa){k[B>>2]=154779;k[f>>2]=29;Ea=df;Fa=ef;Ga=ff;Ha=la;Ia=gf;Ja=n;Ka=ia;La=Oa;break}k[L>>2]=k[ea>>2];k[M>>2]=6;Oa=Kj(2,f+112+(k[aa>>2]<<1)|0,k[ba>>2]|0,ea,M,ga)|0;if(!Oa){k[f>>2]=19;if(N){na=ia;oa=la;pa=df;qa=ef;ra=ff;sa=gf;ta=n;ua=0;break a}else{Dc=df;Ec=ef;Fc=ff;Gc=gf;Hc=0;Ca=199;break}}else{k[B>>2]=154807;k[f>>2]=29;Ea=df;Fa=ef;Ga=ff;Ha=la;Ia=gf;Ja=n;Ka=ia;La=Oa;break}}while(0);if((Ca|0)==57){Ca=0;Oa=k[A>>2]|0;if(Oa){k[Oa+8>>2]=mb&255;k[Oa+12>>2]=mb>>>8}if(k[z>>2]&512){i[d>>0]=mb;i[y>>0]=mb>>>8;Oa=Xj(k[x>>2]|0,d,2)|0;k[x>>2]=Oa}k[f>>2]=4;ob=0;pb=lb;qb=0;rb=nb;Ca=62}else if((Ca|0)==199){Ca=0;k[f>>2]=20;Ic=Dc;Jc=Ec;Kc=Fc;Lc=Gc;Mc=Hc;Ca=200}do if((Ca|0)==62){Ca=0;Oa=k[z>>2]|0;if(!(Oa&1024)){Sa=k[A>>2]|0;if(!Sa){hf=ob;jf=pb;kf=qb;lf=rb}else{k[Sa+16>>2]=0;hf=ob;jf=pb;kf=qb;lf=rb}}else{if(ob>>>0<16){Sa=ob;Qa=pb;Ta=qb;Da=rb;while(1){if(!Qa){na=ia;oa=la;pa=Sa;qa=0;ra=Ta;sa=Da;ta=n;ua=q;break a}Ma=Qa+-1|0;Na=Da+1|0;Pa=(l[Da>>0]<<Sa)+Ta|0;Sa=Sa+8|0;if(Sa>>>0>=16){mf=Ma;nf=Pa;of=Na;break}else{Qa=Ma;Ta=Pa;Da=Na}}}else{mf=pb;nf=qb;of=rb}k[F>>2]=nf;Da=k[A>>2]|0;if(Da)k[Da+20>>2]=nf;if(!(Oa&512)){hf=0;jf=mf;kf=0;lf=of}else{i[d>>0]=nf;i[y>>0]=nf>>>8;Da=Xj(k[x>>2]|0,d,2)|0;k[x>>2]=Da;hf=0;jf=mf;kf=0;lf=of}}k[f>>2]=5;sb=hf;tb=jf;ub=kf;vb=lf;Ca=73}else if((Ca|0)==200){Ca=0;if(la>>>0>257&Jc>>>0>5){k[g>>2]=ia;k[o>>2]=la;k[a>>2]=Lc;k[s>>2]=Jc;k[u>>2]=Kc;k[v>>2]=Ic;Yj(a,n);Da=k[g>>2]|0;Ta=k[o>>2]|0;Qa=k[a>>2]|0;Sa=k[s>>2]|0;Na=k[u>>2]|0;Pa=k[v>>2]|0;if((k[f>>2]|0)!=11){Ea=Pa;Fa=Sa;Ga=Na;Ha=Ta;Ia=Qa;Ja=n;Ka=Da;La=Mc;break}k[O>>2]=-1;Ea=Pa;Fa=Sa;Ga=Na;Ha=Ta;Ia=Qa;Ja=n;Ka=Da;La=Mc;break}k[O>>2]=0;Da=(1<<k[K>>2])+-1|0;Qa=Da&Kc;Ta=k[J>>2]|0;Na=i[Ta+(Qa<<2)+1>>0]|0;Sa=Na&255;if(Sa>>>0>Ic>>>0){Pa=Ic;Ma=Jc;Ra=Kc;fe=Lc;while(1){if(!Ma){na=ia;oa=la;pa=Pa;qa=0;ra=Ra;sa=fe;ta=n;ua=Mc;break a}ke=Ma+-1|0;Dd=fe+1|0;ge=(l[fe>>0]<<Pa)+Ra|0;he=Pa+8|0;Fd=Da&ge;Xb=i[Ta+(Fd<<2)+1>>0]|0;Ed=Xb&255;if(Ed>>>0>he>>>0){Pa=he;Ma=ke;Ra=ge;fe=Dd}else{pf=Xb;qf=Ed;rf=Fd;sf=he;tf=ke;uf=ge;vf=Dd;break}}}else{pf=Na;qf=Sa;rf=Qa;sf=Ic;tf=Jc;uf=Kc;vf=Lc}fe=i[Ta+(rf<<2)>>0]|0;Ra=j[Ta+(rf<<2)+2>>1]|0;Ma=fe&255;if(fe<<24>>24!=0&(Ma&240|0)==0){Pa=Ra&65535;Da=(1<<qf+Ma)+-1|0;Ma=((uf&Da)>>>qf)+Pa|0;Oa=i[Ta+(Ma<<2)+1>>0]|0;if(((Oa&255)+qf|0)>>>0>sf>>>0){Dd=sf;ge=tf;ke=uf;he=vf;while(1){if(!ge){na=ia;oa=la;pa=Dd;qa=0;ra=ke;sa=he;ta=n;ua=Mc;break a}Fd=ge+-1|0;Ed=he+1|0;Xb=(l[he>>0]<<Dd)+ke|0;je=Dd+8|0;me=((Xb&Da)>>>qf)+Pa|0;le=i[Ta+(me<<2)+1>>0]|0;if(((le&255)+qf|0)>>>0>je>>>0){Dd=je;ge=Fd;ke=Xb;he=Ed}else{wf=me;xf=le;yf=je;zf=Fd;Af=Xb;Bf=Ed;break}}}else{wf=Ma;xf=Oa;yf=sf;zf=tf;Af=uf;Bf=vf}he=j[Ta+(wf<<2)+2>>1]|0;ke=i[Ta+(wf<<2)>>0]|0;k[O>>2]=qf;Cf=qf;Df=yf-qf|0;Ef=zf;Ff=ke;Gf=xf;Hf=he;If=Af>>>qf;Jf=Bf}else{Cf=0;Df=sf;Ef=tf;Ff=fe;Gf=pf;Hf=Ra;If=uf;Jf=vf}he=Gf&255;ke=If>>>he;ge=Df-he|0;k[O>>2]=Cf+he;k[F>>2]=Hf&65535;he=Ff&255;if(!(Ff<<24>>24)){k[f>>2]=25;Ea=ge;Fa=Ef;Ga=ke;Ha=la;Ia=Jf;Ja=n;Ka=ia;La=Mc;break}if(he&32){k[O>>2]=-1;k[f>>2]=11;Ea=ge;Fa=Ef;Ga=ke;Ha=la;Ia=Jf;Ja=n;Ka=ia;La=Mc;break}if(!(he&64)){Dd=he&15;k[P>>2]=Dd;k[f>>2]=21;Nc=Dd;Oc=ge;Pc=Ef;Qc=ke;Rc=Jf;Sc=Mc;Ca=218;break}else{k[B>>2]=155829;k[f>>2]=29;Ea=ge;Fa=Ef;Ga=ke;Ha=la;Ia=Jf;Ja=n;Ka=ia;La=Mc;break}}while(0);if((Ca|0)==73){Ca=0;ke=k[z>>2]|0;if(ke&1024){ge=k[F>>2]|0;Dd=ge>>>0>tb>>>0?tb:ge;if(!Dd){Kf=ge;Lf=tb;Mf=vb}else{he=k[A>>2]|0;if((he|0)!=0?(Pa=k[he+16>>2]|0,(Pa|0)!=0):0){Da=(k[he+20>>2]|0)-ge|0;ge=k[he+24>>2]|0;wr(Pa+Da|0,vb|0,((Da+Dd|0)>>>0>ge>>>0?ge-Da|0:Dd)|0)|0;Nf=k[z>>2]|0}else Nf=ke;if(Nf&512){ke=Xj(k[x>>2]|0,vb,Dd)|0;k[x>>2]=ke}ke=(k[F>>2]|0)-Dd|0;k[F>>2]=ke;Kf=ke;Lf=tb-Dd|0;Mf=vb+Dd|0}if(!Kf){Of=Lf;Pf=Mf}else{na=ia;oa=la;pa=sb;qa=Lf;ra=ub;sa=Mf;ta=n;ua=q;break}}else{Of=tb;Pf=vb}k[F>>2]=0;k[f>>2]=6;wb=sb;xb=Of;yb=ub;zb=Pf;Ca=83}else if((Ca|0)==218){Ca=0;if(!Nc){Qf=k[F>>2]|0;Rf=Oc;Sf=Pc;Tf=Qc;Uf=Rc}else{if(Oc>>>0<Nc>>>0){Dd=Oc;ke=Pc;Da=Qc;ge=Rc;while(1){if(!ke){na=ia;oa=la;pa=Dd;qa=0;ra=Da;sa=ge;ta=n;ua=Sc;break a}Pa=ke+-1|0;he=ge+1|0;Qa=(l[ge>>0]<<Dd)+Da|0;Sa=Dd+8|0;if(Sa>>>0<Nc>>>0){Dd=Sa;ke=Pa;Da=Qa;ge=he}else{Vf=Sa;Wf=Pa;Xf=Qa;Yf=he;break}}}else{Vf=Oc;Wf=Pc;Xf=Qc;Yf=Rc}ge=(k[F>>2]|0)+((1<<Nc)+-1&Xf)|0;k[F>>2]=ge;k[O>>2]=(k[O>>2]|0)+Nc;Qf=ge;Rf=Vf-Nc|0;Sf=Wf;Tf=Xf>>>Nc;Uf=Yf}k[Q>>2]=Qf;k[f>>2]=22;Tc=Rf;Uc=Sf;Vc=Tf;Wc=Uf;Xc=Sc;Ca=225}do if((Ca|0)==83){Ca=0;if(!(k[z>>2]&2048)){ge=k[A>>2]|0;if(!ge){Zf=xb;_f=zb}else{k[ge+28>>2]=0;Zf=xb;_f=zb}}else{if(!xb){na=ia;oa=la;pa=wb;qa=0;ra=yb;sa=zb;ta=n;ua=q;break a}else $f=0;while(1){ge=$f+1|0;Da=i[zb+$f>>0]|0;ke=k[A>>2]|0;if(((ke|0)!=0?(Dd=k[ke+28>>2]|0,(Dd|0)!=0):0)?(he=k[F>>2]|0,he>>>0<(k[ke+32>>2]|0)>>>0):0){k[F>>2]=he+1;i[Dd+he>>0]=Da}he=Da<<24>>24!=0;if(he&xb>>>0>ge>>>0)$f=ge;else{ag=ge;bg=he;break}}if(k[z>>2]&512){Ra=Xj(k[x>>2]|0,zb,ag)|0;k[x>>2]=Ra}Ra=xb-ag|0;fe=zb+ag|0;if(bg){na=ia;oa=la;pa=wb;qa=Ra;ra=yb;sa=fe;ta=n;ua=q;break a}else{Zf=Ra;_f=fe}}k[F>>2]=0;k[f>>2]=7;Ab=wb;Bb=Zf;Cb=yb;Db=_f;Ca=96}else if((Ca|0)==225){Ca=0;fe=(1<<k[M>>2])+-1|0;Ra=fe&Vc;Ta=k[L>>2]|0;Oa=i[Ta+(Ra<<2)+1>>0]|0;Ma=Oa&255;if(Ma>>>0>Tc>>>0){he=Tc;ge=Uc;Da=Vc;Dd=Wc;while(1){if(!ge){na=ia;oa=la;pa=he;qa=0;ra=Da;sa=Dd;ta=n;ua=Xc;break a}ke=ge+-1|0;Qa=Dd+1|0;Pa=(l[Dd>>0]<<he)+Da|0;Sa=he+8|0;Na=fe&Pa;Ed=i[Ta+(Na<<2)+1>>0]|0;Xb=Ed&255;if(Xb>>>0>Sa>>>0){he=Sa;ge=ke;Da=Pa;Dd=Qa}else{cg=Ed;dg=Xb;eg=Na;fg=Sa;gg=ke;hg=Pa;ig=Qa;break}}}else{cg=Oa;dg=Ma;eg=Ra;fg=Tc;gg=Uc;hg=Vc;ig=Wc}Dd=i[Ta+(eg<<2)>>0]|0;Da=j[Ta+(eg<<2)+2>>1]|0;ge=Dd&255;if(!(ge&240)){he=Da&65535;fe=(1<<dg+ge)+-1|0;ge=((hg&fe)>>>dg)+he|0;Qa=i[Ta+(ge<<2)+1>>0]|0;if(((Qa&255)+dg|0)>>>0>fg>>>0){Pa=fg;ke=gg;Sa=hg;Na=ig;while(1){if(!ke){na=ia;oa=la;pa=Pa;qa=0;ra=Sa;sa=Na;ta=n;ua=Xc;break a}Xb=ke+-1|0;Ed=Na+1|0;Fd=(l[Na>>0]<<Pa)+Sa|0;je=Pa+8|0;le=((Fd&fe)>>>dg)+he|0;me=i[Ta+(le<<2)+1>>0]|0;if(((me&255)+dg|0)>>>0>je>>>0){Pa=je;ke=Xb;Sa=Fd;Na=Ed}else{jg=le;kg=me;lg=je;mg=Xb;ng=Fd;og=Ed;break}}}else{jg=ge;kg=Qa;lg=fg;mg=gg;ng=hg;og=ig}Na=j[Ta+(jg<<2)+2>>1]|0;Sa=i[Ta+(jg<<2)>>0]|0;ke=(k[O>>2]|0)+dg|0;k[O>>2]=ke;pg=ke;qg=lg-dg|0;rg=mg;sg=Sa;tg=kg;ug=Na;vg=ng>>>dg;wg=og}else{pg=k[O>>2]|0;qg=fg;rg=gg;sg=Dd;tg=cg;ug=Da;vg=hg;wg=ig}Na=tg&255;Sa=vg>>>Na;ke=qg-Na|0;k[O>>2]=pg+Na;Na=sg&255;if(!(Na&64)){k[R>>2]=ug&65535;Pa=Na&15;k[P>>2]=Pa;k[f>>2]=23;Yc=Pa;Zc=ke;_c=rg;$c=Sa;ad=wg;bd=Xc;Ca=237;break}else{k[B>>2]=155807;k[f>>2]=29;Ea=ke;Fa=rg;Ga=Sa;Ha=la;Ia=wg;Ja=n;Ka=ia;La=Xc;break}}while(0);if((Ca|0)==96){Ca=0;if(!(k[z>>2]&4096)){Sa=k[A>>2]|0;if(!Sa){xg=Bb;yg=Db}else{k[Sa+36>>2]=0;xg=Bb;yg=Db}}else{if(!Bb){na=ia;oa=la;pa=Ab;qa=0;ra=Cb;sa=Db;ta=n;ua=q;break}else zg=0;while(1){Sa=zg+1|0;ke=i[Db+zg>>0]|0;Pa=k[A>>2]|0;if(((Pa|0)!=0?(Na=k[Pa+36>>2]|0,(Na|0)!=0):0)?(he=k[F>>2]|0,he>>>0<(k[Pa+40>>2]|0)>>>0):0){k[F>>2]=he+1;i[Na+he>>0]=ke}he=ke<<24>>24!=0;if(he&Bb>>>0>Sa>>>0)zg=Sa;else{Ag=Sa;Bg=he;break}}if(k[z>>2]&512){he=Xj(k[x>>2]|0,Db,Ag)|0;k[x>>2]=he}he=Bb-Ag|0;Sa=Db+Ag|0;if(Bg){na=ia;oa=la;pa=Ab;qa=he;ra=Cb;sa=Sa;ta=n;ua=q;break}else{xg=he;yg=Sa}}k[f>>2]=8;Eb=Ab;Fb=xg;Gb=Cb;Hb=yg;Ca=109}else if((Ca|0)==237){Ca=0;if(!Yc){Cg=Zc;Dg=_c;Eg=$c;Fg=ad}else{if(Zc>>>0<Yc>>>0){Sa=Zc;he=_c;ke=$c;Na=ad;while(1){if(!he){na=ia;oa=la;pa=Sa;qa=0;ra=ke;sa=Na;ta=n;ua=bd;break a}Pa=he+-1|0;fe=Na+1|0;Ra=(l[Na>>0]<<Sa)+ke|0;Ma=Sa+8|0;if(Ma>>>0<Yc>>>0){Sa=Ma;he=Pa;ke=Ra;Na=fe}else{Gg=Ma;Hg=Pa;Ig=Ra;Jg=fe;break}}}else{Gg=Zc;Hg=_c;Ig=$c;Jg=ad}k[R>>2]=(k[R>>2]|0)+((1<<Yc)+-1&Ig);k[O>>2]=(k[O>>2]|0)+Yc;Cg=Gg-Yc|0;Dg=Hg;Eg=Ig>>>Yc;Fg=Jg}k[f>>2]=24;cd=Cg;dd=Dg;ed=Eg;fd=Fg;gd=bd;Ca=243}do if((Ca|0)==109){Ca=0;Na=k[z>>2]|0;if(Na&512){if(Eb>>>0<16){ke=Eb;he=Fb;Sa=Gb;fe=Hb;while(1){if(!he){na=ia;oa=la;pa=ke;qa=0;ra=Sa;sa=fe;ta=n;ua=q;break a}Ra=he+-1|0;Pa=fe+1|0;Ma=(l[fe>>0]<<ke)+Sa|0;Oa=ke+8|0;if(Oa>>>0<16){ke=Oa;he=Ra;Sa=Ma;fe=Pa}else{Kg=Oa;Lg=Ra;Mg=Ma;Ng=Pa;break}}}else{Kg=Eb;Lg=Fb;Mg=Gb;Ng=Hb}if((Mg|0)==(k[x>>2]&65535|0)){Og=0;Pg=Lg;Qg=0;Rg=Ng}else{k[B>>2]=154587;k[f>>2]=29;Ea=Kg;Fa=Lg;Ga=Mg;Ha=la;Ia=Ng;Ja=n;Ka=ia;La=q;break}}else{Og=Eb;Pg=Fb;Qg=Gb;Rg=Hb}fe=k[A>>2]|0;if(fe){k[fe+44>>2]=Na>>>9&1;k[fe+48>>2]=1}fe=Xj(0,0,0)|0;k[x>>2]=fe;k[E>>2]=fe;k[f>>2]=11;Ea=Og;Fa=Pg;Ga=Qg;Ha=la;Ia=Rg;Ja=n;Ka=ia;La=q}else if((Ca|0)==243){Ca=0;if(!la){na=ia;oa=0;pa=cd;qa=dd;ra=ed;sa=fd;ta=n;ua=gd;break a}fe=n-la|0;Sa=k[R>>2]|0;if(Sa>>>0>fe>>>0){he=Sa-fe|0;if(he>>>0>(k[S>>2]|0)>>>0?(k[T>>2]|0)!=0:0){k[B>>2]=155777;k[f>>2]=29;Ea=cd;Fa=dd;Ga=ed;Ha=la;Ia=fd;Ja=n;Ka=ia;La=gd;break}fe=k[U>>2]|0;if(he>>>0>fe>>>0){ke=he-fe|0;Sg=ke;Tg=(k[V>>2]|0)+((k[W>>2]|0)-ke)|0}else{Sg=he;Tg=(k[V>>2]|0)+(fe-he)|0}he=k[F>>2]|0;Ug=he;Vg=Sg>>>0>he>>>0?he:Sg;Wg=Tg}else{he=k[F>>2]|0;Ug=he;Vg=he;Wg=ia+(0-Sa)|0}Sa=Vg>>>0>la>>>0?la:Vg;k[F>>2]=Ug-Sa;he=Vg>>>0>la>>>0?la:Vg;fe=Sa;ke=Wg;Da=ia;while(1){i[Da>>0]=i[ke>>0]|0;fe=fe+-1|0;if(!fe)break;else{ke=ke+1|0;Da=Da+1|0}}Da=la-Sa|0;ke=ia+he|0;if(!(k[F>>2]|0)){k[f>>2]=20;Ea=cd;Fa=dd;Ga=ed;Ha=Da;Ia=fd;Ja=n;Ka=ke;La=gd}else{Ea=cd;Fa=dd;Ga=ed;Ha=Da;Ia=fd;Ja=n;Ka=ke;La=gd}}while(0);ia=Ka;h=k[f>>2]|0;p=Ea;ja=Fa;ka=Ga;la=Ha;ma=Ia;n=Ja;q=La}if((Ca|0)==122){k[g>>2]=xd;k[o>>2]=Bd;k[a>>2]=Cd;k[s>>2]=zd;k[u>>2]=Ad;k[v>>2]=yd;e=2;r=c;return e|0}else if((Ca|0)==133){na=Zd;oa=be;pa=_d+-3|0;qa=$d;ra=ae>>>3;sa=ce;ta=de;ua=ee}else if((Ca|0)==280){k[f>>2]=28;na=Kd;oa=Od;pa=Ld;qa=Md;ra=Nd;sa=Pd;ta=Qd;ua=1}else if((Ca|0)==281){na=va;oa=za;pa=wa;qa=xa;ra=ya;sa=Aa;ta=Ba;ua=-3}else if((Ca|0)==295){e=-2;r=c;return e|0}else if((Ca|0)==296){r=c;return e|0}k[g>>2]=na;k[o>>2]=oa;k[a>>2]=sa;k[s>>2]=qa;k[u>>2]=ra;k[v>>2]=pa;if(!(k[W>>2]|0))if(((ta|0)!=(oa|0)?(W=k[f>>2]|0,W>>>0<29):0)?(b|0)!=4|W>>>0<26:0)Ca=286;else{Xg=qa;Yg=oa}else Ca=286;do if((Ca|0)==286){if(!(Jj(a,na,ta-oa|0)|0)){Xg=k[s>>2]|0;Yg=k[o>>2]|0;break}k[f>>2]=30;e=-4;r=c;return e|0}while(0);o=ta-Yg|0;s=a+8|0;k[s>>2]=t-Xg+(k[s>>2]|0);k[X>>2]=(k[X>>2]|0)+o;k[Y>>2]=(k[Y>>2]|0)+o;if((ta|0)!=(Yg|0)&(k[w>>2]|0)!=0){w=k[x>>2]|0;Y=(k[g>>2]|0)+(0-o)|0;if(!(k[z>>2]|0))Zg=Wj(w,Y,o)|0;else Zg=Xj(w,Y,o)|0;k[x>>2]=Zg;k[E>>2]=Zg}Zg=k[f>>2]|0;k[a+44>>2]=((k[I>>2]|0)!=0?64:0)+(k[v>>2]|0)+((Zg|0)==11?128:0)+((Zg|0)==19|(Zg|0)==14?256:0);e=(ua|0)==0&((b|0)==4|(t|0)==(Xg|0)&(ta|0)==(Yg|0))?-5:ua;r=c;return e|0}function Hj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!a){b=-2;return b|0}c=a+28|0;d=k[c>>2]|0;if(!d){b=-2;return b|0}e=a+36|0;f=k[e>>2]|0;if(!f){b=-2;return b|0}g=k[d+52>>2]|0;h=a+40|0;if(!g){i=f;j=d}else{rb[f&31](k[h>>2]|0,g);i=k[e>>2]|0;j=k[c>>2]|0}rb[i&31](k[h>>2]|0,j);k[c>>2]=0;b=0;return b|0}function Ij(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;b=r;r=r+16|0;c=b;if(!a){d=-2;r=b;return d|0}e=k[a+28>>2]|0;if(!e){d=-2;r=b;return d|0}f=a+4|0;g=k[f>>2]|0;if((g|0)==0?(k[e+60>>2]|0)>>>0<8:0){d=-5;r=b;return d|0}if((k[e>>2]|0)==31){h=e+104|0;j=h;l=g;m=k[h>>2]|0}else{k[e>>2]=31;h=e+60|0;g=k[h>>2]|0;n=e+56|0;o=k[n>>2]<<(g&7);k[n>>2]=o;p=g&-8;k[h>>2]=p;if(p>>>0>7){g=7-p|0;q=(p+(g>>>0>4294967288?g:-8)|0)>>>3;g=q<<3;s=q+1|0;q=o;o=0;while(1){i[c+o>>0]=q;o=o+1|0;t=q>>>8;if((o|0)==(s|0)){u=t;break}else q=t}k[n>>2]=u;k[h>>2]=p+-8-g;g=e+104|0;k[g>>2]=0;p=0;h=0;while(1){u=i[c+h>>0]|0;if((u&255|0)==((p>>>0<2?0:255)|0))v=p+1|0;else v=u<<24>>24==0?4-p|0:0;h=h+1|0;if(!(h>>>0<s>>>0&v>>>0<4)){w=g;x=v;break}else p=v}}else{v=e+104|0;k[v>>2]=0;w=v;x=0}k[w>>2]=x;j=w;l=k[f>>2]|0;m=x}x=k[a>>2]|0;if((l|0)!=0&m>>>0<4){w=m;v=0;while(1){p=i[x+v>>0]|0;if((p&255|0)==((w>>>0<2?0:255)|0))y=w+1|0;else y=p<<24>>24==0?4-w|0:0;p=v+1|0;if(p>>>0<l>>>0&y>>>0<4){w=y;v=p}else{z=y;A=p;break}}}else{z=m;A=0}k[j>>2]=z;k[f>>2]=(k[f>>2]|0)-A;k[a>>2]=x+A;x=a+8|0;f=(k[x>>2]|0)+A|0;k[x>>2]=f;if((z|0)!=4){d=-3;r=b;return d|0}z=a+20|0;A=k[z>>2]|0;k[e+40>>2]=0;k[e+44>>2]=0;k[e+48>>2]=0;k[e+28>>2]=0;k[z>>2]=0;k[x>>2]=0;k[a+24>>2]=0;j=k[e+8>>2]|0;if(j)k[a+48>>2]=j&1;k[e+4>>2]=0;k[e+12>>2]=0;k[e+20>>2]=32768;k[e+32>>2]=0;k[e+56>>2]=0;k[e+60>>2]=0;j=e+1328|0;k[e+108>>2]=j;k[e+80>>2]=j;k[e+76>>2]=j;k[e+7104>>2]=1;k[e+7108>>2]=-1;k[x>>2]=f;k[z>>2]=A;k[e>>2]=11;d=0;r=b;return d|0}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;d=k[a+28>>2]|0;e=d+52|0;f=k[e>>2]|0;if(!f){g=nb[k[a+32>>2]&63](k[a+40>>2]|0,1<<k[d+36>>2],1)|0;k[e>>2]=g;if(!g){h=1;return h|0}else i=g}else i=f;f=d+40|0;g=k[f>>2]|0;if(!g){a=1<<k[d+36>>2];k[f>>2]=a;k[d+48>>2]=0;k[d+44>>2]=0;j=a}else j=g;if(j>>>0<=c>>>0){wr(i|0,b+(0-j)|0,j|0)|0;k[d+48>>2]=0;k[d+44>>2]=k[f>>2];h=0;return h|0}g=d+48|0;a=k[g>>2]|0;l=j-a|0;j=l>>>0>c>>>0?c:l;wr(i+a|0,b+(0-c)|0,j|0)|0;a=c-j|0;if((j|0)!=(c|0)){wr(k[e>>2]|0,b+(0-a)|0,a|0)|0;k[g>>2]=a;k[d+44>>2]=k[f>>2];h=0;return h|0}a=(k[g>>2]|0)+c|0;b=k[f>>2]|0;k[g>>2]=(a|0)==(b|0)?0:a;a=d+44|0;d=k[a>>2]|0;if(d>>>0>=b>>>0){h=0;return h|0}k[a>>2]=d+c;h=0;return h|0}function Kj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;g=r;r=r+64|0;h=g+32|0;l=g;n=h;o=n+32|0;do{j[n>>1]=0;n=n+2|0}while((n|0)<(o|0));n=(c|0)==0;if(!n){o=0;do{p=h+(m[b+(o<<1)>>1]<<1)|0;j[p>>1]=(j[p>>1]|0)+1<<16>>16;o=o+1|0}while((o|0)!=(c|0));o=j[h+30>>1]|0;p=k[e>>2]|0;if(!(o<<16>>16)){q=p;s=5}else{t=p;u=o;v=15;s=6}}else{q=k[e>>2]|0;s=5}do if((s|0)==5)if(!(j[h+28>>1]|0))if(!(j[h+26>>1]|0))if(!(j[h+24>>1]|0))if(!(j[h+22>>1]|0))if(!(j[h+20>>1]|0))if(!(j[h+18>>1]|0))if(!(j[h+16>>1]|0))if(!(j[h+14>>1]|0))if(!(j[h+12>>1]|0))if(!(j[h+10>>1]|0))if(!(j[h+8>>1]|0))if(!(j[h+6>>1]|0))if(!(j[h+4>>1]|0)){if(j[h+2>>1]|0){w=0;x=q>>>0>1?1:q;y=1;z=1;break}o=k[d>>2]|0;k[d>>2]=o+4;i[o>>0]=64;i[o+1>>0]=1;j[o+2>>1]=0;o=k[d>>2]|0;k[d>>2]=o+4;i[o>>0]=64;i[o+1>>0]=1;j[o+2>>1]=0;k[e>>2]=1;A=0;r=g;return A|0}else{t=q;u=0;v=2;s=6}else{t=q;u=0;v=3;s=6}else{t=q;u=0;v=4;s=6}else{t=q;u=0;v=5;s=6}else{t=q;u=0;v=6;s=6}else{t=q;u=0;v=7;s=6}else{t=q;u=0;v=8;s=6}else{t=q;u=0;v=9;s=6}else{t=q;u=0;v=10;s=6}else{t=q;u=0;v=11;s=6}else{t=q;u=0;v=12;s=6}else{t=q;u=0;v=13;s=6}else{t=q;u=0;v=14;s=6}while(0);a:do if((s|0)==6){q=t>>>0>v>>>0?v:t;o=1;while(1){if(j[h+(o<<1)>>1]|0){w=u;x=q;y=v;z=o;break a}p=o+1|0;if(p>>>0<v>>>0)o=p;else{w=u;x=q;y=v;z=p;break}}}while(0);v=x>>>0<z>>>0?z:x;x=j[h+2>>1]|0;u=2-(x&65535)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+4>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+6>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+8>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+10>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+12>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+14>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+16>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+18>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+20>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+22>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+24>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(m[h+26>>1]|0)|0;if((u|0)<0){A=-1;r=g;return A|0}t=(u<<1)-(m[h+28>>1]|0)|0;if((t|0)<0){A=-1;r=g;return A|0}u=(t<<1)-(w&65535)|0;if((u|0)<0){A=-1;r=g;return A|0}if((u|0)>0?(a|0)==0|(y|0)!=1:0){A=-1;r=g;return A|0}j[l+2>>1]=0;j[l+4>>1]=x;u=(m[h+4>>1]|0)+(x&65535)|0;j[l+6>>1]=u;x=(m[h+6>>1]|0)+(u&65535)|0;j[l+8>>1]=x;u=(m[h+8>>1]|0)+(x&65535)|0;j[l+10>>1]=u;x=(m[h+10>>1]|0)+(u&65535)|0;j[l+12>>1]=x;u=(m[h+12>>1]|0)+(x&65535)|0;j[l+14>>1]=u;x=(m[h+14>>1]|0)+(u&65535)|0;j[l+16>>1]=x;u=(m[h+16>>1]|0)+(x&65535)|0;j[l+18>>1]=u;x=(m[h+18>>1]|0)+(u&65535)|0;j[l+20>>1]=x;u=(m[h+20>>1]|0)+(x&65535)|0;j[l+22>>1]=u;x=(m[h+22>>1]|0)+(u&65535)|0;j[l+24>>1]=x;u=(m[h+24>>1]|0)+(x&65535)|0;j[l+26>>1]=u;x=(m[h+26>>1]|0)+(u&65535)|0;j[l+28>>1]=x;j[l+30>>1]=(m[h+28>>1]|0)+(x&65535);if(!n){n=0;do{x=j[b+(n<<1)>>1]|0;if(x<<16>>16){u=l+((x&65535)<<1)|0;x=j[u>>1]|0;j[u>>1]=x+1<<16>>16;j[f+((x&65535)<<1)>>1]=n}n=n+1|0}while((n|0)!=(c|0))}switch(a|0){case 0:{B=0;C=0;D=f;E=19;F=f;break}case 1:{if(v>>>0>9){A=1;r=g;return A|0}else{B=0;C=1;D=126834;E=256;F=126960}break}default:{c=(a|0)==2;if(c&v>>>0>9){A=1;r=g;return A|0}else{B=c;C=0;D=127284;E=-1;F=127410}}}c=1<<v;a=c+-1|0;n=v&255;l=v;x=0;u=0;w=z;z=-1;t=k[d>>2]|0;q=0;o=c;b:while(1){c=1<<l;p=u;G=w;H=q;while(1){I=G-x|0;J=I&255;K=j[f+(H<<1)>>1]|0;L=K&65535;do if((L|0)<(E|0)){M=0;N=K}else{if((L|0)<=(E|0)){M=96;N=0;break}M=j[F+(L<<1)>>1]&255;N=j[D+(L<<1)>>1]|0}while(0);L=1<<I;K=p>>>x;O=c;do{P=O;O=O-L|0;Q=O+K|0;i[t+(Q<<2)>>0]=M;i[t+(Q<<2)+1>>0]=J;j[t+(Q<<2)+2>>1]=N}while((P|0)!=(L|0));L=1<<G+-1;while(1)if(!(L&p)){R=L;break}else L=L>>>1;if(!R)S=0;else S=(R+-1&p)+R|0;L=H+1|0;K=h+(G<<1)|0;O=(j[K>>1]|0)+-1<<16>>16;j[K>>1]=O;if(!(O<<16>>16)){if((G|0)==(y|0)){T=J;U=S;V=t;W=o;break b}X=m[b+(m[f+(L<<1)>>1]<<1)>>1]|0}else X=G;if(X>>>0<=v>>>0){p=S;G=X;H=L;continue}O=S&a;if((O|0)==(z|0)){p=S;G=X;H=L}else{Y=L;Z=O;_=S;$=X;break}}H=(x|0)==0?v:x;G=t+(c<<2)|0;p=$-H|0;c:do if($>>>0<y>>>0){O=$;L=p;K=1<<p;while(1){I=K-(m[h+(O<<1)>>1]|0)|0;if((I|0)<1){aa=L;break c}P=L+1|0;O=P+H|0;if(O>>>0>=y>>>0){aa=P;break}else{L=P;K=I<<1}}}else aa=p;while(0);p=(1<<aa)+o|0;if(C&p>>>0>852|B&p>>>0>592){A=1;s=44;break}c=k[d>>2]|0;i[c+(Z<<2)>>0]=aa;i[c+(Z<<2)+1>>0]=n;j[c+(Z<<2)+2>>1]=(G-c|0)>>>2;l=aa;x=H;u=_;w=$;z=Z;t=G;q=Y;o=p}if((s|0)==44){r=g;return A|0}if(U){i[V+(U<<2)>>0]=64;i[V+(U<<2)+1>>0]=T;j[V+(U<<2)+2>>1]=0}k[d>>2]=(k[d>>2]|0)+(W<<2);k[e>>2]=v;A=0;r=g;return A|0}function Lj(a){a=a|0;k[a+2840>>2]=a+148;k[a+2848>>2]=110108;k[a+2852>>2]=a+2440;k[a+2860>>2]=110128;k[a+2864>>2]=a+2684;k[a+2872>>2]=110148;j[a+5816>>1]=0;k[a+5820>>2]=0;Qj(a);return}function Mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=a+5820|0;f=k[e>>2]|0;g=d&65535;d=a+5816|0;h=m[d>>1]|0|g<<f;j[d>>1]=h;if((f|0)>13){l=a+20|0;n=k[l>>2]|0;k[l>>2]=n+1;o=a+8|0;i[(k[o>>2]|0)+n>>0]=h;n=(m[d>>1]|0)>>>8&255;p=k[l>>2]|0;k[l>>2]=p+1;i[(k[o>>2]|0)+p>>0]=n;n=k[e>>2]|0;p=g>>>(16-n|0);j[d>>1]=p;q=p;r=n+-13|0}else{q=h;r=f+3|0}f=q&255;k[e>>2]=r;do if((r|0)<=8){q=a+20|0;if((r|0)>0){h=k[q>>2]|0;k[q>>2]=h+1;n=a+8|0;i[(k[n>>2]|0)+h>>0]=f;s=q;t=n;break}else{s=q;t=a+8|0;break}}else{q=a+20|0;n=k[q>>2]|0;k[q>>2]=n+1;h=a+8|0;i[(k[h>>2]|0)+n>>0]=f;n=(m[d>>1]|0)>>>8&255;p=k[q>>2]|0;k[q>>2]=p+1;i[(k[h>>2]|0)+p>>0]=n;s=q;t=h}while(0);j[d>>1]=0;k[e>>2]=0;e=k[s>>2]|0;k[s>>2]=e+1;i[(k[t>>2]|0)+e>>0]=c;e=k[s>>2]|0;k[s>>2]=e+1;i[(k[t>>2]|0)+e>>0]=c>>>8;e=c&65535^65535;d=k[s>>2]|0;k[s>>2]=d+1;i[(k[t>>2]|0)+d>>0]=e;d=k[s>>2]|0;k[s>>2]=d+1;i[(k[t>>2]|0)+d>>0]=e>>>8;if(!c)return;else{u=c;v=b}while(1){u=u+-1|0;b=i[v>>0]|0;c=k[s>>2]|0;k[s>>2]=c+1;i[(k[t>>2]|0)+c>>0]=b;if(!u)break;else v=v+1|0}return}function Nj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+5820|0;c=k[b>>2]|0;if((c|0)==16){d=a+5816|0;e=j[d>>1]&255;f=a+20|0;g=k[f>>2]|0;k[f>>2]=g+1;h=a+8|0;i[(k[h>>2]|0)+g>>0]=e;e=(m[d>>1]|0)>>>8&255;g=k[f>>2]|0;k[f>>2]=g+1;i[(k[h>>2]|0)+g>>0]=e;j[d>>1]=0;k[b>>2]=0;return}if((c|0)<=7)return;c=a+5816|0;d=j[c>>1]&255;e=a+20|0;g=k[e>>2]|0;k[e>>2]=g+1;i[(k[a+8>>2]|0)+g>>0]=d;j[c>>1]=(m[c>>1]|0)>>>8;k[b>>2]=(k[b>>2]|0)+-8;return}function Oj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0;b=a+5820|0;c=k[b>>2]|0;d=a+5816|0;e=m[d>>1]|0|2<<c;j[d>>1]=e;if((c|0)>13){f=a+20|0;g=k[f>>2]|0;k[f>>2]=g+1;h=a+8|0;i[(k[h>>2]|0)+g>>0]=e;g=(m[d>>1]|0)>>>8&255;l=k[f>>2]|0;k[f>>2]=l+1;i[(k[h>>2]|0)+l>>0]=g;g=k[b>>2]|0;l=2>>>(16-g|0);j[d>>1]=l;n=l;o=g+-13|0}else{n=e;o=c+3|0}c=n&255;k[b>>2]=o;if((o|0)>9){n=a+20|0;e=k[n>>2]|0;k[n>>2]=e+1;g=a+8|0;i[(k[g>>2]|0)+e>>0]=c;e=(m[d>>1]|0)>>>8&255;l=k[n>>2]|0;k[n>>2]=l+1;i[(k[g>>2]|0)+l>>0]=e;j[d>>1]=0;p=0;q=(k[b>>2]|0)+-9|0}else{p=c;q=o+7|0}k[b>>2]=q;if((q|0)==16){o=a+20|0;c=k[o>>2]|0;k[o>>2]=c+1;e=a+8|0;i[(k[e>>2]|0)+c>>0]=p;c=(m[d>>1]|0)>>>8&255;l=k[o>>2]|0;k[o>>2]=l+1;i[(k[e>>2]|0)+l>>0]=c;j[d>>1]=0;k[b>>2]=0;return}if((q|0)<=7)return;q=a+20|0;c=k[q>>2]|0;k[q>>2]=c+1;i[(k[a+8>>2]|0)+c>>0]=p;j[d>>1]=(m[d>>1]|0)>>>8;k[b>>2]=(k[b>>2]|0)+-8;return}function Pj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;if((k[a+132>>2]|0)>0){e=(k[a>>2]|0)+44|0;if((k[e>>2]|0)==2){f=-201342849;g=0;while(1){if((f&1|0)!=0?(j[a+148+(g<<2)>>1]|0)!=0:0){h=0;break}g=g+1|0;if((g|0)>=32){n=6;break}else f=f>>>1}a:do if((n|0)==6)if(((j[a+184>>1]|0)==0?(j[a+188>>1]|0)==0:0)?(j[a+200>>1]|0)==0:0){f=32;while(1){if(j[a+148+(f<<2)>>1]|0){h=1;break a}f=f+1|0;if((f|0)>=256){h=0;break}}}else h=1;while(0);k[e>>2]=h}Rj(a,a+2840|0);Rj(a,a+2852|0);h=k[a+2844>>2]|0;e=j[a+150>>1]|0;n=e<<16>>16==0;j[a+148+(h+1<<2)+2>>1]=-1;f=a+2752|0;g=a+2756|0;o=a+2748|0;p=n?138:7;q=n?3:4;n=0;r=e&65535;e=-1;b:while(1){s=0;t=n;while(1){if((t|0)>(h|0))break b;u=t+1|0;v=j[a+148+(u<<2)+2>>1]|0;w=v&65535;x=s+1|0;y=(r|0)==(w|0);if((x|0)<(p|0)&y){s=x;t=u}else{z=u;A=v;B=w;C=x;D=y;break}}do if((C|0)>=(q|0))if(!r)if((C|0)<11){j[f>>1]=(j[f>>1]|0)+1<<16>>16;break}else{j[g>>1]=(j[g>>1]|0)+1<<16>>16;break}else{if((r|0)!=(e|0)){t=a+2684+(r<<2)|0;j[t>>1]=(j[t>>1]|0)+1<<16>>16}j[o>>1]=(j[o>>1]|0)+1<<16>>16;break}else{t=a+2684+(r<<2)|0;j[t>>1]=(m[t>>1]|0)+C}while(0);t=A<<16>>16==0;s=r;p=t?138:D?6:7;q=t|D?3:4;n=z;r=B;e=s}e=k[a+2856>>2]|0;B=j[a+2442>>1]|0;r=B<<16>>16==0;j[a+2440+(e+1<<2)+2>>1]=-1;z=r?138:7;n=r?3:4;r=0;D=B&65535;B=-1;c:while(1){q=0;p=r;while(1){if((p|0)>(e|0))break c;A=p+1|0;C=j[a+2440+(A<<2)+2>>1]|0;h=C&65535;s=q+1|0;t=(D|0)==(h|0);if((s|0)<(z|0)&t){q=s;p=A}else{E=A;F=C;G=h;H=s;I=t;break}}do if((H|0)>=(n|0))if(!D)if((H|0)<11){j[f>>1]=(j[f>>1]|0)+1<<16>>16;break}else{j[g>>1]=(j[g>>1]|0)+1<<16>>16;break}else{if((D|0)!=(B|0)){p=a+2684+(D<<2)|0;j[p>>1]=(j[p>>1]|0)+1<<16>>16}j[o>>1]=(j[o>>1]|0)+1<<16>>16;break}else{p=a+2684+(D<<2)|0;j[p>>1]=(m[p>>1]|0)+H}while(0);p=F<<16>>16==0;q=D;z=p?138:I?6:7;n=p|I?3:4;r=E;D=G;B=q}Rj(a,a+2864|0);if(!(j[a+2746>>1]|0))if(!(j[a+2690>>1]|0))if(!(j[a+2742>>1]|0))if(!(j[a+2694>>1]|0))if(!(j[a+2738>>1]|0))if(!(j[a+2698>>1]|0))if(!(j[a+2734>>1]|0))if(!(j[a+2702>>1]|0))if(!(j[a+2730>>1]|0))if(!(j[a+2706>>1]|0))if(!(j[a+2726>>1]|0))if(!(j[a+2710>>1]|0))if(!(j[a+2722>>1]|0))if(!(j[a+2714>>1]|0))if(!(j[a+2718>>1]|0))J=(j[a+2686>>1]|0)==0?2:3;else J=4;else J=5;else J=6;else J=7;else J=8;else J=9;else J=10;else J=11;else J=12;else J=13;else J=14;else J=15;else J=16;else J=17;else J=18;B=a+5800|0;G=(J*3|0)+17+(k[B>>2]|0)|0;k[B>>2]=G;B=(G+10|0)>>>3;G=((k[a+5804>>2]|0)+10|0)>>>3;K=J;L=G>>>0>B>>>0?B:G;M=G}else{G=c+5|0;K=0;L=G;M=G}do if((b|0)!=0&(c+4|0)>>>0<=L>>>0)Mj(a,b,c,d);else{G=a+5820|0;B=k[G>>2]|0;J=(B|0)>13;if((M|0)==(L|0)?1:(k[a+136>>2]|0)==4){D=d+2&65535;E=a+5816|0;r=m[E>>1]|D<<B;j[E>>1]=r;if(J){I=a+20|0;n=k[I>>2]|0;k[I>>2]=n+1;z=a+8|0;i[(k[z>>2]|0)+n>>0]=r;r=(m[E>>1]|0)>>>8&255;n=k[I>>2]|0;k[I>>2]=n+1;i[(k[z>>2]|0)+n>>0]=r;r=k[G>>2]|0;j[E>>1]=D>>>(16-r|0);N=r+-13|0}else N=B+3|0;k[G>>2]=N;Sj(a,127536,128688);break}r=d+4&65535;D=a+5816|0;E=m[D>>1]|r<<B;j[D>>1]=E;if(J){J=a+20|0;n=k[J>>2]|0;k[J>>2]=n+1;z=a+8|0;i[(k[z>>2]|0)+n>>0]=E;n=(m[D>>1]|0)>>>8&255;I=k[J>>2]|0;k[J>>2]=I+1;i[(k[z>>2]|0)+I>>0]=n;n=k[G>>2]|0;I=r>>>(16-n|0);j[D>>1]=I;O=I;P=n+-13|0}else{O=E;P=B+3|0}k[G>>2]=P;B=k[a+2844>>2]|0;E=k[a+2856>>2]|0;n=B+65280&65535;I=O&65535|n<<P;j[D>>1]=I;if((P|0)>11){r=a+20|0;z=k[r>>2]|0;k[r>>2]=z+1;J=a+8|0;i[(k[J>>2]|0)+z>>0]=I;z=(m[D>>1]|0)>>>8&255;F=k[r>>2]|0;k[r>>2]=F+1;i[(k[J>>2]|0)+F>>0]=z;z=k[G>>2]|0;F=n>>>(16-z|0);j[D>>1]=F;Q=z+-11|0;R=F}else{Q=P+5|0;R=I}k[G>>2]=Q;I=E&65535;F=I<<Q|R&65535;j[D>>1]=F;if((Q|0)>11){z=a+20|0;n=k[z>>2]|0;k[z>>2]=n+1;J=a+8|0;i[(k[J>>2]|0)+n>>0]=F;n=(m[D>>1]|0)>>>8&255;r=k[z>>2]|0;k[z>>2]=r+1;i[(k[J>>2]|0)+r>>0]=n;n=k[G>>2]|0;r=I>>>(16-n|0);j[D>>1]=r;S=n+-11|0;T=r}else{S=Q+5|0;T=F}k[G>>2]=S;F=K+65533&65535;r=F<<S|T&65535;j[D>>1]=r;if((S|0)>12){n=a+20|0;I=k[n>>2]|0;k[n>>2]=I+1;J=a+8|0;i[(k[J>>2]|0)+I>>0]=r;I=(m[D>>1]|0)>>>8&255;z=k[n>>2]|0;k[n>>2]=z+1;i[(k[J>>2]|0)+z>>0]=I;I=k[G>>2]|0;z=F>>>(16-I|0);j[D>>1]=z;U=J;V=n;W=z;X=I+-12|0}else{U=a+8|0;V=a+20|0;W=r;X=S+4|0}k[G>>2]=X;r=X;I=W;z=0;while(1){n=m[a+2684+(l[155641+z>>0]<<2)+2>>1]|0;J=n<<r|I&65535;j[D>>1]=J;if((r|0)>13){F=k[V>>2]|0;k[V>>2]=F+1;i[(k[U>>2]|0)+F>>0]=J;F=(m[D>>1]|0)>>>8&255;H=k[V>>2]|0;k[V>>2]=H+1;i[(k[U>>2]|0)+H>>0]=F;F=k[G>>2]|0;H=n>>>(16-F|0);j[D>>1]=H;Y=H;Z=F+-13|0}else{Y=J;Z=r+3|0}k[G>>2]=Z;if((z|0)==(K|0))break;else{r=Z;I=Y;z=z+1|0}}z=a+148|0;Tj(a,z,B);I=a+2440|0;Tj(a,I,E);Sj(a,z,I)}while(0);Qj(a);if(!d)return;d=a+5820|0;Y=k[d>>2]|0;if((Y|0)<=8){Z=a+5816|0;if((Y|0)>0){Y=j[Z>>1]&255;K=a+20|0;U=k[K>>2]|0;k[K>>2]=U+1;i[(k[a+8>>2]|0)+U>>0]=Y;_=Z}else _=Z}else{Z=a+5816|0;Y=j[Z>>1]&255;U=a+20|0;K=k[U>>2]|0;k[U>>2]=K+1;V=a+8|0;i[(k[V>>2]|0)+K>>0]=Y;Y=(m[Z>>1]|0)>>>8&255;K=k[U>>2]|0;k[U>>2]=K+1;i[(k[V>>2]|0)+K>>0]=Y;_=Z}j[_>>1]=0;k[d>>2]=0;return}function Qj(a){a=a|0;var b=0;b=0;do{j[a+148+(b<<2)>>1]=0;b=b+1|0}while((b|0)!=286);j[a+2440>>1]=0;j[a+2444>>1]=0;j[a+2448>>1]=0;j[a+2452>>1]=0;j[a+2456>>1]=0;j[a+2460>>1]=0;j[a+2464>>1]=0;j[a+2468>>1]=0;j[a+2472>>1]=0;j[a+2476>>1]=0;j[a+2480>>1]=0;j[a+2484>>1]=0;j[a+2488>>1]=0;j[a+2492>>1]=0;j[a+2496>>1]=0;j[a+2500>>1]=0;j[a+2504>>1]=0;j[a+2508>>1]=0;j[a+2512>>1]=0;j[a+2516>>1]=0;j[a+2520>>1]=0;j[a+2524>>1]=0;j[a+2528>>1]=0;j[a+2532>>1]=0;j[a+2536>>1]=0;j[a+2540>>1]=0;j[a+2544>>1]=0;j[a+2548>>1]=0;j[a+2552>>1]=0;j[a+2556>>1]=0;j[a+2684>>1]=0;j[a+2688>>1]=0;j[a+2692>>1]=0;j[a+2696>>1]=0;j[a+2700>>1]=0;j[a+2704>>1]=0;j[a+2708>>1]=0;j[a+2712>>1]=0;j[a+2716>>1]=0;j[a+2720>>1]=0;j[a+2724>>1]=0;j[a+2728>>1]=0;j[a+2732>>1]=0;j[a+2736>>1]=0;j[a+2740>>1]=0;j[a+2744>>1]=0;j[a+2748>>1]=0;j[a+2752>>1]=0;j[a+2756>>1]=0;j[a+1172>>1]=1;k[a+5804>>2]=0;k[a+5800>>2]=0;k[a+5808>>2]=0;k[a+5792>>2]=0;return}function Rj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;c=r;r=r+32|0;d=c;e=k[b>>2]|0;f=b+8|0;g=k[f>>2]|0;h=k[g>>2]|0;n=k[g+12>>2]|0;g=a+5200|0;k[g>>2]=0;o=a+5204|0;k[o>>2]=573;if((n|0)>0){p=-1;q=0;while(1){if(!(j[e+(q<<2)>>1]|0)){j[e+(q<<2)+2>>1]=0;s=p}else{t=(k[g>>2]|0)+1|0;k[g>>2]=t;k[a+2908+(t<<2)>>2]=q;i[a+5208+q>>0]=0;s=q}q=q+1|0;if((q|0)==(n|0)){u=s;break}else p=s}s=k[g>>2]|0;if((s|0)<2){v=s;w=u;x=3}else{y=s;z=u}}else{v=0;w=-1;x=3}if((x|0)==3){x=a+5800|0;u=a+5804|0;if(!h){s=v;p=w;while(1){q=(p|0)<2;t=p+1|0;A=q?t:p;B=q?t:0;t=s+1|0;k[g>>2]=t;k[a+2908+(t<<2)>>2]=B;j[e+(B<<2)>>1]=1;i[a+5208+B>>0]=0;k[x>>2]=(k[x>>2]|0)+-1;B=k[g>>2]|0;if((B|0)<2){s=B;p=A}else{y=B;z=A;break}}}else{p=v;v=w;while(1){w=(v|0)<2;s=v+1|0;A=w?s:v;B=w?s:0;s=p+1|0;k[g>>2]=s;k[a+2908+(s<<2)>>2]=B;j[e+(B<<2)>>1]=1;i[a+5208+B>>0]=0;k[x>>2]=(k[x>>2]|0)+-1;k[u>>2]=(k[u>>2]|0)-(m[h+(B<<2)+2>>1]|0);B=k[g>>2]|0;if((B|0)<2){p=B;v=A}else{y=B;z=A;break}}}}v=b+4|0;k[v>>2]=z;p=y;h=(y|0)/2|0;while(1){y=k[a+2908+(h<<2)>>2]|0;u=a+5208+y|0;x=h<<1;a:do if((x|0)>(p|0))C=h;else{A=e+(y<<2)|0;B=h;s=p;w=x;while(1){do if((w|0)<(s|0)){t=w|1;q=k[a+2908+(t<<2)>>2]|0;D=j[e+(q<<2)>>1]|0;E=k[a+2908+(w<<2)>>2]|0;F=j[e+(E<<2)>>1]|0;if((D&65535)>=(F&65535)){if(D<<16>>16!=F<<16>>16){G=w;break}if((l[a+5208+q>>0]|0)>(l[a+5208+E>>0]|0)){G=w;break}}G=t}else G=w;while(0);t=j[A>>1]|0;E=k[a+2908+(G<<2)>>2]|0;q=j[e+(E<<2)>>1]|0;if((t&65535)<(q&65535)){C=B;break a}if(t<<16>>16==q<<16>>16?(l[u>>0]|0)<=(l[a+5208+E>>0]|0):0){C=B;break a}k[a+2908+(B<<2)>>2]=E;w=G<<1;s=k[g>>2]|0;if((w|0)>(s|0)){C=G;break}else B=G}}while(0);k[a+2908+(C<<2)>>2]=y;if((h|0)<=1)break;p=k[g>>2]|0;h=h+-1|0}h=a+2912|0;p=k[g>>2]|0;C=n;do{n=k[h>>2]|0;G=p+-1|0;k[g>>2]=G;u=k[a+2908+(p<<2)>>2]|0;k[h>>2]=u;x=a+5208+u|0;b:do if((p|0)<3)H=1;else{B=e+(u<<2)|0;s=1;w=G;A=2;while(1){do if((A|0)<(w|0)){E=A|1;q=k[a+2908+(E<<2)>>2]|0;t=j[e+(q<<2)>>1]|0;F=k[a+2908+(A<<2)>>2]|0;D=j[e+(F<<2)>>1]|0;if((t&65535)>=(D&65535)){if(t<<16>>16!=D<<16>>16){I=A;break}if((l[a+5208+q>>0]|0)>(l[a+5208+F>>0]|0)){I=A;break}}I=E}else I=A;while(0);E=j[B>>1]|0;F=k[a+2908+(I<<2)>>2]|0;q=j[e+(F<<2)>>1]|0;if((E&65535)<(q&65535)){H=s;break b}if(E<<16>>16==q<<16>>16?(l[x>>0]|0)<=(l[a+5208+F>>0]|0):0){H=s;break b}k[a+2908+(s<<2)>>2]=F;A=I<<1;w=k[g>>2]|0;if((A|0)>(w|0)){H=I;break}else s=I}}while(0);k[a+2908+(H<<2)>>2]=u;x=k[h>>2]|0;G=(k[o>>2]|0)+-1|0;k[o>>2]=G;k[a+2908+(G<<2)>>2]=n;G=(k[o>>2]|0)+-1|0;k[o>>2]=G;k[a+2908+(G<<2)>>2]=x;G=e+(C<<2)|0;j[G>>1]=(m[e+(x<<2)>>1]|0)+(m[e+(n<<2)>>1]|0);y=i[a+5208+n>>0]|0;s=i[a+5208+x>>0]|0;w=a+5208+C|0;i[w>>0]=(((y&255)<(s&255)?s:y)&255)+1;y=C&65535;j[e+(x<<2)+2>>1]=y;j[e+(n<<2)+2>>1]=y;k[h>>2]=C;y=k[g>>2]|0;c:do if((y|0)<2)J=1;else{x=1;s=y;A=2;while(1){do if((A|0)<(s|0)){B=A|1;F=k[a+2908+(B<<2)>>2]|0;q=j[e+(F<<2)>>1]|0;E=k[a+2908+(A<<2)>>2]|0;D=j[e+(E<<2)>>1]|0;if((q&65535)>=(D&65535)){if(q<<16>>16!=D<<16>>16){K=A;break}if((l[a+5208+F>>0]|0)>(l[a+5208+E>>0]|0)){K=A;break}}K=B}else K=A;while(0);B=j[G>>1]|0;E=k[a+2908+(K<<2)>>2]|0;F=j[e+(E<<2)>>1]|0;if((B&65535)<(F&65535)){J=x;break c}if(B<<16>>16==F<<16>>16?(l[w>>0]|0)<=(l[a+5208+E>>0]|0):0){J=x;break c}k[a+2908+(x<<2)>>2]=E;A=K<<1;s=k[g>>2]|0;if((A|0)>(s|0)){J=K;break}else x=K}}while(0);k[a+2908+(J<<2)>>2]=C;C=C+1|0;p=k[g>>2]|0}while((p|0)>1);p=k[h>>2]|0;h=(k[o>>2]|0)+-1|0;k[o>>2]=h;k[a+2908+(h<<2)>>2]=p;p=k[b>>2]|0;b=k[v>>2]|0;v=k[f>>2]|0;f=k[v>>2]|0;h=k[v+4>>2]|0;g=k[v+8>>2]|0;C=k[v+16>>2]|0;v=a+2876|0;J=v+32|0;do{j[v>>1]=0;v=v+2|0}while((v|0)<(J|0));v=k[o>>2]|0;j[p+(k[a+2908+(v<<2)>>2]<<2)+2>>1]=0;o=v+1|0;d:do if((o|0)<573){v=a+5800|0;J=a+5804|0;if(!f){K=o;H=0;while(1){I=k[a+2908+(K<<2)>>2]|0;w=p+(I<<2)+2|0;G=m[p+(m[w>>1]<<2)+2>>1]|0;y=(G|0)<(C|0);n=y?G+1|0:C;G=(y&1^1)+H|0;j[w>>1]=n;if((I|0)<=(b|0)){w=a+2876+(n<<1)|0;j[w>>1]=(j[w>>1]|0)+1<<16>>16;if((I|0)<(g|0))L=0;else L=k[h+(I-g<<2)>>2]|0;w=ha(m[p+(I<<2)>>1]|0,L+n|0)|0;k[v>>2]=w+(k[v>>2]|0)}K=K+1|0;if((K|0)==573){M=G;break}else H=G}}else{H=o;K=0;while(1){G=k[a+2908+(H<<2)>>2]|0;w=p+(G<<2)+2|0;n=m[p+(m[w>>1]<<2)+2>>1]|0;I=(n|0)<(C|0);y=I?n+1|0:C;n=(I&1^1)+K|0;j[w>>1]=y;if((G|0)<=(b|0)){w=a+2876+(y<<1)|0;j[w>>1]=(j[w>>1]|0)+1<<16>>16;if((G|0)<(g|0))N=0;else N=k[h+(G-g<<2)>>2]|0;w=m[p+(G<<2)>>1]|0;I=ha(w,N+y|0)|0;k[v>>2]=I+(k[v>>2]|0);I=ha((m[f+(G<<2)+2>>1]|0)+N|0,w)|0;k[J>>2]=I+(k[J>>2]|0)}H=H+1|0;if((H|0)==573){M=n;break}else K=n}}if(M){K=a+2876+(C<<1)|0;H=M;while(1){J=C;while(1){n=J+-1|0;I=a+2876+(n<<1)|0;w=j[I>>1]|0;if(!(w<<16>>16))J=n;else{O=I;P=w;Q=J;break}}j[O>>1]=P+-1<<16>>16;J=a+2876+(Q<<1)|0;j[J>>1]=(m[J>>1]|0)+2;J=(j[K>>1]|0)+-1<<16>>16;j[K>>1]=J;if((H|0)>2)H=H+-2|0;else{R=J;break}}if(C){H=R;K=C;J=573;while(1){w=K&65535;if(!(H<<16>>16))S=J;else{I=J;n=H&65535;while(1){G=I;while(1){y=G+-1|0;u=k[a+2908+(y<<2)>>2]|0;if((u|0)>(b|0))G=y;else{T=y;U=u;break}}G=p+(U<<2)+2|0;u=m[G>>1]|0;if((K|0)!=(u|0)){y=ha(m[p+(U<<2)>>1]|0,K-u|0)|0;k[v>>2]=y+(k[v>>2]|0);j[G>>1]=w}n=n+-1|0;if(!n){S=T;break}else I=T}}I=K+-1|0;if(!I)break d;H=j[a+2876+(I<<1)>>1]|0;K=I;J=S}}}}while(0);S=1;T=0;do{T=(m[a+2876+(S+-1<<1)>>1]|0)+(T&65534)<<1;j[d+(S<<1)>>1]=T;S=S+1|0}while((S|0)!=16);if((z|0)<0){r=c;return}else V=0;while(1){S=j[e+(V<<2)+2>>1]|0;T=S&65535;if(S<<16>>16){S=d+(T<<1)|0;a=j[S>>1]|0;j[S>>1]=a+1<<16>>16;S=T;T=a&65535;a=0;while(1){U=a|T&1;if((S|0)>1){S=S+-1|0;T=T>>>1;a=U<<1}else{W=U;break}}j[e+(V<<2)>>1]=W}if((V|0)==(z|0))break;else V=V+1|0}r=c;return}function Sj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;d=a+5792|0;if(!(k[d>>2]|0)){e=a+5820|0;f=a+5816|0;g=f;h=e;n=k[e>>2]|0;o=j[f>>1]|0}else{f=a+5796|0;e=a+5784|0;p=a+5820|0;q=a+5816|0;r=a+20|0;s=a+8|0;t=0;do{u=j[(k[f>>2]|0)+(t<<1)>>1]|0;v=u&65535;w=l[(k[e>>2]|0)+t>>0]|0;t=t+1|0;do if(!(u<<16>>16)){x=m[b+(w<<2)+2>>1]|0;y=k[p>>2]|0;z=m[b+(w<<2)>>1]|0;A=m[q>>1]|0|z<<y;B=A&65535;j[q>>1]=B;if((y|0)>(16-x|0)){C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=A;A=(m[q>>1]|0)>>>8&255;C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=A;A=k[p>>2]|0;C=z>>>(16-A|0)&65535;j[q>>1]=C;z=x+-16+A|0;k[p>>2]=z;D=C;E=z;break}else{z=y+x|0;k[p>>2]=z;D=B;E=z;break}}else{z=l[155385+w>>0]|0;B=(z|256)+1|0;x=m[b+(B<<2)+2>>1]|0;y=k[p>>2]|0;C=m[b+(B<<2)>>1]|0;B=m[q>>1]|0|C<<y;A=B&65535;j[q>>1]=A;if((y|0)>(16-x|0)){F=k[r>>2]|0;k[r>>2]=F+1;i[(k[s>>2]|0)+F>>0]=B;B=(m[q>>1]|0)>>>8&255;F=k[r>>2]|0;k[r>>2]=F+1;i[(k[s>>2]|0)+F>>0]=B;B=k[p>>2]|0;F=C>>>(16-B|0)&65535;j[q>>1]=F;G=F;H=x+-16+B|0}else{G=A;H=y+x|0}k[p>>2]=H;x=k[110168+(z<<2)>>2]|0;do if((z+-8|0)>>>0<20){y=w-(k[110284+(z<<2)>>2]|0)&65535;A=y<<H|G&65535;B=A&65535;j[q>>1]=B;if((H|0)>(16-x|0)){F=k[r>>2]|0;k[r>>2]=F+1;i[(k[s>>2]|0)+F>>0]=A;A=(m[q>>1]|0)>>>8&255;F=k[r>>2]|0;k[r>>2]=F+1;i[(k[s>>2]|0)+F>>0]=A;A=k[p>>2]|0;F=y>>>(16-A|0)&65535;j[q>>1]=F;y=x+-16+A|0;k[p>>2]=y;I=y;J=F;break}else{F=H+x|0;k[p>>2]=F;I=F;J=B;break}}else{I=H;J=G}while(0);x=v+-1|0;z=l[154873+(x>>>0<256?x:(x>>>7)+256|0)>>0]|0;B=m[c+(z<<2)+2>>1]|0;F=m[c+(z<<2)>>1]|0;y=J&65535|F<<I;A=y&65535;j[q>>1]=A;if((I|0)>(16-B|0)){C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=y;y=(m[q>>1]|0)>>>8&255;C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=y;y=k[p>>2]|0;C=F>>>(16-y|0)&65535;j[q>>1]=C;K=B+-16+y|0;L=C}else{K=I+B|0;L=A}k[p>>2]=K;A=k[110400+(z<<2)>>2]|0;if((z+-4|0)>>>0<26){B=x-(k[110520+(z<<2)>>2]|0)&65535;z=B<<K|L&65535;x=z&65535;j[q>>1]=x;if((K|0)>(16-A|0)){C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=z;z=(m[q>>1]|0)>>>8&255;C=k[r>>2]|0;k[r>>2]=C+1;i[(k[s>>2]|0)+C>>0]=z;z=k[p>>2]|0;C=B>>>(16-z|0)&65535;j[q>>1]=C;B=A+-16+z|0;k[p>>2]=B;D=C;E=B;break}else{B=K+A|0;k[p>>2]=B;D=x;E=B;break}}else{D=L;E=K}}while(0)}while(t>>>0<(k[d>>2]|0)>>>0);g=q;h=p;n=E;o=D}D=m[b+1026>>1]|0;E=m[b+1024>>1]|0;b=o&65535|E<<n;j[g>>1]=b;if((n|0)>(16-D|0)){o=a+20|0;p=k[o>>2]|0;k[o>>2]=p+1;q=a+8|0;i[(k[q>>2]|0)+p>>0]=b;b=(m[g>>1]|0)>>>8&255;p=k[o>>2]|0;k[o>>2]=p+1;i[(k[q>>2]|0)+p>>0]=b;b=k[h>>2]|0;j[g>>1]=E>>>(16-b|0);M=D+-16+b|0;k[h>>2]=M;return}else{M=n+D|0;k[h>>2]=M;return}}function Tj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;d=j[b+2>>1]|0;e=d<<16>>16==0;f=a+2754|0;g=a+5820|0;h=a+2752|0;l=a+5816|0;n=a+20|0;o=a+8|0;p=a+2758|0;q=a+2756|0;r=a+2750|0;s=a+2748|0;t=e?138:7;u=e?3:4;e=0;v=d&65535;d=-1;a:while(1){w=0;x=e;while(1){if((x|0)>(c|0))break a;y=x+1|0;z=j[b+(y<<2)+2>>1]|0;A=z&65535;B=w+1|0;C=(v|0)==(A|0);if((B|0)<(t|0)&C){w=B;x=y}else{D=y;E=z;F=A;G=B;H=C;I=w;break}}do if((G|0)>=(u|0)){if(v){if((v|0)==(d|0)){J=j[l>>1]|0;K=k[g>>2]|0;L=G}else{w=m[a+2684+(v<<2)+2>>1]|0;x=k[g>>2]|0;C=m[a+2684+(v<<2)>>1]|0;B=m[l>>1]|0|C<<x;A=B&65535;j[l>>1]=A;if((x|0)>(16-w|0)){z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=B;B=(m[l>>1]|0)>>>8&255;z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=B;B=k[g>>2]|0;z=C>>>(16-B|0)&65535;j[l>>1]=z;M=z;N=w+-16+B|0}else{M=A;N=x+w|0}k[g>>2]=N;J=M;K=N;L=I}w=m[r>>1]|0;x=m[s>>1]|0;A=J&65535|x<<K;j[l>>1]=A;if((K|0)>(16-w|0)){B=k[n>>2]|0;k[n>>2]=B+1;i[(k[o>>2]|0)+B>>0]=A;B=(m[l>>1]|0)>>>8&255;z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=B;B=k[g>>2]|0;z=x>>>(16-B|0);j[l>>1]=z;O=w+-16+B|0;P=z}else{O=K+w|0;P=A}k[g>>2]=O;A=L+65533&65535;w=P&65535|A<<O;j[l>>1]=w;if((O|0)>14){z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=w;w=(m[l>>1]|0)>>>8&255;z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=w;w=k[g>>2]|0;j[l>>1]=A>>>(16-w|0);k[g>>2]=w+-14;break}else{k[g>>2]=O+2;break}}if((G|0)<11){w=m[f>>1]|0;A=k[g>>2]|0;z=m[h>>1]|0;B=m[l>>1]|0|z<<A;j[l>>1]=B;if((A|0)>(16-w|0)){x=k[n>>2]|0;k[n>>2]=x+1;i[(k[o>>2]|0)+x>>0]=B;x=(m[l>>1]|0)>>>8&255;C=k[n>>2]|0;k[n>>2]=C+1;i[(k[o>>2]|0)+C>>0]=x;x=k[g>>2]|0;C=z>>>(16-x|0);j[l>>1]=C;Q=w+-16+x|0;R=C}else{Q=A+w|0;R=B}k[g>>2]=Q;B=I+65534&65535;w=R&65535|B<<Q;j[l>>1]=w;if((Q|0)>13){A=k[n>>2]|0;k[n>>2]=A+1;i[(k[o>>2]|0)+A>>0]=w;w=(m[l>>1]|0)>>>8&255;A=k[n>>2]|0;k[n>>2]=A+1;i[(k[o>>2]|0)+A>>0]=w;w=k[g>>2]|0;j[l>>1]=B>>>(16-w|0);k[g>>2]=w+-13;break}else{k[g>>2]=Q+3;break}}else{w=m[p>>1]|0;B=k[g>>2]|0;A=m[q>>1]|0;C=m[l>>1]|0|A<<B;j[l>>1]=C;if((B|0)>(16-w|0)){x=k[n>>2]|0;k[n>>2]=x+1;i[(k[o>>2]|0)+x>>0]=C;x=(m[l>>1]|0)>>>8&255;z=k[n>>2]|0;k[n>>2]=z+1;i[(k[o>>2]|0)+z>>0]=x;x=k[g>>2]|0;z=A>>>(16-x|0);j[l>>1]=z;S=w+-16+x|0;T=z}else{S=B+w|0;T=C}k[g>>2]=S;C=I+65526&65535;w=T&65535|C<<S;j[l>>1]=w;if((S|0)>9){B=k[n>>2]|0;k[n>>2]=B+1;i[(k[o>>2]|0)+B>>0]=w;w=(m[l>>1]|0)>>>8&255;B=k[n>>2]|0;k[n>>2]=B+1;i[(k[o>>2]|0)+B>>0]=w;w=k[g>>2]|0;j[l>>1]=C>>>(16-w|0);k[g>>2]=w+-9;break}else{k[g>>2]=S+7;break}}}else{w=a+2684+(v<<2)+2|0;C=a+2684+(v<<2)|0;B=k[g>>2]|0;z=j[l>>1]|0;x=G;while(1){A=m[w>>1]|0;y=m[C>>1]|0;U=z&65535|y<<B;V=U&65535;j[l>>1]=V;if((B|0)>(16-A|0)){W=k[n>>2]|0;k[n>>2]=W+1;i[(k[o>>2]|0)+W>>0]=U;U=(m[l>>1]|0)>>>8&255;W=k[n>>2]|0;k[n>>2]=W+1;i[(k[o>>2]|0)+W>>0]=U;U=k[g>>2]|0;W=y>>>(16-U|0)&65535;j[l>>1]=W;X=W;Y=A+-16+U|0}else{X=V;Y=B+A|0}k[g>>2]=Y;x=x+-1|0;if(!x)break;else{B=Y;z=X}}}while(0);z=E<<16>>16==0;B=v;t=z?138:H?6:7;u=z|H?3:4;e=D;v=F;d=B}return}function Uj(a,b,c){a=a|0;b=b|0;c=c|0;return jr(ha(c,b)|0)|0}function Vj(a,b){a=a|0;b=b|0;kr(b);return}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;d=a>>>16;e=a&65535;if((c|0)==1){a=(l[b>>0]|0)+e|0;f=a>>>0>65520?a+-65521|0:a;a=f+d|0;g=(a>>>0>65520?a+15|0:a)<<16|f;return g|0}if(!b){g=1;return g|0}if(c>>>0<16){if(!c){h=e;i=d}else{f=b;a=c;j=e;k=d;while(1){a=a+-1|0;m=(l[f>>0]|0)+j|0;n=m+k|0;if(!a){h=m;i=n;break}else{f=f+1|0;j=m;k=n}}}g=((i>>>0)%65521|0)<<16|(h>>>0>65520?h+-65521|0:h);return g|0}if(c>>>0>5551){h=c+-5552|0;i=(h>>>0)%5552|0;k=h-i+5552|0;h=b;j=c;f=e;a=d;while(1){j=j+-5552|0;n=h;m=f;o=347;p=a;while(1){q=(l[n>>0]|0)+m|0;r=q+(l[n+1>>0]|0)|0;s=r+(l[n+2>>0]|0)|0;t=s+(l[n+3>>0]|0)|0;u=t+(l[n+4>>0]|0)|0;v=u+(l[n+5>>0]|0)|0;w=v+(l[n+6>>0]|0)|0;x=w+(l[n+7>>0]|0)|0;y=x+(l[n+8>>0]|0)|0;z=y+(l[n+9>>0]|0)|0;A=z+(l[n+10>>0]|0)|0;B=A+(l[n+11>>0]|0)|0;C=B+(l[n+12>>0]|0)|0;D=C+(l[n+13>>0]|0)|0;E=D+(l[n+14>>0]|0)|0;F=E+(l[n+15>>0]|0)|0;G=q+p+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F|0;o=o+-1|0;if(!o){H=F;I=G;break}else{n=n+16|0;m=F;p=G}}p=(H>>>0)%65521|0;m=(I>>>0)%65521|0;if(j>>>0<=5551){J=p;K=m;break}else{h=h+5552|0;f=p;a=m}}a=b+k|0;if(i)if(i>>>0>15){L=i;M=a;N=J;O=K;P=15}else{Q=i;R=a;S=J;T=K;P=18}else{U=J;V=K}}else{L=c;M=b;N=e;O=d;P=15}if((P|0)==15){d=L+-16|0;e=d&-16;b=M+(e+16)|0;c=L;L=M;M=N;N=O;while(1){c=c+-16|0;O=(l[L>>0]|0)+M|0;K=O+(l[L+1>>0]|0)|0;J=K+(l[L+2>>0]|0)|0;a=J+(l[L+3>>0]|0)|0;i=a+(l[L+4>>0]|0)|0;k=i+(l[L+5>>0]|0)|0;f=k+(l[L+6>>0]|0)|0;h=f+(l[L+7>>0]|0)|0;j=h+(l[L+8>>0]|0)|0;I=j+(l[L+9>>0]|0)|0;H=I+(l[L+10>>0]|0)|0;m=H+(l[L+11>>0]|0)|0;p=m+(l[L+12>>0]|0)|0;n=p+(l[L+13>>0]|0)|0;o=n+(l[L+14>>0]|0)|0;G=o+(l[L+15>>0]|0)|0;F=O+N+K+J+a+i+k+f+h+j+I+H+m+p+n+o+G|0;if(c>>>0<=15){W=G;X=F;break}else{L=L+16|0;M=G;N=F}}if((d|0)==(e|0)){Y=W;Z=X;P=19}else{Q=d-e|0;R=b;S=W;T=X;P=18}}if((P|0)==18)while(1){P=0;Q=Q+-1|0;X=(l[R>>0]|0)+S|0;W=X+T|0;if(!Q){Y=X;Z=W;P=19;break}else{R=R+1|0;S=X;T=W;P=18}}if((P|0)==19){U=(Y>>>0)%65521|0;V=(Z>>>0)%65521|0}g=V<<16|U;return g|0}function Xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;if(!b){d=0;return d|0}e=~a;a:do if(c){a=b;f=c;g=e;while(1){if(!(a&3)){h=a;i=f;j=g;break}m=k[110756+(((l[a>>0]|0)^g&255)<<2)>>2]^g>>>8;f=f+-1|0;if(!f){n=m;break a}else{a=a+1|0;g=m}}if(i>>>0>31){g=i+-32|0;a=g&-32;f=a+32|0;m=i;o=h;p=j;while(1){q=k[o>>2]^p;r=k[112804+((q>>>8&255)<<2)>>2]^k[113828+((q&255)<<2)>>2]^k[111780+((q>>>16&255)<<2)>>2]^k[110756+(q>>>24<<2)>>2]^k[o+4>>2];q=k[112804+((r>>>8&255)<<2)>>2]^k[113828+((r&255)<<2)>>2]^k[111780+((r>>>16&255)<<2)>>2]^k[110756+(r>>>24<<2)>>2]^k[o+8>>2];r=k[112804+((q>>>8&255)<<2)>>2]^k[113828+((q&255)<<2)>>2]^k[111780+((q>>>16&255)<<2)>>2]^k[110756+(q>>>24<<2)>>2]^k[o+12>>2];q=k[112804+((r>>>8&255)<<2)>>2]^k[113828+((r&255)<<2)>>2]^k[111780+((r>>>16&255)<<2)>>2]^k[110756+(r>>>24<<2)>>2]^k[o+16>>2];r=k[112804+((q>>>8&255)<<2)>>2]^k[113828+((q&255)<<2)>>2]^k[111780+((q>>>16&255)<<2)>>2]^k[110756+(q>>>24<<2)>>2]^k[o+20>>2];q=k[112804+((r>>>8&255)<<2)>>2]^k[113828+((r&255)<<2)>>2]^k[111780+((r>>>16&255)<<2)>>2]^k[110756+(r>>>24<<2)>>2]^k[o+24>>2];r=k[112804+((q>>>8&255)<<2)>>2]^k[113828+((q&255)<<2)>>2]^k[111780+((q>>>16&255)<<2)>>2]^k[110756+(q>>>24<<2)>>2]^k[o+28>>2];q=k[112804+((r>>>8&255)<<2)>>2]^k[113828+((r&255)<<2)>>2]^k[111780+((r>>>16&255)<<2)>>2]^k[110756+(r>>>24<<2)>>2];m=m+-32|0;if(m>>>0<=31){s=q;break}else{o=o+32|0;p=q}}t=g-a|0;u=h+f|0;v=s}else{t=i;u=h;v=j}if(t>>>0>3){p=t+-4|0;o=p>>>2;m=o<<2;q=t;r=u;w=v;while(1){x=k[r>>2]^w;y=k[112804+((x>>>8&255)<<2)>>2]^k[113828+((x&255)<<2)>>2]^k[111780+((x>>>16&255)<<2)>>2]^k[110756+(x>>>24<<2)>>2];q=q+-4|0;if(q>>>0<=3){z=y;break}else{r=r+4|0;w=y}}A=p-m|0;B=u+(o+1<<2)|0;C=z}else{A=t;B=u;C=v}if(!A)n=C;else{w=B;r=A;q=C;while(1){f=k[110756+(((l[w>>0]|0)^q&255)<<2)>>2]^q>>>8;r=r+-1|0;if(!r){n=f;break}else{w=w+1|0;q=f}}}}else n=e;while(0);d=~n;return d|0}function Yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0;c=k[a+28>>2]|0;d=k[a>>2]|0;e=a+4|0;f=d+((k[e>>2]|0)+-6)|0;g=a+12|0;h=k[g>>2]|0;m=a+16|0;n=k[m>>2]|0;o=h+(n+-258)|0;p=k[c+44>>2]|0;q=k[c+48>>2]|0;r=k[c+52>>2]|0;s=c+56|0;t=c+60|0;u=k[c+76>>2]|0;v=k[c+80>>2]|0;w=(1<<k[c+84>>2])+-1|0;x=(1<<k[c+88>>2])+-1|0;y=h+(n+~b)|0;b=c+7104|0;n=r+-1|0;z=(q|0)==0;A=(k[c+40>>2]|0)+-1|0;B=A+q|0;C=q+-1|0;D=y+-1|0;E=y-q|0;F=y+-2|0;G=k[t>>2]|0;H=k[s>>2]|0;I=d+-1|0;d=h+-1|0;a:while(1){if(G>>>0<15){h=I+2|0;J=G+16|0;K=((l[I+1>>0]|0)<<G)+H+((l[h>>0]|0)<<G+8)|0;L=h}else{J=G;K=H;L=I}h=K&w;M=i[u+(h<<2)>>0]|0;N=j[u+(h<<2)+2>>1]|0;O=l[u+(h<<2)+1>>0]|0;h=K>>>O;P=J-O|0;do if(M<<24>>24){O=h;Q=P;R=M&255;S=N;while(1){if(R&16){T=R;U=Q;V=O;W=S;break}if(R&64){X=R;Y=Q;Z=O;_=L;$=d;aa=57;break a}ba=(O&(1<<R)+-1)+(S&65535)|0;ca=i[u+(ba<<2)>>0]|0;da=j[u+(ba<<2)+2>>1]|0;ea=l[u+(ba<<2)+1>>0]|0;ba=O>>>ea;fa=Q-ea|0;if(!(ca<<24>>24)){ga=ba;ha=fa;ia=da;aa=6;break}else{O=ba;Q=fa;R=ca&255;S=da}}if((aa|0)==6){aa=0;ja=ga;ka=ha;la=ia&255;aa=7;break}S=W&65535;R=T&15;if(!R){ma=U;na=V;oa=L;pa=S}else{if(U>>>0<R>>>0){Q=L+1|0;qa=U+8|0;ra=((l[Q>>0]|0)<<U)+V|0;sa=Q}else{qa=U;ra=V;sa=L}ma=qa-R|0;na=ra>>>R;oa=sa;pa=(ra&(1<<R)+-1)+S|0}if(ma>>>0<15){S=oa+2|0;ta=ma+16|0;ua=((l[oa+1>>0]|0)<<ma)+na+((l[S>>0]|0)<<ma+8)|0;va=S}else{ta=ma;ua=na;va=oa}S=ua&x;R=j[v+(S<<2)+2>>1]|0;Q=l[v+(S<<2)+1>>0]|0;O=ua>>>Q;da=ta-Q|0;Q=l[v+(S<<2)>>0]|0;if(!(Q&16)){S=Q;ca=O;fa=da;ba=R;while(1){if(S&64){wa=fa;xa=ca;ya=va;za=d;aa=54;break a}ea=(ca&(1<<S)+-1)+(ba&65535)|0;Aa=j[v+(ea<<2)+2>>1]|0;Ba=l[v+(ea<<2)+1>>0]|0;Ca=ca>>>Ba;Da=fa-Ba|0;Ba=l[v+(ea<<2)>>0]|0;if(!(Ba&16)){S=Ba;ca=Ca;fa=Da;ba=Aa}else{Ea=Ca;Fa=Da;Ga=Ba;Ha=Aa;break}}}else{Ea=O;Fa=da;Ga=Q;Ha=R}ba=Ha&65535;fa=Ga&15;if(Fa>>>0<fa>>>0){ca=va+1|0;S=((l[ca>>0]|0)<<Fa)+Ea|0;Aa=Fa+8|0;if(Aa>>>0<fa>>>0){Ba=va+2|0;Ia=Fa+16|0;Ja=((l[Ba>>0]|0)<<Aa)+S|0;Ka=Ba}else{Ia=Aa;Ja=S;Ka=ca}}else{Ia=Fa;Ja=Ea;Ka=va}ca=(Ja&(1<<fa)+-1)+ba|0;ba=Ja>>>fa;S=Ia-fa|0;fa=d;Aa=fa-y|0;if(ca>>>0<=Aa>>>0){Ba=2-pa|0;Da=pa+(Ba>>>0>4294967293?Ba:-3)|0;Ba=Da-((Da>>>0)%3|0)|0;Da=Ba-ca|0;Ca=d+(0-ca)|0;ea=pa;La=d;do{i[La+1>>0]=i[Ca+1>>0]|0;i[La+2>>0]=i[Ca+2>>0]|0;Ca=Ca+3|0;La=La+3|0;i[La>>0]=i[Ca>>0]|0;ea=ea+-3|0}while(ea>>>0>2);ea=pa+-3|0;if((ea|0)==(Ba|0)){Ma=S;Na=ba;Oa=Ka;Pa=d+(Ba+3)|0;break}Ca=d+(Ba+4)|0;i[Ca>>0]=i[d+(Da+4)>>0]|0;if((ea-Ba|0)>>>0<=1){Ma=S;Na=ba;Oa=Ka;Pa=Ca;break}Ca=d+(Ba+5)|0;i[Ca>>0]=i[d+(Da+5)>>0]|0;Ma=S;Na=ba;Oa=Ka;Pa=Ca;break}Ca=ca-Aa|0;if(Ca>>>0>p>>>0?(k[b>>2]|0)!=0:0){Qa=ba;Ra=S;Sa=Ka;Ta=d;aa=22;break a}do if(z){ea=r+(A-Ca)|0;if(pa>>>0>Ca>>>0){La=pa-Ca|0;R=ca-fa|0;Q=ea;da=Ca;O=d;do{Q=Q+1|0;O=O+1|0;i[O>>0]=i[Q>>0]|0;da=da+-1|0}while((da|0)!=0);Ua=d+(D+R+(1-ca))|0;Va=La;Wa=d+(y+R)|0}else{Ua=ea;Va=pa;Wa=d}}else{if(Ca>>>0<=q>>>0){da=r+(C-Ca)|0;if(pa>>>0<=Ca>>>0){Ua=da;Va=pa;Wa=d;break}Q=pa-Ca|0;O=ca-fa|0;Xa=da;da=Ca;Ya=d;do{Xa=Xa+1|0;Ya=Ya+1|0;i[Ya>>0]=i[Xa>>0]|0;da=da+-1|0}while((da|0)!=0);Ua=d+(D+O+(1-ca))|0;Va=Q;Wa=d+(y+O)|0;break}da=r+(B-Ca)|0;Xa=Ca-q|0;if(pa>>>0>Xa>>>0){Ya=pa-Xa|0;ea=ca-fa|0;R=da;La=Xa;Xa=d;do{R=R+1|0;Xa=Xa+1|0;i[Xa>>0]=i[R>>0]|0;La=La+-1|0}while((La|0)!=0);La=d+(E+ea)|0;if(Ya>>>0>q>>>0){R=Ya-q|0;Xa=n;O=q;Q=La;do{Xa=Xa+1|0;Q=Q+1|0;i[Q>>0]=i[Xa>>0]|0;O=O+-1|0}while((O|0)!=0);Ua=d+(F+ea+(2-ca))|0;Va=R;Wa=d+(y+ea)|0}else{Ua=n;Va=Ya;Wa=La}}else{Ua=da;Va=pa;Wa=d}}while(0);if(Va>>>0>2){ca=Va+-3|0;fa=(ca>>>0)%3|0;Ca=ca-fa|0;ca=Ua;Aa=Va;Da=Wa;do{i[Da+1>>0]=i[ca+1>>0]|0;i[Da+2>>0]=i[ca+2>>0]|0;ca=ca+3|0;Da=Da+3|0;i[Da>>0]=i[ca>>0]|0;Aa=Aa+-3|0}while(Aa>>>0>2);Za=Ua+(Ca+3)|0;_a=fa;$a=Wa+(Ca+3)|0}else{Za=Ua;_a=Va;$a=Wa}if(_a){Aa=$a+1|0;i[Aa>>0]=i[Za+1>>0]|0;if(_a>>>0>1){ca=$a+2|0;i[ca>>0]=i[Za+2>>0]|0;Ma=S;Na=ba;Oa=Ka;Pa=ca}else{Ma=S;Na=ba;Oa=Ka;Pa=Aa}}else{Ma=S;Na=ba;Oa=Ka;Pa=$a}}else{ja=h;ka=P;la=N&255;aa=7}while(0);if((aa|0)==7){aa=0;N=d+1|0;i[N>>0]=la;Ma=ka;Na=ja;Oa=L;Pa=N}if(Pa>>>0<o>>>0&Oa>>>0<f>>>0){G=Ma;H=Na;I=Oa;d=Pa}else{ab=Ma;bb=Na;cb=Oa;db=Pa;break}}do if((aa|0)==22){k[a+24>>2]=155777;k[c>>2]=29;ab=Ra;bb=Qa;cb=Sa;db=Ta}else if((aa|0)==54){k[a+24>>2]=155807;k[c>>2]=29;ab=wa;bb=xa;cb=ya;db=za}else if((aa|0)==57)if(!(X&32)){k[a+24>>2]=155829;k[c>>2]=29;ab=Y;bb=Z;cb=_;db=$;break}else{k[c>>2]=11;ab=Y;bb=Z;cb=_;db=$;break}while(0);$=ab>>>3;_=ab-($<<3)|0;k[a>>2]=cb+(1-$);k[g>>2]=db+1;k[e>>2]=f+5-(cb+(0-$));k[m>>2]=o+257-db;k[s>>2]=(1<<_)+-1&bb;k[t>>2]=_;return}function Zj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a+4>>2]=0;if((b|0)!=90){d=k[a>>2]|0;k[d+20>>2]=13;k[d+24>>2]=90;k[d+28>>2]=b;qb[k[d>>2]&127](a)}if((c|0)==440)e=a;else{d=k[a>>2]|0;k[d+20>>2]=22;k[d+24>>2]=440;k[d+28>>2]=c;qb[k[d>>2]&127](a);e=a}d=k[a>>2]|0;c=a+12|0;b=k[c>>2]|0;qr(a|0,0,440)|0;k[a>>2]=d;k[c>>2]=b;k[a+16>>2]=0;tm(e);k[a+8>>2]=0;k[a+24>>2]=0;k[a+84>>2]=0;k[a+88>>2]=0;k[a+104>>2]=100;k[a+92>>2]=0;k[a+108>>2]=100;k[a+96>>2]=0;k[a+112>>2]=100;k[a+100>>2]=0;k[a+116>>2]=100;e=a+120|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+28>>2]=0;k[a+380>>2]=8;k[a+384>>2]=119984;k[a+388>>2]=63;k[a+428>>2]=0;p[a+48>>3]=1.0;k[a+20>>2]=100;return}function _j(a,b){a=a|0;b=b|0;var c=0;c=k[a+88>>2]|0;if(c)k[c+128>>2]=b;c=k[a+92>>2]|0;if(c)k[c+128>>2]=b;c=k[a+96>>2]|0;if(c)k[c+128>>2]=b;c=k[a+100>>2]|0;if(c)k[c+128>>2]=b;c=k[a+120>>2]|0;if(c)k[c+276>>2]=b;c=k[a+136>>2]|0;if(c)k[c+276>>2]=b;c=k[a+124>>2]|0;if(c)k[c+276>>2]=b;c=k[a+140>>2]|0;if(c)k[c+276>>2]=b;c=k[a+128>>2]|0;if(c)k[c+276>>2]=b;c=k[a+144>>2]|0;if(c)k[c+276>>2]=b;c=k[a+132>>2]|0;if(c)k[c+276>>2]=b;c=k[a+148>>2]|0;if(!c)return;k[c+276>>2]=b;return}function $j(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=k[a+20>>2]|0;switch(b|0){case 102:case 101:{if((k[a+264>>2]|0)>>>0<(k[a+32>>2]|0)>>>0){c=k[a>>2]|0;k[c+20>>2]=69;qb[k[c>>2]&127](a)}qb[k[(k[a+392>>2]|0)+8>>2]&127](a);break}case 103:break;default:{c=k[a>>2]|0;k[c+20>>2]=21;k[c+24>>2]=b;qb[k[c>>2]&127](a)}}c=a+392|0;b=k[c>>2]|0;if(k[b+16>>2]|0){d=a;e=a+408|0;f=k[e>>2]|0;g=f+12|0;h=k[g>>2]|0;qb[h&127](a);i=a+24|0;j=k[i>>2]|0;l=j+16|0;m=k[l>>2]|0;qb[m&127](a);Ak(d);return}n=a+288|0;o=a+8|0;p=a+404|0;q=b;do{qb[k[q>>2]&127](a);b=k[n>>2]|0;if(b){r=b;b=0;do{s=k[o>>2]|0;if(s){k[s+4>>2]=b;k[s+8>>2]=r;qb[k[s>>2]&127](a)}if(!(yb[k[(k[p>>2]|0)+4>>2]&127](a,0)|0)){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}b=b+1|0;r=k[n>>2]|0}while(b>>>0<r>>>0)}qb[k[(k[c>>2]|0)+8>>2]&127](a);q=k[c>>2]|0}while((k[q+16>>2]|0)==0);d=a;e=a+408|0;f=k[e>>2]|0;g=f+12|0;h=k[g>>2]|0;qb[h&127](a);i=a+24|0;j=k[i>>2]|0;l=j+16|0;m=k[l>>2]|0;qb[m&127](a);Ak(d);return}function ak(a){a=a|0;var b=0,c=0,d=0;b=k[a+20>>2]|0;if((b|0)==100)c=a;else{d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=b;qb[k[d>>2]&127](a);c=a}qb[k[(k[a>>2]|0)+16>>2]&127](c);c=a+24|0;qb[k[(k[c>>2]|0)+8>>2]&127](a);ik(a);qb[k[(k[a+408>>2]|0)+16>>2]&127](a);qb[k[(k[c>>2]|0)+16>>2]&127](a);return}function bk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+20|0;d=k[c>>2]|0;if((d|0)!=100){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=d;qb[k[e>>2]&127](a)}if(b)_j(a,0);qb[k[(k[a>>2]|0)+16>>2]&127](a);qb[k[(k[a+24>>2]|0)+8>>2]&127](a);ek(a);qb[k[k[a+392>>2]>>2]&127](a);k[a+264>>2]=0;k[c>>2]=(k[a+208>>2]|0)!=0?102:101;return}function ck(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d;f=k[a+20>>2]|0;if((f|0)!=101){g=k[a>>2]|0;k[g+20>>2]=21;k[g+24>>2]=f;qb[k[g>>2]&127](a)}g=a+264|0;f=a+32|0;if((k[g>>2]|0)>>>0>=(k[f>>2]|0)>>>0){h=k[a>>2]|0;k[h+20>>2]=126;rb[k[h+4>>2]&31](a,-1)}h=k[a+8>>2]|0;if(h){k[h+4>>2]=k[g>>2];k[h+8>>2]=k[f>>2];qb[k[h>>2]&127](a)}h=k[a+392>>2]|0;if(k[h+12>>2]|0)qb[k[h+4>>2]&127](a);h=(k[f>>2]|0)-(k[g>>2]|0)|0;k[e>>2]=0;Ab[k[(k[a+396>>2]|0)+4>>2]&31](a,b,e,h>>>0<c>>>0?h:c);c=k[e>>2]|0;k[g>>2]=(k[g>>2]|0)+c;r=d;return c|0}function dk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+20>>2]|0;if((d|0)!=102){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=d;qb[k[e>>2]&127](a)}e=a+264|0;d=k[e>>2]|0;f=k[a+32>>2]|0;if(d>>>0>=f>>>0){g=k[a>>2]|0;k[g+20>>2]=126;rb[k[g+4>>2]&31](a,-1);h=0;return h|0}g=k[a+8>>2]|0;if(g){k[g+4>>2]=d;k[g+8>>2]=f;qb[k[g>>2]&127](a)}g=k[a+392>>2]|0;if(k[g+12>>2]|0)qb[k[g+4>>2]&127](a);g=ha(k[a+284>>2]|0,k[a+276>>2]|0)|0;if(g>>>0>c>>>0){c=k[a>>2]|0;k[c+20>>2]=24;qb[k[c>>2]&127](a)}if(!(yb[k[(k[a+404>>2]|0)+4>>2]&127](a,b)|0)){h=0;return h|0}k[e>>2]=(k[e>>2]|0)+g;h=g;return h|0}function ek(a){a=a|0;var b=0,c=0,d=0;b=k[a+72>>2]|0;if((b|0)!=8){c=k[a>>2]|0;k[c+20>>2]=16;k[c+24>>2]=b;qb[k[c>>2]&127](a)}if(!(((k[a+32>>2]|0)!=0?(k[a+28>>2]|0)!=0:0)?(k[a+36>>2]|0)>=1:0)){c=k[a>>2]|0;k[c+20>>2]=33;qb[k[c>>2]&127](a)}uk(a,0);if(!(k[a+208>>2]|0)){an(a);Ok(a);Kk(a,0)}ln(a);if(!(k[a+212>>2]|0))pn(a);else Nm(a);if((k[a+200>>2]|0)>1)d=1;else d=(k[a+216>>2]|0)!=0;Xm(a,d&1);fk(a,0);ik(a);qb[k[(k[a+4>>2]|0)+24>>2]&127](a);qb[k[k[a+408>>2]>>2]&127](a);return}function fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=a+4|0;d=nb[k[k[c>>2]>>2]&63](a,1,64)|0;k[a+396>>2]=d;k[d>>2]=7;if(k[a+208>>2]|0)return;if(b){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a);return}b=a+76|0;if((k[b>>2]|0)<=0)return;e=d+24|0;d=0;f=k[a+84>>2]|0;while(1){g=ha(k[f+36>>2]|0,k[f+28>>2]|0)|0;h=ha(k[f+40>>2]|0,k[f+12>>2]|0)|0;i=xb[k[(k[c>>2]|0)+8>>2]&63](a,1,g,h)|0;k[e+(d<<2)>>2]=i;d=d+1|0;if((d|0)>=(k[b>>2]|0))break;else f=f+88|0}return}function gk(a,b){a=a|0;b=b|0;var c=0;c=k[a+396>>2]|0;if(k[a+208>>2]|0)return;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=b;if(!b){k[c+4>>2]=4;return}else{c=k[a>>2]|0;k[c+20>>2]=3;qb[k[c>>2]&127](a);return}}function hk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=k[a+396>>2]|0;f=e+8|0;g=a+288|0;if((k[f>>2]|0)>>>0>=(k[g>>2]|0)>>>0)return;h=e+12|0;i=a+284|0;j=a+400|0;l=e+24|0;m=a+404|0;n=e+16|0;e=k[h>>2]|0;while(1){o=k[i>>2]|0;if(e>>>0<o>>>0){ob[k[(k[j>>2]|0)+4>>2]&15](a,b,c,d,l,h,o);p=k[h>>2]|0;q=k[i>>2]|0}else{p=e;q=o}if((p|0)!=(q|0)){r=12;break}o=(yb[k[(k[m>>2]|0)+4>>2]&127](a,l)|0)==0;s=(k[n>>2]|0)!=0;if(o){r=7;break}if(s){k[c>>2]=(k[c>>2]|0)+1;k[n>>2]=0}k[h>>2]=0;o=(k[f>>2]|0)+1|0;k[f>>2]=o;if(o>>>0<(k[g>>2]|0)>>>0)e=0;else{r=12;break}}if((r|0)==7){if(s)return;k[c>>2]=(k[c>>2]|0)+-1;k[n>>2]=1;return}else if((r|0)==12)return}function ik(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,1,32)|0;k[a+408>>2]=b;k[b>>2]=30;k[b+4>>2]=31;k[b+8>>2]=32;k[b+12>>2]=33;k[b+16>>2]=34;k[b+20>>2]=44;k[b+24>>2]=8;k[b+28>>2]=0;return}function jk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+408>>2]|0;c=a+24|0;d=k[c>>2]|0;e=k[d>>2]|0;k[d>>2]=e+1;i[e>>0]=-1;e=d+4|0;f=(k[e>>2]|0)+-1|0;k[e>>2]=f;if((f|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;f=k[d>>2]|0;k[d>>2]=f+1;i[f>>0]=-40;f=d+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;if((e|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}k[b+28>>2]=0;do if(k[a+244>>2]|0){b=k[c>>2]|0;d=k[b>>2]|0;k[b>>2]=d+1;i[d>>0]=-1;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=-32;e=b+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if((d|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;d=k[b>>2]|0;k[b>>2]=d+1;i[d>>0]=0;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=16;e=b+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if((d|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;d=k[b>>2]|0;k[b>>2]=d+1;i[d>>0]=74;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=70;e=b+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if((d|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;d=k[b>>2]|0;k[b>>2]=d+1;i[d>>0]=73;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=70;e=b+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if((d|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;d=k[b>>2]|0;k[b>>2]=d+1;i[d>>0]=0;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=i[a+248>>0]|0;e=k[c>>2]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=b;b=e+4|0;d=(k[b>>2]|0)+-1|0;k[b>>2]=d;if((d|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=i[a+249>>0]|0;d=k[c>>2]|0;b=k[d>>2]|0;k[d>>2]=b+1;i[b>>0]=e;e=d+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=i[a+250>>0]|0;b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=d;d=b+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=j[a+252>>1]|0;e=k[c>>2]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=(b&65535)>>>8;d=e+4|0;f=(k[d>>2]|0)+-1|0;k[d>>2]=f;if((f|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[c>>2]|0;f=k[e>>2]|0;k[e>>2]=f+1;i[f>>0]=b;b=e+4|0;f=(k[b>>2]|0)+-1|0;k[b>>2]=f;if((f|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=j[a+254>>1]|0;f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=(e&65535)>>>8;b=f+4|0;d=(k[b>>2]|0)+-1|0;k[b>>2]=d;do if(!d){if(ub[k[f+12>>2]&63](a)|0)break;b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}while(0);f=k[c>>2]|0;d=k[f>>2]|0;k[f>>2]=d+1;i[d>>0]=e;d=f+4|0;b=(k[d>>2]|0)+-1|0;k[d>>2]=b;do if(!b){if(ub[k[f+12>>2]&63](a)|0)break;d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}while(0);f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=0;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;do if(!e){if(ub[k[f+12>>2]&63](a)|0)break;b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}while(0);f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=0;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if(b)break;if(ub[k[f+12>>2]&63](a)|0)break;f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}while(0);if(!(k[a+256>>2]|0))return;f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=-1;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=-18;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=0;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=14;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=65;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=100;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=111;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=98;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=101;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=0;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=100;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=0;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=0;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=0;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=0;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;do if(!e){if(ub[k[f+12>>2]&63](a)|0)break;b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}while(0);switch(k[a+80>>2]|0){case 3:{f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=1;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if(b)return;if(ub[k[f+12>>2]&63](a)|0)return;f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a);return}case 5:{f=k[c>>2]|0;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=2;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if(e)return;if(ub[k[f+12>>2]&63](a)|0)return;f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a);return}default:{f=k[c>>2]|0;c=k[f>>2]|0;k[f>>2]=c+1;i[c>>0]=0;c=f+4|0;e=(k[c>>2]|0)+-1|0;k[c>>2]=e;if(e)return;if(ub[k[f+12>>2]&63](a)|0)return;f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a);return}}}function kk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;b=a+84|0;c=a+76|0;d=k[c>>2]|0;if((d|0)>0){e=0;f=k[b>>2]|0;g=0;while(1){h=(qk(a,k[f+16>>2]|0)|0)+g|0;e=e+1|0;j=k[c>>2]|0;if((e|0)>=(j|0)){l=j;m=h;break}else{f=f+88|0;g=h}}}else{l=d;m=0}d=a+212|0;g=a+268|0;f=(k[g>>2]|0)==0;a:do if(k[d>>2]|0)if(f)n=19;else n=18;else{b:do if(f){do if((k[a+72>>2]|0)==8?(k[a+380>>2]|0)==8:0){if((l|0)>0){e=0;h=k[b>>2]|0;j=1;while(1){if((k[h+20>>2]|0)<=1?(k[h+24>>2]|0)<=1:0)o=j;else o=0;e=e+1|0;if((e|0)>=(l|0)){p=o;break}else{h=h+88|0;j=o}}}else p=1;if(!((m|0)!=0&(p|0)!=0)){if(!p)break;sk(a,192);break a}j=k[a>>2]|0;k[j+20>>2]=77;rb[k[j+4>>2]&31](a,0);j=(k[g>>2]|0)!=0;if(!(k[d>>2]|0))if(j)break b;else break;else if(j){n=18;break a}else{n=19;break a}}while(0);sk(a,193);break a}while(0);sk(a,194)}while(0);if((n|0)==18)sk(a,202);else if((n|0)==19)sk(a,201);switch(k[a+260>>2]|0){case 0:break;case 1:{if((k[c>>2]|0)<3)n=27;else n=28;break}default:n=27}if((n|0)==27){c=k[a>>2]|0;k[c+20>>2]=28;qb[k[c>>2]&127](a);n=28}do if((n|0)==28){c=a+24|0;d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=-1;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=-8;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=24;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=13;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=-1;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=3;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[(k[b>>2]|0)+88>>2]&255;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=p;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[k[b>>2]>>2]&255;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=m;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[(k[b>>2]|0)+176>>2]&255;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=p;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=-128;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if((p|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;if((m|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;do if(!p){if(ub[k[d+12>>2]&63](a)|0)break;m=k[a>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](a)}while(0);d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;do if(!m){if(ub[k[d+12>>2]&63](a)|0)break;p=k[a>>2]|0;k[p+20>>2]=25;qb[k[p>>2]&127](a)}while(0);d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;do if(!p){if(ub[k[d+12>>2]&63](a)|0)break;m=k[a>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](a)}while(0);d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=1;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;do if(!m){if(ub[k[d+12>>2]&63](a)|0)break;p=k[a>>2]|0;k[p+20>>2]=25;qb[k[p>>2]&127](a)}while(0);d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;do if(!p){if(ub[k[d+12>>2]&63](a)|0)break;m=k[a>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](a)}while(0);d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;do if(!m){if(ub[k[d+12>>2]&63](a)|0)break;p=k[a>>2]|0;k[p+20>>2]=25;qb[k[p>>2]&127](a)}while(0);d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;do if(!p){if(ub[k[d+12>>2]&63](a)|0)break;m=k[a>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](a)}while(0);d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;do if(!m){if(ub[k[d+12>>2]&63](a)|0)break;p=k[a>>2]|0;k[p+20>>2]=25;qb[k[p>>2]&127](a)}while(0);d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=1;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;do if(!p){if(ub[k[d+12>>2]&63](a)|0)break;m=k[a>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](a)}while(0);d=k[c>>2]|0;p=k[d>>2]|0;k[d>>2]=p+1;i[p>>0]=0;p=d+4|0;m=(k[p>>2]|0)+-1|0;k[p>>2]=m;do if(!m){if(ub[k[d+12>>2]&63](a)|0)break;p=k[a>>2]|0;k[p+20>>2]=25;qb[k[p>>2]&127](a)}while(0);d=k[c>>2]|0;m=k[d>>2]|0;k[d>>2]=m+1;i[m>>0]=0;m=d+4|0;p=(k[m>>2]|0)+-1|0;k[m>>2]=p;if(p)break;if(ub[k[d+12>>2]&63](a)|0)break;d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}while(0);if(!(k[g>>2]|0))return;g=a+380|0;if((k[g>>2]|0)==8)return;b=a+24|0;n=k[b>>2]|0;d=k[n>>2]|0;k[n>>2]=d+1;i[d>>0]=-1;d=n+4|0;p=(k[d>>2]|0)+-1|0;k[d>>2]=p;if((p|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;p=k[n>>2]|0;k[n>>2]=p+1;i[p>>0]=-38;p=n+4|0;d=(k[p>>2]|0)+-1|0;k[p>>2]=d;if((d|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;d=k[n>>2]|0;k[n>>2]=d+1;i[d>>0]=0;d=n+4|0;p=(k[d>>2]|0)+-1|0;k[d>>2]=p;if((p|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;p=k[n>>2]|0;k[n>>2]=p+1;i[p>>0]=6;p=n+4|0;d=(k[p>>2]|0)+-1|0;k[p>>2]=d;if((d|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;d=k[n>>2]|0;k[n>>2]=d+1;i[d>>0]=0;d=n+4|0;p=(k[d>>2]|0)+-1|0;k[d>>2]=p;if((p|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;p=k[n>>2]|0;k[n>>2]=p+1;i[p>>0]=0;p=n+4|0;d=(k[p>>2]|0)+-1|0;k[p>>2]=d;if((d|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[g>>2]|0;g=(ha(n,n)|0)+255|0;n=k[b>>2]|0;d=k[n>>2]|0;k[n>>2]=d+1;i[d>>0]=g;g=n+4|0;d=(k[g>>2]|0)+-1|0;k[g>>2]=d;if((d|0)==0?(ub[k[n+12>>2]&63](a)|0)==0:0){n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a)}n=k[b>>2]|0;b=k[n>>2]|0;k[n>>2]=b+1;i[b>>0]=0;b=n+4|0;d=(k[b>>2]|0)+-1|0;k[b>>2]=d;if(d)return;if(ub[k[n+12>>2]&63](a)|0)return;n=k[a>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](a);return}function lk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;b=r;r=r+32|0;c=b+16|0;d=b;e=k[a+408>>2]|0;if(!(k[a+212>>2]|0)){f=a+292|0;if((k[f>>2]|0)>0){g=a+364|0;h=a+372|0;j=a+368|0;m=0;do{n=k[a+296+(m<<2)>>2]|0;if((k[g>>2]|0)==0?(k[h>>2]|0)==0:0)rk(a,k[n+20>>2]|0,0);if(k[j>>2]|0)rk(a,k[n+24>>2]|0,1);m=m+1|0}while((m|0)<(k[f>>2]|0))}}else{f=d;m=f+16|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(m|0));f=c;m=f+16|0;do{i[f>>0]=0;f=f+1|0}while((f|0)<(m|0));f=k[a+292>>2]|0;if((f|0)>0){m=(k[a+368>>2]|0)==0;if(k[a+364>>2]|0)if(m){o=0;p=0;q=0;s=0;t=0;u=0;v=0;w=0;x=0;y=0;z=0;A=0;B=0;C=0;D=0;E=0}else{j=0;do{i[d+(k[(k[a+296+(j<<2)>>2]|0)+24>>2]|0)>>0]=1;j=j+1|0}while((j|0)!=(f|0));o=0;p=0;q=0;s=0;t=0;u=0;v=0;w=0;x=0;y=0;z=0;A=0;B=0;C=0;D=0;E=0}else{j=(k[a+372>>2]|0)==0;if(m){m=0;do{if(j)i[c+(k[(k[a+296+(m<<2)>>2]|0)+20>>2]|0)>>0]=1;m=m+1|0}while((m|0)!=(f|0))}else{m=0;do{h=k[a+296+(m<<2)>>2]|0;if(j)i[c+(k[h+20>>2]|0)>>0]=1;i[d+(k[h+24>>2]|0)>>0]=1;m=m+1|0}while((m|0)!=(f|0))}o=i[c+13>>0]|0;p=i[c>>0]|0;q=i[c+14>>0]|0;s=i[c+15>>0]|0;t=i[c+1>>0]|0;u=i[c+2>>0]|0;v=i[c+3>>0]|0;w=i[c+4>>0]|0;x=i[c+5>>0]|0;y=i[c+6>>0]|0;z=i[c+7>>0]|0;A=i[c+8>>0]|0;B=i[c+9>>0]|0;C=i[c+10>>0]|0;D=i[c+11>>0]|0;E=i[c+12>>0]|0}F=i[d+15>>0]|0;G=p;H=i[d>>0]|0;I=t;J=i[d+1>>0]|0;K=u;L=i[d+2>>0]|0;M=v;N=i[d+3>>0]|0;O=w;P=i[d+4>>0]|0;Q=x;R=i[d+5>>0]|0;S=y;T=i[d+6>>0]|0;U=z;V=i[d+7>>0]|0;W=A;X=i[d+8>>0]|0;Y=B;Z=i[d+9>>0]|0;_=C;$=i[d+10>>0]|0;aa=D;ba=i[d+11>>0]|0;ca=E;da=i[d+12>>0]|0;ea=o;fa=i[d+13>>0]|0;ga=q;ha=i[d+14>>0]|0;ia=s}else{F=0;G=0;H=0;I=0;J=0;K=0;L=0;M=0;N=0;O=0;P=0;Q=0;R=0;S=0;T=0;U=0;V=0;W=0;X=0;Y=0;Z=0;_=0;$=0;aa=0;ba=0;ca=0;da=0;ea=0;fa=0;ga=0;ha=0;ia=0}s=(ca<<24>>24)+(da<<24>>24)+(ba<<24>>24)+(aa<<24>>24)+($<<24>>24)+(_<<24>>24)+(Z<<24>>24)+(Y<<24>>24)+(X<<24>>24)+(W<<24>>24)+(V<<24>>24)+(U<<24>>24)+(T<<24>>24)+(S<<24>>24)+(R<<24>>24)+(Q<<24>>24)+(P<<24>>24)+(O<<24>>24)+(N<<24>>24)+(M<<24>>24)+(L<<24>>24)+(K<<24>>24)+(J<<24>>24)+(I<<24>>24)+(H<<24>>24)+(G<<24>>24)+(ea<<24>>24)+(fa<<24>>24)+(ga<<24>>24)+(ha<<24>>24)+(ia<<24>>24)+(F<<24>>24)|0;if(s){F=a+24|0;ia=k[F>>2]|0;ha=k[ia>>2]|0;k[ia>>2]=ha+1;i[ha>>0]=-1;ha=ia+4|0;ga=(k[ha>>2]|0)+-1|0;k[ha>>2]=ga;if((ga|0)==0?(ub[k[ia+12>>2]&63](a)|0)==0:0){ia=k[a>>2]|0;k[ia+20>>2]=25;qb[k[ia>>2]&127](a)}ia=k[F>>2]|0;ga=k[ia>>2]|0;k[ia>>2]=ga+1;i[ga>>0]=-52;ga=ia+4|0;ha=(k[ga>>2]|0)+-1|0;k[ga>>2]=ha;if((ha|0)==0?(ub[k[ia+12>>2]&63](a)|0)==0:0){ia=k[a>>2]|0;k[ia+20>>2]=25;qb[k[ia>>2]&127](a)}ia=(s<<1)+2|0;s=k[F>>2]|0;ha=k[s>>2]|0;k[s>>2]=ha+1;i[ha>>0]=ia>>>8;ha=s+4|0;ga=(k[ha>>2]|0)+-1|0;k[ha>>2]=ga;if((ga|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=k[F>>2]|0;ga=k[s>>2]|0;k[s>>2]=ga+1;i[ga>>0]=ia;ia=s+4|0;ga=(k[ia>>2]|0)+-1|0;k[ia>>2]=ga;if((ga|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=0;do{if(i[c+s>>0]|0){ga=k[F>>2]|0;ia=k[ga>>2]|0;k[ga>>2]=ia+1;i[ia>>0]=s;ia=ga+4|0;ha=(k[ia>>2]|0)+-1|0;k[ia>>2]=ha;if((ha|0)==0?(ub[k[ga+12>>2]&63](a)|0)==0:0){ga=k[a>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](a)}ga=k[F>>2]|0;ha=(l[a+168+s>>0]<<4)+(l[a+152+s>>0]|0)&255;ia=k[ga>>2]|0;k[ga>>2]=ia+1;i[ia>>0]=ha;ha=ga+4|0;ia=(k[ha>>2]|0)+-1|0;k[ha>>2]=ia;if((ia|0)==0?(ub[k[ga+12>>2]&63](a)|0)==0:0){ga=k[a>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](a)}}if(i[d+s>>0]|0){ga=k[F>>2]|0;ia=k[ga>>2]|0;k[ga>>2]=ia+1;i[ia>>0]=s+16;ia=ga+4|0;ha=(k[ia>>2]|0)+-1|0;k[ia>>2]=ha;if((ha|0)==0?(ub[k[ga+12>>2]&63](a)|0)==0:0){ga=k[a>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](a)}ga=i[a+184+s>>0]|0;ha=k[F>>2]|0;ia=k[ha>>2]|0;k[ha>>2]=ia+1;i[ia>>0]=ga;ga=ha+4|0;ia=(k[ga>>2]|0)+-1|0;k[ga>>2]=ia;if((ia|0)==0?(ub[k[ha+12>>2]&63](a)|0)==0:0){ha=k[a>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](a)}}s=s+1|0}while((s|0)!=16)}}s=a+236|0;F=e+28|0;e=a+24|0;if((k[s>>2]|0)!=(k[F>>2]|0)){d=k[e>>2]|0;c=k[d>>2]|0;k[d>>2]=c+1;i[c>>0]=-1;c=d+4|0;ha=(k[c>>2]|0)+-1|0;k[c>>2]=ha;if((ha|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[e>>2]|0;ha=k[d>>2]|0;k[d>>2]=ha+1;i[ha>>0]=-35;ha=d+4|0;c=(k[ha>>2]|0)+-1|0;k[ha>>2]=c;if((c|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[e>>2]|0;c=k[d>>2]|0;k[d>>2]=c+1;i[c>>0]=0;c=d+4|0;ha=(k[c>>2]|0)+-1|0;k[c>>2]=ha;if((ha|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[e>>2]|0;ha=k[d>>2]|0;k[d>>2]=ha+1;i[ha>>0]=4;ha=d+4|0;c=(k[ha>>2]|0)+-1|0;k[ha>>2]=c;if((c|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[s>>2]|0;c=k[e>>2]|0;ha=k[c>>2]|0;k[c>>2]=ha+1;i[ha>>0]=d>>>8;ha=c+4|0;ia=(k[ha>>2]|0)+-1|0;k[ha>>2]=ia;if((ia|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[e>>2]|0;ia=k[c>>2]|0;k[c>>2]=ia+1;i[ia>>0]=d;d=c+4|0;ia=(k[d>>2]|0)+-1|0;k[d>>2]=ia;if((ia|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}k[F>>2]=k[s>>2]}s=k[e>>2]|0;F=k[s>>2]|0;k[s>>2]=F+1;i[F>>0]=-1;F=s+4|0;c=(k[F>>2]|0)+-1|0;k[F>>2]=c;if((c|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=k[e>>2]|0;c=k[s>>2]|0;k[s>>2]=c+1;i[c>>0]=-38;c=s+4|0;F=(k[c>>2]|0)+-1|0;k[c>>2]=F;if((F|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=a+292|0;F=(k[s>>2]<<1)+6|0;c=k[e>>2]|0;ia=k[c>>2]|0;k[c>>2]=ia+1;i[ia>>0]=F>>>8;ia=c+4|0;d=(k[ia>>2]|0)+-1|0;k[ia>>2]=d;if((d|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[e>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=F;F=c+4|0;d=(k[F>>2]|0)+-1|0;k[F>>2]=d;if((d|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[e>>2]|0;d=k[s>>2]&255;F=k[c>>2]|0;k[c>>2]=F+1;i[F>>0]=d;d=c+4|0;F=(k[d>>2]|0)+-1|0;k[d>>2]=F;if((F|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}if((k[s>>2]|0)>0){c=a+364|0;F=a+372|0;d=a+368|0;ia=0;do{ha=k[a+296+(ia<<2)>>2]|0;ga=k[e>>2]|0;fa=k[ha>>2]&255;ea=k[ga>>2]|0;k[ga>>2]=ea+1;i[ea>>0]=fa;fa=ga+4|0;ea=(k[fa>>2]|0)+-1|0;k[fa>>2]=ea;if((ea|0)==0?(ub[k[ga+12>>2]&63](a)|0)==0:0){ga=k[a>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](a)}if((k[c>>2]|0)==0?(k[F>>2]|0)==0:0)ja=k[ha+20>>2]|0;else ja=0;if(!(k[d>>2]|0))ka=0;else ka=k[ha+24>>2]|0;ha=k[e>>2]|0;ga=k[ha>>2]|0;k[ha>>2]=ga+1;i[ga>>0]=ka+(ja<<4);ga=ha+4|0;ea=(k[ga>>2]|0)+-1|0;k[ga>>2]=ea;if((ea|0)==0?(ub[k[ha+12>>2]&63](a)|0)==0:0){ha=k[a>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](a)}ia=ia+1|0}while((ia|0)<(k[s>>2]|0));la=c}else la=a+364|0;c=k[e>>2]|0;s=k[la>>2]&255;la=k[c>>2]|0;k[c>>2]=la+1;i[la>>0]=s;s=c+4|0;la=(k[s>>2]|0)+-1|0;k[s>>2]=la;if((la|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[e>>2]|0;la=k[a+368>>2]&255;s=k[c>>2]|0;k[c>>2]=s+1;i[s>>0]=la;la=c+4|0;s=(k[la>>2]|0)+-1|0;k[la>>2]=s;if((s|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[e>>2]|0;e=(k[a+372>>2]<<4)+(k[a+376>>2]|0)&255;s=k[c>>2]|0;k[c>>2]=s+1;i[s>>0]=e;e=c+4|0;s=(k[e>>2]|0)+-1|0;k[e>>2]=s;if(s){r=b;return}if(ub[k[c+12>>2]&63](a)|0){r=b;return}c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);r=b;return}function mk(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+24|0;c=k[b>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=-1;d=c+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[b>>2]|0;b=k[c>>2]|0;k[c>>2]=b+1;i[b>>0]=-39;b=c+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if(e)return;if(ub[k[c+12>>2]&63](a)|0)return;c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);return}function nk(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+24|0;c=k[b>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=-1;d=c+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[b>>2]|0;e=k[c>>2]|0;k[c>>2]=e+1;i[e>>0]=-40;e=c+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if((d|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}if(k[a+88>>2]|0)qk(a,0)|0;if(k[a+92>>2]|0)qk(a,1)|0;if(k[a+96>>2]|0)qk(a,2)|0;if(k[a+100>>2]|0)qk(a,3)|0;if(!(k[a+212>>2]|0)){if(k[a+120>>2]|0)rk(a,0,0);if(k[a+136>>2]|0)rk(a,0,1);if(k[a+124>>2]|0)rk(a,1,0);if(k[a+140>>2]|0)rk(a,1,1);if(k[a+128>>2]|0)rk(a,2,0);if(k[a+144>>2]|0)rk(a,2,1);if(k[a+132>>2]|0)rk(a,3,0);if(k[a+148>>2]|0)rk(a,3,1)}c=k[b>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=-1;d=c+4|0;e=(k[d>>2]|0)+-1|0;k[d>>2]=e;if((e|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[b>>2]|0;b=k[c>>2]|0;k[c>>2]=b+1;i[b>>0]=-39;b=c+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if(e)return;if(ub[k[c+12>>2]&63](a)|0)return;c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);return}function ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;if(c>>>0>65533){d=k[a>>2]|0;k[d+20>>2]=12;qb[k[d>>2]&127](a)}d=a+24|0;e=k[d>>2]|0;f=k[e>>2]|0;k[e>>2]=f+1;i[f>>0]=-1;f=e+4|0;g=(k[f>>2]|0)+-1|0;k[f>>2]=g;if((g|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[d>>2]|0;g=k[e>>2]|0;k[e>>2]=g+1;i[g>>0]=b;b=e+4|0;g=(k[b>>2]|0)+-1|0;k[b>>2]=g;if((g|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=c+2|0;c=k[d>>2]|0;g=k[c>>2]|0;k[c>>2]=g+1;i[g>>0]=e>>>8;g=c+4|0;b=(k[g>>2]|0)+-1|0;k[g>>2]=b;if((b|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=k[d>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=e;e=c+4|0;d=(k[e>>2]|0)+-1|0;k[e>>2]=d;if(d)return;if(ub[k[c+12>>2]&63](a)|0)return;c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);return}function pk(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+24>>2]|0;d=k[c>>2]|0;k[c>>2]=d+1;i[d>>0]=b;b=c+4|0;d=(k[b>>2]|0)+-1|0;k[b>>2]=d;if(d)return;if(ub[k[c+12>>2]&63](a)|0)return;c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);return}function qk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0;c=k[a+88+(b<<2)>>2]|0;if(!c){d=k[a>>2]|0;k[d+20>>2]=54;k[d+24>>2]=b;qb[k[d>>2]&127](a)}d=a+388|0;e=k[d>>2]|0;if((e|0)<0)f=0;else{g=k[a+384>>2]|0;h=0;l=0;while(1){n=(m[c+(k[g+(h<<2)>>2]<<1)>>1]|0)>255?1:l;if((h|0)<(e|0)){h=h+1|0;l=n}else{f=n;break}}}l=c+128|0;if(k[l>>2]|0)return f|0;h=a+24|0;e=k[h>>2]|0;g=k[e>>2]|0;k[e>>2]=g+1;i[g>>0]=-1;g=e+4|0;n=(k[g>>2]|0)+-1|0;k[g>>2]=n;if((n|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[h>>2]|0;n=k[e>>2]|0;k[e>>2]=n+1;i[n>>0]=-37;n=e+4|0;g=(k[n>>2]|0)+-1|0;k[n>>2]=g;if((g|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=(f|0)!=0;g=k[d>>2]|0;n=(e?(g<<1)+2|0:g+1|0)+3|0;g=k[h>>2]|0;o=k[g>>2]|0;k[g>>2]=o+1;i[o>>0]=n>>>8;o=g+4|0;p=(k[o>>2]|0)+-1|0;k[o>>2]=p;if((p|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}g=k[h>>2]|0;p=k[g>>2]|0;k[g>>2]=p+1;i[p>>0]=n;n=g+4|0;p=(k[n>>2]|0)+-1|0;k[n>>2]=p;if((p|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}g=k[h>>2]|0;p=k[g>>2]|0;k[g>>2]=p+1;i[p>>0]=(f<<4)+b;b=g+4|0;p=(k[b>>2]|0)+-1|0;k[b>>2]=p;if((p|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}a:do if((k[d>>2]|0)>=0){g=a+384|0;if(e)q=0;else{p=0;while(1){b=k[h>>2]|0;n=j[c+(k[(k[g>>2]|0)+(p<<2)>>2]<<1)>>1]&255;o=k[b>>2]|0;k[b>>2]=o+1;i[o>>0]=n;n=b+4|0;o=(k[n>>2]|0)+-1|0;k[n>>2]=o;if((o|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}if((p|0)<(k[d>>2]|0))p=p+1|0;else break a}}while(1){p=j[c+(k[(k[g>>2]|0)+(q<<2)>>2]<<1)>>1]|0;b=k[h>>2]|0;o=k[b>>2]|0;k[b>>2]=o+1;i[o>>0]=(p&65535)>>>8;o=b+4|0;n=(k[o>>2]|0)+-1|0;k[o>>2]=n;if((n|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[h>>2]|0;n=k[b>>2]|0;k[b>>2]=n+1;i[n>>0]=p;p=b+4|0;n=(k[p>>2]|0)+-1|0;k[p>>2]=n;if((n|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}if((q|0)<(k[d>>2]|0))q=q+1|0;else break}}while(0);k[l>>2]=1;return f|0}function rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0;d=(c|0)==0;c=d?b:b+16|0;e=k[(d?a+120+(b<<2)|0:a+136+(b<<2)|0)>>2]|0;if(!e){b=k[a>>2]|0;k[b+20>>2]=52;k[b+24>>2]=c;qb[k[b>>2]&127](a)}b=e+276|0;if(k[b>>2]|0)return;d=a+24|0;f=k[d>>2]|0;g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=-1;g=f+4|0;h=(k[g>>2]|0)+-1|0;k[g>>2]=h;if((h|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[d>>2]|0;h=k[f>>2]|0;k[f>>2]=h+1;i[h>>0]=-60;h=f+4|0;g=(k[h>>2]|0)+-1|0;k[h>>2]=g;if((g|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=(l[e+16>>0]|0)+((l[e+15>>0]|0)+((l[e+14>>0]|0)+((l[e+13>>0]|0)+((l[e+12>>0]|0)+((l[e+11>>0]|0)+((l[e+10>>0]|0)+((l[e+9>>0]|0)+((l[e+8>>0]|0)+((l[e+7>>0]|0)+((l[e+6>>0]|0)+((l[e+5>>0]|0)+((l[e+4>>0]|0)+((l[e+3>>0]|0)+((l[e+2>>0]|0)+(l[e+1>>0]|0)))))))))))))))|0;g=f+19|0;h=k[d>>2]|0;j=k[h>>2]|0;k[h>>2]=j+1;i[j>>0]=g>>>8;j=h+4|0;m=(k[j>>2]|0)+-1|0;k[j>>2]=m;if((m|0)==0?(ub[k[h+12>>2]&63](a)|0)==0:0){h=k[a>>2]|0;k[h+20>>2]=25;qb[k[h>>2]&127](a)}h=k[d>>2]|0;m=k[h>>2]|0;k[h>>2]=m+1;i[m>>0]=g;g=h+4|0;m=(k[g>>2]|0)+-1|0;k[g>>2]=m;if((m|0)==0?(ub[k[h+12>>2]&63](a)|0)==0:0){h=k[a>>2]|0;k[h+20>>2]=25;qb[k[h>>2]&127](a)}h=k[d>>2]|0;m=k[h>>2]|0;k[h>>2]=m+1;i[m>>0]=c;c=h+4|0;m=(k[c>>2]|0)+-1|0;k[c>>2]=m;if((m|0)==0?(ub[k[h+12>>2]&63](a)|0)==0:0){h=k[a>>2]|0;k[h+20>>2]=25;qb[k[h>>2]&127](a)}h=1;do{m=i[e+h>>0]|0;c=k[d>>2]|0;g=k[c>>2]|0;k[c>>2]=g+1;i[g>>0]=m;m=c+4|0;g=(k[m>>2]|0)+-1|0;k[m>>2]=g;if((g|0)==0?(ub[k[c+12>>2]&63](a)|0)==0:0){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}h=h+1|0}while((h|0)!=17);if((f|0)>0){h=0;do{c=i[e+17+h>>0]|0;g=k[d>>2]|0;m=k[g>>2]|0;k[g>>2]=m+1;i[m>>0]=c;c=g+4|0;m=(k[c>>2]|0)+-1|0;k[c>>2]=m;if((m|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}h=h+1|0}while((h|0)!=(f|0))}k[b>>2]=1;return}function sk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=a+24|0;d=k[c>>2]|0;e=k[d>>2]|0;k[d>>2]=e+1;i[e>>0]=-1;e=d+4|0;f=(k[e>>2]|0)+-1|0;k[e>>2]=f;if((f|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=k[c>>2]|0;f=k[d>>2]|0;k[d>>2]=f+1;i[f>>0]=b;b=d+4|0;f=(k[b>>2]|0)+-1|0;k[b>>2]=f;if((f|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=a+76|0;f=((k[d>>2]|0)*3|0)+8|0;b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=f>>>8;e=b+4|0;g=(k[e>>2]|0)+-1|0;k[e>>2]=g;if((g|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;g=k[b>>2]|0;k[b>>2]=g+1;i[g>>0]=f;f=b+4|0;g=(k[f>>2]|0)+-1|0;k[f>>2]=g;if((g|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=a+68|0;if(!((k[b>>2]|0)<=65535?(k[a+64>>2]|0)<=65535:0)){g=k[a>>2]|0;k[g+20>>2]=42;k[g+24>>2]=65535;qb[k[g>>2]&127](a)}g=k[c>>2]|0;f=k[a+72>>2]&255;e=k[g>>2]|0;k[g>>2]=e+1;i[e>>0]=f;f=g+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;if((e|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}g=k[b>>2]|0;b=k[c>>2]|0;e=k[b>>2]|0;k[b>>2]=e+1;i[e>>0]=g>>>8;e=b+4|0;f=(k[e>>2]|0)+-1|0;k[e>>2]=f;if((f|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[c>>2]|0;f=k[b>>2]|0;k[b>>2]=f+1;i[f>>0]=g;g=b+4|0;f=(k[g>>2]|0)+-1|0;k[g>>2]=f;if((f|0)==0?(ub[k[b+12>>2]&63](a)|0)==0:0){b=k[a>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](a)}b=k[a+64>>2]|0;f=k[c>>2]|0;g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=b>>>8;g=f+4|0;e=(k[g>>2]|0)+-1|0;k[g>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=b;b=f+4|0;e=(k[b>>2]|0)+-1|0;k[b>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;e=k[d>>2]&255;b=k[f>>2]|0;k[f>>2]=b+1;i[b>>0]=e;e=f+4|0;b=(k[e>>2]|0)+-1|0;k[e>>2]=b;if((b|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}if((k[d>>2]|0)<=0)return;f=0;b=k[a+84>>2]|0;while(1){e=k[c>>2]|0;g=k[b>>2]&255;h=k[e>>2]|0;k[e>>2]=h+1;i[h>>0]=g;g=e+4|0;h=(k[g>>2]|0)+-1|0;k[g>>2]=h;if((h|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[c>>2]|0;h=(k[b+8>>2]<<4)+(k[b+12>>2]|0)&255;g=k[e>>2]|0;k[e>>2]=g+1;i[g>>0]=h;h=e+4|0;g=(k[h>>2]|0)+-1|0;k[h>>2]=g;if((g|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[c>>2]|0;g=k[b+16>>2]&255;h=k[e>>2]|0;k[e>>2]=h+1;i[h>>0]=g;g=e+4|0;h=(k[g>>2]|0)+-1|0;k[g>>2]=h;if((h|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}f=f+1|0;if((f|0)>=(k[d>>2]|0))break;else b=b+88|0}return}function tk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+28|0;if(!((k[b>>2]|0)>>>0<=16777215?(k[a+32>>2]|0)>>>0<=16777215:0)){c=k[a>>2]|0;k[c+20>>2]=42;k[c+24>>2]=65500;qb[k[c>>2]&127](a)}c=k[a+56>>2]|0;d=a+380|0;e=k[d>>2]|0;f=ha(e,k[a+60>>2]|0)|0;if(c>>>0>=f>>>0){g=ha(k[b>>2]|0,e)|0;k[a+64>>2]=g;g=ha(e,k[a+32>>2]|0)|0;k[a+68>>2]=g;k[a+280>>2]=1;k[a+284>>2]=1;return}if(c<<1>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,2)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,2)|0;k[a+68>>2]=g;k[a+280>>2]=2;k[a+284>>2]=2;return}if((c*3|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,3)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,3)|0;k[a+68>>2]=g;k[a+280>>2]=3;k[a+284>>2]=3;return}if(c<<2>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,4)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,4)|0;k[a+68>>2]=g;k[a+280>>2]=4;k[a+284>>2]=4;return}if((c*5|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,5)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,5)|0;k[a+68>>2]=g;k[a+280>>2]=5;k[a+284>>2]=5;return}if((c*6|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,6)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,6)|0;k[a+68>>2]=g;k[a+280>>2]=6;k[a+284>>2]=6;return}if((c*7|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,7)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,7)|0;k[a+68>>2]=g;k[a+280>>2]=7;k[a+284>>2]=7;return}if(c<<3>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,8)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,8)|0;k[a+68>>2]=g;k[a+280>>2]=8;k[a+284>>2]=8;return}if((c*9|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,9)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,9)|0;k[a+68>>2]=g;k[a+280>>2]=9;k[a+284>>2]=9;return}if((c*10|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,10)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,10)|0;k[a+68>>2]=g;k[a+280>>2]=10;k[a+284>>2]=10;return}if((c*11|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,11)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,11)|0;k[a+68>>2]=g;k[a+280>>2]=11;k[a+284>>2]=11;return}if((c*12|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,12)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,12)|0;k[a+68>>2]=g;k[a+280>>2]=12;k[a+284>>2]=12;return}if((c*13|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,13)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,13)|0;k[a+68>>2]=g;k[a+280>>2]=13;k[a+284>>2]=13;return}if((c*14|0)>>>0>=f>>>0){g=pm(ha(k[b>>2]|0,e)|0,14)|0;k[a+64>>2]=g;g=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,14)|0;k[a+68>>2]=g;k[a+280>>2]=14;k[a+284>>2]=14;return}g=ha(k[b>>2]|0,e)|0;if((c*15|0)>>>0<f>>>0){f=pm(g,16)|0;k[a+64>>2]=f;f=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,16)|0;k[a+68>>2]=f;k[a+280>>2]=16;k[a+284>>2]=16;return}else{f=pm(g,15)|0;k[a+64>>2]=f;f=pm(ha(k[d>>2]|0,k[a+32>>2]|0)|0,15)|0;k[a+68>>2]=f;k[a+280>>2]=15;k[a+284>>2]=15;return}}function uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;c=r;r=r+2608|0;d=c+2560|0;e=c;f=nb[k[k[a+4>>2]>>2]&63](a,1,36)|0;k[a+392>>2]=f;k[f>>2]=35;k[f+4>>2]=36;k[f+8>>2]=37;k[f+16>>2]=0;g=(b|0)==0;if(g){tk(a);b=a+380|0;h=b;i=k[b>>2]|0}else{b=a+280|0;j=k[b>>2]|0;l=a+284|0;if((j|0)==(k[l>>2]|0))m=j;else{n=k[a>>2]|0;k[n+20>>2]=7;k[n+24>>2]=j;k[n+28>>2]=k[l>>2];qb[k[n>>2]&127](a);m=k[b>>2]|0}b=a+380|0;k[b>>2]=m;h=b;i=m}if((i+-1|0)>>>0>15){m=k[a>>2]|0;k[m+20>>2]=7;k[m+24>>2]=i;k[m+28>>2]=k[h>>2];qb[k[m>>2]&127](a);o=k[h>>2]|0}else o=i;switch(o|0){case 2:{k[a+384>>2]=121164;break}case 3:{k[a+384>>2]=121064;break}case 4:{k[a+384>>2]=120936;break}case 5:{k[a+384>>2]=120772;break}case 6:{k[a+384>>2]=120564;break}case 7:{k[a+384>>2]=120304;break}default:k[a+384>>2]=119984}o=k[h>>2]|0;i=(ha(o,o)|0)+-1|0;m=a+388|0;k[m>>2]=(o|0)<8?i:63;i=a+68|0;o=k[i>>2]|0;if(((o|0)!=0?(k[a+64>>2]|0)!=0:0)?(k[a+76>>2]|0)>=1:0)p=o;else{o=k[a>>2]|0;k[o+20>>2]=33;qb[k[o>>2]&127](a);p=k[i>>2]|0}if(!((p|0)<=65500?(k[a+64>>2]|0)<=65500:0)){p=k[a>>2]|0;k[p+20>>2]=42;k[p+24>>2]=65500;qb[k[p>>2]&127](a)}p=k[a+72>>2]|0;if((p+-8|0)>>>0>4){o=k[a>>2]|0;k[o+20>>2]=16;k[o+24>>2]=p;qb[k[o>>2]&127](a)}o=a+76|0;p=k[o>>2]|0;if((p|0)>10){b=k[a>>2]|0;k[b+20>>2]=27;k[b+24>>2]=p;k[b+28>>2]=10;qb[k[b>>2]&127](a);q=k[o>>2]|0}else q=p;p=a+272|0;k[p>>2]=1;b=a+276|0;k[b>>2]=1;n=a+84|0;if((q|0)>0){l=q;q=1;j=1;s=0;t=k[n>>2]|0;while(1){u=t+8|0;v=k[u>>2]|0;w=t+12|0;if((v+-1|0)>>>0<=3?(x=k[w>>2]|0,(x+-1|0)>>>0<=3):0){y=l;z=j;A=v;B=q;C=x}else{x=k[a>>2]|0;k[x+20>>2]=19;qb[k[x>>2]&127](a);y=k[o>>2]|0;z=k[p>>2]|0;A=k[u>>2]|0;B=k[b>>2]|0;C=k[w>>2]|0}j=(z|0)>(A|0)?z:A;k[p>>2]=j;w=(B|0)>(C|0)?B:C;k[b>>2]=w;s=s+1|0;if((s|0)>=(y|0)){D=y;E=w;break}else{l=y;q=w;t=t+88|0}}if((D|0)>0){D=a+280|0;t=a+224|0;q=a+284|0;y=a+64|0;l=0;s=k[n>>2]|0;while(1){k[s+4>>2]=l;n=k[D>>2]|0;C=(k[t>>2]|0)!=0?8:4;a:do if((n|0)>(C|0))F=1;else{B=k[p>>2]|0;j=k[s+8>>2]|0;A=1;while(1){z=A<<1;if((B|0)%(ha(z,j)|0)|0){F=A;break a}if((ha(z,n)|0)>(C|0)){F=z;break}else A=z}}while(0);A=ha(F,n)|0;j=s+36|0;k[j>>2]=A;B=k[q>>2]|0;b:do if((B|0)>(C|0))G=1;else{z=k[b>>2]|0;w=k[s+12>>2]|0;u=1;while(1){x=u<<1;if((z|0)%(ha(x,w)|0)|0){G=u;break b}if((ha(x,B)|0)>(C|0)){G=x;break}else u=x}}while(0);C=ha(G,B)|0;n=s+40|0;k[n>>2]=C;u=C<<1;if((A|0)<=(u|0)){w=A<<1;if((C|0)>(w|0))k[n>>2]=w}else k[j>>2]=u;u=s+8|0;w=ha(k[u>>2]|0,k[y>>2]|0)|0;C=pm(w,ha(k[h>>2]|0,k[p>>2]|0)|0)|0;k[s+28>>2]=C;C=s+12|0;w=ha(k[C>>2]|0,k[i>>2]|0)|0;z=pm(w,ha(k[h>>2]|0,k[b>>2]|0)|0)|0;k[s+32>>2]=z;z=ha(ha(k[u>>2]|0,k[y>>2]|0)|0,k[j>>2]|0)|0;u=pm(z,ha(k[h>>2]|0,k[p>>2]|0)|0)|0;k[s+44>>2]=u;u=ha(ha(k[C>>2]|0,k[i>>2]|0)|0,k[n>>2]|0)|0;n=pm(u,ha(k[h>>2]|0,k[b>>2]|0)|0)|0;k[s+48>>2]=n;k[s+52>>2]=0;l=l+1|0;if((l|0)>=(k[o>>2]|0))break;else s=s+88|0}H=k[b>>2]|0}else H=E}else H=1;E=pm(k[i>>2]|0,ha(k[h>>2]|0,H)|0)|0;k[a+288>>2]=E;E=a+204|0;H=k[E>>2]|0;if(H){h=a+200|0;if((k[h>>2]|0)<1){i=k[a>>2]|0;k[i+20>>2]=20;k[i+24>>2]=0;qb[k[i>>2]&127](a);I=k[E>>2]|0}else I=H;if((k[I+20>>2]|0)==0?(k[I+24>>2]|0)==63:0){k[a+268>>2]=0;H=k[o>>2]|0;if((H|0)>0){qr(d|0,0,((H|0)>1?H<<2:4)|0)|0;J=H;K=0}else{J=H;K=0}}else{k[a+268>>2]=1;H=k[o>>2]|0;if((H|0)>0){qr(e|0,-1,H<<8|0)|0;J=H;K=1}else{J=H;K=1}}if((k[h>>2]|0)<1){L=K;M=J}else{J=a+268|0;K=1;H=I;while(1){I=k[H>>2]|0;if((I+-1|0)>>>0>3){i=k[a>>2]|0;k[i+20>>2]=27;k[i+24>>2]=I;k[i+28>>2]=4;qb[k[i>>2]&127](a)}i=(I|0)>0;if(i){b=0;do{s=k[H+4+(b<<2)>>2]|0;if(!((s|0)>=0?(s|0)<(k[o>>2]|0):0)){l=k[a>>2]|0;k[l+20>>2]=20;k[l+24>>2]=K;qb[k[l>>2]&127](a)}do if((b|0)>0){if((s|0)>(k[H+4+(b+-1<<2)>>2]|0))break;l=k[a>>2]|0;k[l+20>>2]=20;k[l+24>>2]=K;qb[k[l>>2]&127](a)}while(0);b=b+1|0}while((b|0)!=(I|0))}b=k[H+20>>2]|0;j=k[H+24>>2]|0;A=k[H+28>>2]|0;B=k[H+32>>2]|0;do if(!(k[J>>2]|0)){if((j|0)!=63|(A|b|B|0)!=0){s=k[a>>2]|0;k[s+20>>2]=18;k[s+24>>2]=K;qb[k[s>>2]&127](a)}if(i){s=0;do{l=d+(k[H+4+(s<<2)>>2]<<2)|0;if(k[l>>2]|0){p=k[a>>2]|0;k[p+20>>2]=20;k[p+24>>2]=K;qb[k[p>>2]&127](a)}k[l>>2]=1;s=s+1|0}while((s|0)!=(I|0))}}else{if(!(b>>>0<=63?!(B>>>0>10|(A>>>0>10|((j|0)<(b|0)|(j|0)>63))):0)){s=k[a>>2]|0;k[s+20>>2]=18;k[s+24>>2]=K;qb[k[s>>2]&127](a)}s=(b|0)==0;do if(s){if(!j)break;l=k[a>>2]|0;k[l+20>>2]=18;k[l+24>>2]=K;qb[k[l>>2]&127](a)}else{if((I|0)==1)break;l=k[a>>2]|0;k[l+20>>2]=18;k[l+24>>2]=K;qb[k[l>>2]&127](a)}while(0);if(!i)break;l=(A|0)==0;p=(B|0)==(A+-1|0);y=0;do{G=k[H+4+(y<<2)>>2]|0;do if(s)N=0;else{if((k[e+(G<<8)>>2]|0)>=0){N=b;break}q=k[a>>2]|0;k[q+20>>2]=18;k[q+24>>2]=K;qb[k[q>>2]&127](a);N=b}while(0);c:do if((N|0)<=(j|0)){if(!p){if(l)O=N;else{q=N;while(1){F=k[a>>2]|0;k[F+20>>2]=18;k[F+24>>2]=K;qb[k[F>>2]&127](a);k[e+(G<<8)+(q<<2)>>2]=B;if((q|0)<(j|0))q=q+1|0;else break c}}while(1){q=e+(G<<8)+(O<<2)|0;if((k[q>>2]|0)>=0){F=k[a>>2]|0;k[F+20>>2]=18;k[F+24>>2]=K;qb[k[F>>2]&127](a)}k[q>>2]=B;if((O|0)<(j|0))O=O+1|0;else break c}}if(l){q=N;while(1){F=e+(G<<8)+(q<<2)|0;if((k[F>>2]|0)>=1){t=k[a>>2]|0;k[t+20>>2]=18;k[t+24>>2]=K;qb[k[t>>2]&127](a)}k[F>>2]=B;if((q|0)<(j|0))q=q+1|0;else break c}}else P=N;while(1){q=e+(G<<8)+(P<<2)|0;F=k[q>>2]|0;do if((F|0)<0){t=k[a>>2]|0;k[t+20>>2]=18;k[t+24>>2]=K;qb[k[t>>2]&127](a)}else{if((A|0)==(F|0))break;t=k[a>>2]|0;k[t+20>>2]=18;k[t+24>>2]=K;qb[k[t>>2]&127](a)}while(0);k[q>>2]=B;if((P|0)<(j|0))P=P+1|0;else break}}while(0);y=y+1|0}while((y|0)!=(I|0))}while(0);if((K|0)<(k[h>>2]|0)){K=K+1|0;H=H+36|0}else break}L=k[J>>2]|0;M=k[o>>2]|0}J=(M|0)>0;if(!L){if(J){L=M;H=0;while(1){if(!(k[d+(H<<2)>>2]|0)){K=k[a>>2]|0;k[K+20>>2]=46;qb[k[K>>2]&127](a);Q=k[o>>2]|0}else Q=L;H=H+1|0;if((H|0)>=(Q|0))break;else L=Q}}}else if(J){J=M;M=0;while(1){if((k[e+(M<<8)>>2]|0)<0){Q=k[a>>2]|0;k[Q+20>>2]=46;qb[k[Q>>2]&127](a);R=k[o>>2]|0}else R=J;M=M+1|0;if((M|0)>=(R|0))break;else J=R}}if((k[a+380>>2]|0)<8){R=k[E>>2]|0;if((k[h>>2]|0)>0){E=0;J=0;while(1){if((E|0)!=(J|0)){M=R+(J*36|0)|0;o=R+(E*36|0)|0;e=M+36|0;do{k[M>>2]=k[o>>2];M=M+4|0;o=o+4|0}while((M|0)<(e|0))}o=k[m>>2]|0;if((k[R+(J*36|0)+20>>2]|0)>(o|0))S=J;else{M=R+(J*36|0)+24|0;if((k[M>>2]|0)>(o|0))k[M>>2]=o;S=J+1|0}E=E+1|0;if((E|0)>=(k[h>>2]|0)){T=S;break}else J=S}}else T=0;k[h>>2]=T}}else{k[a+268>>2]=0;k[a+200>>2]=1}T=a+216|0;h=k[T>>2]|0;S=a+212|0;do if(!h)if(!(k[S>>2]|0)){if((k[a+268>>2]|0)==0?((k[a+380>>2]|0)+-2|0)>>>0>=6:0){U=0;break}k[T>>2]=1;U=1}else U=0;else{k[S>>2]=0;U=h}while(0);do if(!g){h=f+20|0;if(!U){k[h>>2]=2;break}else{k[h>>2]=1;break}}else k[f+20>>2]=0;while(0);k[f+32>>2]=0;k[f+24>>2]=0;g=k[a+200>>2]|0;if(!U){k[f+28>>2]=g;r=c;return}else{k[f+28>>2]=g<<1;r=c;return}}function vk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+392>>2]|0;c=b+20|0;a:do switch(k[c>>2]|0){case 0:{yk(a);zk(a);if(!(k[a+208>>2]|0)){qb[k[k[a+412>>2]>>2]&127](a);qb[k[k[a+416>>2]>>2]&127](a);rb[k[k[a+400>>2]>>2]&31](a,0)}qb[k[k[a+420>>2]>>2]&127](a);d=a+216|0;rb[k[k[a+424>>2]>>2]&31](a,k[d>>2]|0);rb[k[k[a+404>>2]>>2]&31](a,(k[b+28>>2]|0)>1?3:0);rb[k[k[a+396>>2]>>2]&31](a,0);e=b+12|0;if(!(k[d>>2]|0)){k[e>>2]=1;break a}else{k[e>>2]=0;break a}break}case 1:{yk(a);zk(a);if((k[a+364>>2]|0)==0?(k[a+372>>2]|0)!=0:0){k[c>>2]=2;e=b+24|0;k[e>>2]=(k[e>>2]|0)+1;f=11;break a}rb[k[k[a+424>>2]>>2]&31](a,1);rb[k[k[a+404>>2]>>2]&31](a,2);k[b+12>>2]=0;break}case 2:{f=11;break}default:{e=k[a>>2]|0;k[e+20>>2]=49;qb[k[e>>2]&127](a)}}while(0);if((f|0)==11){if(!(k[a+216>>2]|0)){yk(a);zk(a)}rb[k[k[a+424>>2]>>2]&31](a,0);rb[k[k[a+404>>2]>>2]&31](a,2);f=a+408|0;if(!(k[b+32>>2]|0))qb[k[(k[f>>2]|0)+4>>2]&127](a);qb[k[(k[f>>2]|0)+8>>2]&127](a);k[b+12>>2]=0}f=k[b+24>>2]|0;c=k[b+28>>2]|0;k[b+16>>2]=(f|0)==(c+-1|0)&1;b=k[a+8>>2]|0;if(!b)return;k[b+12>>2]=f;k[b+16>>2]=c;return}function wk(a){a=a|0;var b=0;k[(k[a+392>>2]|0)+12>>2]=0;b=a+408|0;qb[k[(k[b>>2]|0)+4>>2]&127](a);qb[k[(k[b>>2]|0)+8>>2]&127](a);return}function xk(a){a=a|0;var b=0,c=0,d=0;b=k[a+392>>2]|0;qb[k[(k[a+424>>2]|0)+8>>2]&127](a);c=b+20|0;switch(k[c>>2]|0){case 0:{k[c>>2]=2;if(!(k[a+216>>2]|0)){d=b+32|0;k[d>>2]=(k[d>>2]|0)+1}break}case 1:{k[c>>2]=2;break}case 2:{if(k[a+216>>2]|0)k[c>>2]=1;c=b+32|0;k[c>>2]=(k[c>>2]|0)+1;break}default:{}}c=b+24|0;k[c>>2]=(k[c>>2]|0)+1;return}function yk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+204>>2]|0;if(!b){c=a+76|0;d=k[c>>2]|0;if((d|0)>4){e=k[a>>2]|0;k[e+20>>2]=27;k[e+24>>2]=d;k[e+28>>2]=4;qb[k[e>>2]&127](a);f=k[c>>2]|0}else f=d;k[a+292>>2]=f;if((f|0)>0){f=a+84|0;d=0;do{k[a+296+(d<<2)>>2]=(k[f>>2]|0)+(d*88|0);d=d+1|0}while((d|0)<(k[c>>2]|0))}}else{c=k[(k[a+392>>2]|0)+32>>2]|0;d=k[b+(c*36|0)>>2]|0;k[a+292>>2]=d;if((d|0)>0){f=a+84|0;e=0;do{k[a+296+(e<<2)>>2]=(k[f>>2]|0)+((k[b+(c*36|0)+4+(e<<2)>>2]|0)*88|0);e=e+1|0}while((e|0)<(d|0))}if(k[a+268>>2]|0){k[a+364>>2]=k[b+(c*36|0)+20>>2];k[a+368>>2]=k[b+(c*36|0)+24>>2];k[a+372>>2]=k[b+(c*36|0)+28>>2];k[a+376>>2]=k[b+(c*36|0)+32>>2];return}}k[a+364>>2]=0;c=k[a+380>>2]|0;b=(ha(c,c)|0)+-1|0;k[a+368>>2]=b;k[a+372>>2]=0;k[a+376>>2]=0;return}function zk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;b=a+292|0;c=k[b>>2]|0;a:do if((c|0)!=1){if((c+-1|0)>>>0>3){d=k[a>>2]|0;k[d+20>>2]=27;k[d+24>>2]=c;k[d+28>>2]=4;qb[k[d>>2]&127](a)}d=a+380|0;e=pm(k[a+64>>2]|0,ha(k[d>>2]|0,k[a+272>>2]|0)|0)|0;k[a+312>>2]=e;e=pm(k[a+68>>2]|0,ha(k[d>>2]|0,k[a+276>>2]|0)|0)|0;k[a+316>>2]=e;e=a+320|0;k[e>>2]=0;if((k[b>>2]|0)>0){d=0;f=0;while(1){g=k[a+296+(f<<2)>>2]|0;h=k[g+8>>2]|0;k[g+56>>2]=h;i=k[g+12>>2]|0;k[g+60>>2]=i;j=ha(h,i)|0;k[g+64>>2]=j;l=ha(k[g+36>>2]|0,h)|0;k[g+68>>2]=l;l=((k[g+28>>2]|0)>>>0)%(h>>>0)|0;k[g+72>>2]=(l|0)==0?h:l;l=((k[g+32>>2]|0)>>>0)%(i>>>0)|0;k[g+76>>2]=(l|0)==0?i:l;if((d+j|0)>10){l=k[a>>2]|0;k[l+20>>2]=14;qb[k[l>>2]&127](a)}if((j|0)>0){l=j;while(1){j=k[e>>2]|0;k[e>>2]=j+1;k[a+324+(j<<2)>>2]=f;if((l|0)>1)l=l+-1|0;else break}}l=f+1|0;if((l|0)>=(k[b>>2]|0))break a;d=k[e>>2]|0;f=l}}}else{f=k[a+296>>2]|0;k[a+312>>2]=k[f+28>>2];e=k[f+32>>2]|0;k[a+316>>2]=e;k[f+56>>2]=1;k[f+60>>2]=1;k[f+64>>2]=1;k[f+68>>2]=k[f+36>>2];k[f+72>>2]=1;d=k[f+12>>2]|0;l=(e>>>0)%(d>>>0)|0;k[f+76>>2]=(l|0)==0?d:l;k[a+320>>2]=1;k[a+324>>2]=0}while(0);b=k[a+240>>2]|0;if((b|0)<=0)return;c=ha(k[a+312>>2]|0,b)|0;k[a+236>>2]=(c|0)<65535?c:65535;return}function Ak(a){a=a|0;var b=0;b=k[a+4>>2]|0;if(!b)return;rb[k[b+36>>2]&31](a,1);b=a+20|0;if(!(k[a+16>>2]|0)){k[b>>2]=100;return}else{k[b>>2]=200;k[a+312>>2]=0;return}}function Bk(a){a=a|0;var b=0,c=0;b=a+4|0;c=k[b>>2]|0;if(c)qb[k[c+40>>2]&127](a);k[b>>2]=0;k[a+20>>2]=0;return}function Ck(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,0,132)|0;k[b+128>>2]=0;return b|0}function Dk(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,0,280)|0;k[b+276>>2]=0;return b|0}function Ek(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0;d=a+20|0;e=k[d>>2]|0;if((e|0)!=100){f=k[a>>2]|0;k[f+20>>2]=21;k[f+24>>2]=e;qb[k[f>>2]&127](a)}f=a+88|0;e=k[f>>2]|0;if(!e){g=Ck(a)|0;k[f>>2]=g;h=g}else h=e;e=(c|0)==0;if(e){c=0;do{g=((ha(k[118948+(c<<2)>>2]|0,b)|0)+50|0)/100|0;f=(g|0)<1?1:g;j[h+(c<<1)>>1]=(f|0)>32767?32767:f&65535;c=c+1|0}while((c|0)!=64)}else{c=0;do{f=((ha(k[118948+(c<<2)>>2]|0,b)|0)+50|0)/100|0;g=(f|0)<1?1:f;f=(g|0)>32767?32767:g;j[h+(c<<1)>>1]=(f|0)>255?255:f&65535;c=c+1|0}while((c|0)!=64)}k[h+128>>2]=0;h=k[d>>2]|0;if((h|0)!=100){d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=h;qb[k[d>>2]&127](a)}d=a+92|0;h=k[d>>2]|0;if(!h){c=Ck(a)|0;k[d>>2]=c;i=c}else i=h;if(e){e=0;do{h=((ha(k[119204+(e<<2)>>2]|0,b)|0)+50|0)/100|0;c=(h|0)<1?1:h;j[i+(e<<1)>>1]=(c|0)>32767?32767:c&65535;e=e+1|0}while((e|0)!=64);l=i+128|0;k[l>>2]=0;return}else{e=0;do{c=((ha(k[119204+(e<<2)>>2]|0,b)|0)+50|0)/100|0;h=(c|0)<1?1:c;c=(h|0)>32767?32767:h;j[i+(e<<1)>>1]=(c|0)>255?255:c&65535;e=e+1|0}while((e|0)!=64);l=i+128|0;k[l>>2]=0;return}}function Fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=(b|0)<1?1:b;b=(d|0)>100?100:d;if((b|0)<50)e=5e3/(b|0)|0;else e=200-(b<<1)|0;Ek(a,e,c);return}
86
+function Gk(a){a=a|0;var b=0,c=0;b=k[a+20>>2]|0;if((b|0)!=100){c=k[a>>2]|0;k[c+20>>2]=21;k[c+24>>2]=b;qb[k[c>>2]&127](a)}c=a+84|0;if(!(k[c>>2]|0)){b=nb[k[k[a+4>>2]>>2]&63](a,0,880)|0;k[c>>2]=b}k[a+56>>2]=1;k[a+60>>2]=1;b=a+72|0;k[b>>2]=8;Ek(a,50,1);Jk(a,a+120|0,155857,155874);Jk(a,a+136|0,155886,155903);Jk(a,a+124|0,156065,156082);Jk(a,a+140|0,156094,156111);i[a+152>>0]=0;i[a+168>>0]=1;i[a+184>>0]=5;i[a+153>>0]=0;i[a+169>>0]=1;i[a+185>>0]=5;i[a+154>>0]=0;i[a+170>>0]=1;i[a+186>>0]=5;i[a+155>>0]=0;i[a+171>>0]=1;i[a+187>>0]=5;i[a+156>>0]=0;i[a+172>>0]=1;i[a+188>>0]=5;i[a+157>>0]=0;i[a+173>>0]=1;i[a+189>>0]=5;i[a+158>>0]=0;i[a+174>>0]=1;i[a+190>>0]=5;i[a+159>>0]=0;i[a+175>>0]=1;i[a+191>>0]=5;i[a+160>>0]=0;i[a+176>>0]=1;i[a+192>>0]=5;i[a+161>>0]=0;i[a+177>>0]=1;i[a+193>>0]=5;i[a+162>>0]=0;i[a+178>>0]=1;i[a+194>>0]=5;i[a+163>>0]=0;i[a+179>>0]=1;i[a+195>>0]=5;i[a+164>>0]=0;i[a+180>>0]=1;i[a+196>>0]=5;i[a+165>>0]=0;i[a+181>>0]=1;i[a+197>>0]=5;i[a+166>>0]=0;i[a+182>>0]=1;i[a+198>>0]=5;i[a+167>>0]=0;i[a+183>>0]=1;i[a+199>>0]=5;k[a+204>>2]=0;k[a+200>>2]=0;k[a+208>>2]=0;k[a+212>>2]=(k[b>>2]|0)>8&1;k[a+216>>2]=0;k[a+220>>2]=0;k[a+224>>2]=1;b=a+228|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;i[a+248>>0]=1;i[a+249>>0]=1;i[a+250>>0]=0;j[a+252>>1]=1;j[a+254>>1]=1;k[a+260>>2]=0;Hk(a);return}function Hk(a){a=a|0;var b=0,c=0,d=0,e=0;switch(k[a+40>>2]|0){case 0:{b=k[a+20>>2]|0;if((b|0)!=100){c=k[a>>2]|0;k[c+20>>2]=21;k[c+24>>2]=b;qb[k[c>>2]&127](a)}k[a+80>>2]=0;k[a+244>>2]=0;k[a+256>>2]=0;c=k[a+36>>2]|0;b=a+76|0;k[b>>2]=c;if((c+-1|0)>>>0>9){d=k[a>>2]|0;k[d+20>>2]=27;k[d+24>>2]=c;k[d+28>>2]=10;qb[k[d>>2]&127](a);e=k[b>>2]|0}else e=c;if((e|0)<=0)return;c=k[a+84>>2]|0;b=0;do{k[c+(b*88|0)>>2]=b;k[c+(b*88|0)+8>>2]=1;k[c+(b*88|0)+12>>2]=1;k[c+(b*88|0)+16>>2]=0;k[c+(b*88|0)+20>>2]=0;k[c+(b*88|0)+24>>2]=0;b=b+1|0}while((b|0)!=(e|0));return}case 1:{e=k[a+20>>2]|0;if((e|0)!=100){b=k[a>>2]|0;k[b+20>>2]=21;k[b+24>>2]=e;qb[k[b>>2]&127](a)}k[a+80>>2]=1;k[a+256>>2]=0;k[a+244>>2]=1;k[a+76>>2]=1;b=k[a+84>>2]|0;k[b>>2]=1;k[b+8>>2]=1;k[b+12>>2]=1;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;return}case 2:{b=k[a+20>>2]|0;if((b|0)!=100){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=b;qb[k[e>>2]&127](a)}k[a+80>>2]=3;k[a+256>>2]=0;k[a+244>>2]=1;k[a+76>>2]=3;e=k[a+84>>2]|0;k[e>>2]=1;k[e+8>>2]=2;k[e+12>>2]=2;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+88>>2]=2;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=1;k[e+108>>2]=1;k[e+112>>2]=1;k[e+176>>2]=3;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=1;k[e+196>>2]=1;k[e+200>>2]=1;return}case 3:{e=k[a+20>>2]|0;if((e|0)!=100){b=k[a>>2]|0;k[b+20>>2]=21;k[b+24>>2]=e;qb[k[b>>2]&127](a)}k[a+80>>2]=3;k[a+256>>2]=0;k[a+244>>2]=1;k[a+76>>2]=3;b=k[a+84>>2]|0;k[b>>2]=1;k[b+8>>2]=2;k[b+12>>2]=2;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+88>>2]=2;k[b+96>>2]=1;k[b+100>>2]=1;k[b+104>>2]=1;k[b+108>>2]=1;k[b+112>>2]=1;k[b+176>>2]=3;k[b+184>>2]=1;k[b+188>>2]=1;k[b+192>>2]=1;k[b+196>>2]=1;k[b+200>>2]=1;return}case 4:{b=k[a+20>>2]|0;if((b|0)!=100){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=b;qb[k[e>>2]&127](a)}k[a+80>>2]=4;k[a+244>>2]=0;k[a+256>>2]=1;k[a+76>>2]=4;e=k[a+84>>2]|0;k[e>>2]=67;k[e+8>>2]=1;k[e+12>>2]=1;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+88>>2]=77;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=0;k[e+108>>2]=0;k[e+112>>2]=0;k[e+176>>2]=89;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=0;k[e+196>>2]=0;k[e+200>>2]=0;k[e+264>>2]=75;k[e+272>>2]=1;k[e+276>>2]=1;k[e+280>>2]=0;k[e+284>>2]=0;k[e+288>>2]=0;return}case 5:{e=k[a+20>>2]|0;if((e|0)!=100){b=k[a>>2]|0;k[b+20>>2]=21;k[b+24>>2]=e;qb[k[b>>2]&127](a)}k[a+80>>2]=5;k[a+244>>2]=0;k[a+256>>2]=1;k[a+76>>2]=4;b=k[a+84>>2]|0;k[b>>2]=1;k[b+8>>2]=2;k[b+12>>2]=2;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+88>>2]=2;k[b+96>>2]=1;k[b+100>>2]=1;k[b+104>>2]=1;k[b+108>>2]=1;k[b+112>>2]=1;k[b+176>>2]=3;k[b+184>>2]=1;k[b+188>>2]=1;k[b+192>>2]=1;k[b+196>>2]=1;k[b+200>>2]=1;k[b+264>>2]=4;k[b+272>>2]=2;k[b+276>>2]=2;k[b+280>>2]=0;k[b+284>>2]=0;k[b+288>>2]=0;return}case 6:{b=k[a+20>>2]|0;if((b|0)!=100){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=b;qb[k[e>>2]&127](a)}k[a+80>>2]=6;k[a+256>>2]=0;k[a+244>>2]=1;i[a+248>>0]=2;k[a+76>>2]=3;e=k[a+84>>2]|0;k[e>>2]=114;k[e+8>>2]=1;k[e+12>>2]=1;k[e+16>>2]=0;b=(k[a+260>>2]|0)==1&1;k[e+20>>2]=b;k[e+24>>2]=b;k[e+88>>2]=103;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=0;k[e+108>>2]=0;k[e+112>>2]=0;k[e+176>>2]=98;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=0;k[e+196>>2]=b;k[e+200>>2]=b;return}case 7:{b=k[a+20>>2]|0;if((b|0)!=100){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=b;qb[k[e>>2]&127](a)}k[a+80>>2]=7;k[a+256>>2]=0;k[a+244>>2]=1;i[a+248>>0]=2;k[a+76>>2]=3;e=k[a+84>>2]|0;k[e>>2]=1;k[e+8>>2]=2;k[e+12>>2]=2;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+88>>2]=34;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=1;k[e+108>>2]=1;k[e+112>>2]=1;k[e+176>>2]=35;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=1;k[e+196>>2]=1;k[e+200>>2]=1;return}default:{e=k[a>>2]|0;k[e+20>>2]=10;qb[k[e>>2]&127](a);return}}}function Ik(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a+20>>2]|0;if((c|0)!=100){d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=c;qb[k[d>>2]&127](a)}k[a+80>>2]=b;d=a+244|0;k[d>>2]=0;c=a+256|0;k[c>>2]=0;switch(b|0){case 0:{b=k[a+36>>2]|0;e=a+76|0;k[e>>2]=b;if((b+-1|0)>>>0>9){f=k[a>>2]|0;k[f+20>>2]=27;k[f+24>>2]=b;k[f+28>>2]=10;qb[k[f>>2]&127](a);g=k[e>>2]|0}else g=b;if((g|0)<=0)return;b=k[a+84>>2]|0;e=0;do{k[b+(e*88|0)>>2]=e;k[b+(e*88|0)+8>>2]=1;k[b+(e*88|0)+12>>2]=1;k[b+(e*88|0)+16>>2]=0;k[b+(e*88|0)+20>>2]=0;k[b+(e*88|0)+24>>2]=0;e=e+1|0}while((e|0)<(g|0));return}case 1:{k[d>>2]=1;k[a+76>>2]=1;g=k[a+84>>2]|0;k[g>>2]=1;k[g+8>>2]=1;k[g+12>>2]=1;k[g+16>>2]=0;k[g+20>>2]=0;k[g+24>>2]=0;return}case 2:{k[c>>2]=1;k[a+76>>2]=3;g=k[a+84>>2]|0;k[g>>2]=82;k[g+8>>2]=1;k[g+12>>2]=1;k[g+16>>2]=0;e=(k[a+260>>2]|0)==1&1;k[g+20>>2]=e;k[g+24>>2]=e;k[g+88>>2]=71;k[g+96>>2]=1;k[g+100>>2]=1;k[g+104>>2]=0;k[g+108>>2]=0;k[g+112>>2]=0;k[g+176>>2]=66;k[g+184>>2]=1;k[g+188>>2]=1;k[g+192>>2]=0;k[g+196>>2]=e;k[g+200>>2]=e;return}case 3:{k[d>>2]=1;k[a+76>>2]=3;e=k[a+84>>2]|0;k[e>>2]=1;k[e+8>>2]=2;k[e+12>>2]=2;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+88>>2]=2;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=1;k[e+108>>2]=1;k[e+112>>2]=1;k[e+176>>2]=3;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=1;k[e+196>>2]=1;k[e+200>>2]=1;return}case 4:{k[c>>2]=1;k[a+76>>2]=4;e=k[a+84>>2]|0;k[e>>2]=67;k[e+8>>2]=1;k[e+12>>2]=1;k[e+16>>2]=0;k[e+20>>2]=0;k[e+24>>2]=0;k[e+88>>2]=77;k[e+96>>2]=1;k[e+100>>2]=1;k[e+104>>2]=0;k[e+108>>2]=0;k[e+112>>2]=0;k[e+176>>2]=89;k[e+184>>2]=1;k[e+188>>2]=1;k[e+192>>2]=0;k[e+196>>2]=0;k[e+200>>2]=0;k[e+264>>2]=75;k[e+272>>2]=1;k[e+276>>2]=1;k[e+280>>2]=0;k[e+284>>2]=0;k[e+288>>2]=0;return}case 5:{k[c>>2]=1;k[a+76>>2]=4;c=k[a+84>>2]|0;k[c>>2]=1;k[c+8>>2]=2;k[c+12>>2]=2;k[c+16>>2]=0;k[c+20>>2]=0;k[c+24>>2]=0;k[c+88>>2]=2;k[c+96>>2]=1;k[c+100>>2]=1;k[c+104>>2]=1;k[c+108>>2]=1;k[c+112>>2]=1;k[c+176>>2]=3;k[c+184>>2]=1;k[c+188>>2]=1;k[c+192>>2]=1;k[c+196>>2]=1;k[c+200>>2]=1;k[c+264>>2]=4;k[c+272>>2]=2;k[c+276>>2]=2;k[c+280>>2]=0;k[c+284>>2]=0;k[c+288>>2]=0;return}case 6:{k[d>>2]=1;i[a+248>>0]=2;k[a+76>>2]=3;c=k[a+84>>2]|0;k[c>>2]=114;k[c+8>>2]=1;k[c+12>>2]=1;k[c+16>>2]=0;e=(k[a+260>>2]|0)==1&1;k[c+20>>2]=e;k[c+24>>2]=e;k[c+88>>2]=103;k[c+96>>2]=1;k[c+100>>2]=1;k[c+104>>2]=0;k[c+108>>2]=0;k[c+112>>2]=0;k[c+176>>2]=98;k[c+184>>2]=1;k[c+188>>2]=1;k[c+192>>2]=0;k[c+196>>2]=e;k[c+200>>2]=e;return}case 7:{k[d>>2]=1;i[a+248>>0]=2;k[a+76>>2]=3;d=k[a+84>>2]|0;k[d>>2]=1;k[d+8>>2]=2;k[d+12>>2]=2;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+88>>2]=34;k[d+96>>2]=1;k[d+100>>2]=1;k[d+104>>2]=1;k[d+108>>2]=1;k[d+112>>2]=1;k[d+176>>2]=35;k[d+184>>2]=1;k[d+188>>2]=1;k[d+192>>2]=1;k[d+196>>2]=1;k[d+200>>2]=1;return}default:{d=k[a>>2]|0;k[d+20>>2]=11;qb[k[d>>2]&127](a);return}}}function Jk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0;e=k[b>>2]|0;if(!e){f=Dk(a)|0;k[b>>2]=f;g=f}else g=e;e=g;g=c;f=e+17|0;do{i[e>>0]=i[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(f|0));g=(l[c+16>>0]|0)+((l[c+15>>0]|0)+((l[c+14>>0]|0)+((l[c+13>>0]|0)+((l[c+12>>0]|0)+((l[c+11>>0]|0)+((l[c+10>>0]|0)+((l[c+9>>0]|0)+((l[c+8>>0]|0)+((l[c+7>>0]|0)+((l[c+6>>0]|0)+((l[c+5>>0]|0)+((l[c+4>>0]|0)+((l[c+3>>0]|0)+((l[c+2>>0]|0)+(l[c+1>>0]|0)))))))))))))))|0;if((g+-1|0)>>>0<=255){h=k[b>>2]|0;j=h+17|0;wr(j|0,d|0,g|0)|0;m=k[b>>2]|0;n=m+276|0;k[n>>2]=0;return}c=k[a>>2]|0;k[c+20>>2]=9;qb[k[c>>2]&127](a);h=k[b>>2]|0;j=h+17|0;wr(j|0,d|0,g|0)|0;m=k[b>>2]|0;n=m+276|0;k[n>>2]=0;return}function Kk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;if(!b)c=a;else{b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a);c=a}b=a+4|0;d=nb[k[k[b>>2]>>2]&63](c,1,64)|0;k[a+400>>2]=d;k[d>>2]=9;e=d+4|0;if(!(k[(k[a+416>>2]|0)+8>>2]|0)){k[e>>2]=2;f=a+76|0;if((k[f>>2]|0)<=0)return;g=a+280|0;h=a+272|0;i=a+276|0;j=d+8|0;l=0;m=k[a+84>>2]|0;while(1){n=ha(k[g>>2]|0,k[m+28>>2]|0)|0;o=ha(n,k[h>>2]|0)|0;n=xb[k[(k[b>>2]|0)+8>>2]&63](c,1,(o|0)/(k[m+8>>2]|0)|0,k[i>>2]|0)|0;k[j+(l<<2)>>2]=n;l=l+1|0;if((l|0)>=(k[f>>2]|0))break;else m=m+88|0}return}k[e>>2]=1;e=k[a+276>>2]|0;m=a+76|0;f=ha(e*20|0,k[m>>2]|0)|0;l=nb[k[k[b>>2]>>2]&63](c,1,f)|0;f=k[a+84>>2]|0;if((k[m>>2]|0)<=0)return;j=a+280|0;i=a+272|0;a=e*3|0;h=e*12|0;g=e*5|0;n=e<<1;o=e<<2;if((e|0)>0){p=0;q=f;r=l}else{s=0;t=f;f=l;while(1){l=ha(k[j>>2]|0,k[t+28>>2]|0)|0;u=ha(l,k[i>>2]|0)|0;l=f+(e<<2)|0;wr(l|0,xb[k[(k[b>>2]|0)+8>>2]&63](c,1,(u|0)/(k[t+8>>2]|0)|0,a)|0,h|0)|0;k[d+8+(s<<2)>>2]=l;s=s+1|0;if((s|0)>=(k[m>>2]|0))break;else{t=t+88|0;f=f+(g<<2)|0}}return}while(1){f=ha(k[j>>2]|0,k[q+28>>2]|0)|0;t=ha(f,k[i>>2]|0)|0;f=xb[k[(k[b>>2]|0)+8>>2]&63](c,1,(t|0)/(k[q+8>>2]|0)|0,a)|0;t=r+(e<<2)|0;wr(t|0,f|0,h|0)|0;s=0;do{k[r+(s<<2)>>2]=k[f+(s+n<<2)>>2];k[r+(s+o<<2)>>2]=k[f+(s<<2)>>2];s=s+1|0}while((s|0)!=(e|0));k[d+8+(p<<2)>>2]=t;p=p+1|0;if((p|0)>=(k[m>>2]|0))break;else{q=q+88|0;r=r+(g<<2)|0}}return}function Lk(a,b){a=a|0;b=b|0;var c=0;c=k[a+400>>2]|0;if(b){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a)}k[c+48>>2]=k[a+32>>2];k[c+52>>2]=0;k[c+56>>2]=0;k[c+60>>2]=k[a+276>>2]<<1;return}function Mk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;h=k[a+400>>2]|0;i=a+276|0;j=(k[i>>2]|0)*3|0;l=h+48|0;if((k[f>>2]|0)>>>0>=g>>>0)return;m=h+60|0;n=h+52|0;o=a+412|0;p=h+8|0;q=a+32|0;r=a+76|0;s=a+28|0;t=a+416|0;u=h+56|0;while(1){v=k[c>>2]|0;if(v>>>0>=d>>>0){if(k[l>>2]|0){w=29;break}x=k[n>>2]|0;y=k[m>>2]|0;if((x|0)<(y|0)){z=k[r>>2]|0;if((z|0)>0){A=x;B=y;C=z;z=0;while(1){D=k[h+8+(z<<2)>>2]|0;E=k[s>>2]|0;if((A|0)<(B|0)){F=A+-1|0;G=A;do{rm(D,F,D,G,1,E);G=G+1|0}while((G|0)!=(B|0));H=k[r>>2]|0}else H=C;G=z+1|0;if((G|0)>=(H|0))break;A=k[n>>2]|0;B=k[m>>2]|0;C=H;z=G}I=k[m>>2]|0}else I=y;k[n>>2]=I;w=25}else{J=x;K=y;w=24}}else{z=d-v|0;C=k[n>>2]|0;B=(k[m>>2]|0)-C|0;A=B>>>0<z>>>0?B:z;pb[k[(k[o>>2]|0)+4>>2]&63](a,b+(v<<2)|0,p,C,A);if((k[l>>2]|0)==(k[q>>2]|0)?(C=k[r>>2]|0,(C|0)>0):0){z=k[i>>2]|0;B=C;C=0;while(1){if((z|0)<1){L=B;M=z}else{G=h+8+(C<<2)|0;E=1;while(1){D=k[G>>2]|0;rm(D,0,D,0-E|0,1,k[s>>2]|0);D=k[i>>2]|0;if((E|0)<(D|0))E=E+1|0;else{N=D;break}}L=k[r>>2]|0;M=N}C=C+1|0;if((C|0)>=(L|0))break;else{z=M;B=L}}}k[c>>2]=(k[c>>2]|0)+A;B=(k[n>>2]|0)+A|0;k[n>>2]=B;k[l>>2]=(k[l>>2]|0)-A;J=B;K=k[m>>2]|0;w=24}if((w|0)==24?(w=0,(J|0)==(K|0)):0)w=25;if((w|0)==25){w=0;pb[k[(k[t>>2]|0)+4>>2]&63](a,p,k[u>>2]|0,e,k[f>>2]|0);k[f>>2]=(k[f>>2]|0)+1;B=k[i>>2]|0;z=(k[u>>2]|0)+B|0;k[u>>2]=(z|0)<(j|0)?z:0;z=k[n>>2]|0;if((z|0)<(j|0))O=z;else{k[n>>2]=0;O=0}k[m>>2]=B+O}if((k[f>>2]|0)>>>0>=g>>>0){w=29;break}}if((w|0)==29)return}function Nk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;h=k[a+400>>2]|0;i=k[c>>2]|0;if(i>>>0>=d>>>0)return;j=a+276|0;l=h+52|0;m=a+412|0;n=h+8|0;o=h+48|0;p=a+76|0;q=a+28|0;r=a+416|0;s=i;while(1){if((k[f>>2]|0)>>>0>=g>>>0){t=28;break}i=d-s|0;u=k[l>>2]|0;v=(k[j>>2]|0)-u|0;w=v>>>0<i>>>0?v:i;pb[k[(k[m>>2]|0)+4>>2]&63](a,b+(s<<2)|0,n,u,w);k[c>>2]=(k[c>>2]|0)+w;u=(k[l>>2]|0)+w|0;k[l>>2]=u;i=k[o>>2]|0;k[o>>2]=i-w;v=k[j>>2]|0;if(!((i|0)==(w|0)&(u|0)<(v|0))){if((u|0)==(v|0))t=15}else{w=k[p>>2]|0;if((w|0)>0){i=u;u=v;x=w;w=0;while(1){y=k[h+8+(w<<2)>>2]|0;z=k[q>>2]|0;if((i|0)<(u|0)){A=i+-1|0;B=i;do{rm(y,A,y,B,1,z);B=B+1|0}while((B|0)!=(u|0));C=k[p>>2]|0}else C=x;B=w+1|0;if((B|0)>=(C|0))break;i=k[l>>2]|0;u=k[j>>2]|0;x=C;w=B}D=k[j>>2]|0}else D=v;k[l>>2]=D;t=15}if((t|0)==15){t=0;pb[k[(k[r>>2]|0)+4>>2]&63](a,n,0,e,k[f>>2]|0);k[l>>2]=0;k[f>>2]=(k[f>>2]|0)+1}if((k[o>>2]|0)==0?(w=k[f>>2]|0,w>>>0<g>>>0):0){E=w;t=19;break}s=k[c>>2]|0;if(s>>>0>=d>>>0){t=28;break}}if((t|0)==19){d=k[p>>2]|0;a:do if((d|0)>0){s=a+284|0;c=E;o=d;l=0;n=k[a+84>>2]|0;while(1){r=ha(k[n+40>>2]|0,k[n+12>>2]|0)|0;D=(r|0)/(k[s>>2]|0)|0;r=k[e+(l<<2)>>2]|0;j=ha(k[n+36>>2]|0,k[n+28>>2]|0)|0;C=ha(c,D)|0;q=ha(D,g)|0;if((C|0)<(q|0)){D=C+-1|0;h=C;do{rm(r,D,r,h,1,j);h=h+1|0}while((h|0)!=(q|0));F=k[p>>2]|0}else F=o;q=l+1|0;if((q|0)>=(F|0))break a;c=k[f>>2]|0;o=F;l=q;n=n+88|0}}while(0);k[f>>2]=g;return}else if((t|0)==28)return}function Ok(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;b=nb[k[k[a+4>>2]>>2]&63](a,1,112)|0;k[a+416>>2]=b;k[b>>2]=38;k[b+4>>2]=1;c=b+8|0;k[c>>2]=0;if(k[a+220>>2]|0){d=k[a>>2]|0;k[d+20>>2]=26;qb[k[d>>2]&127](a)}d=a+76|0;if((k[d>>2]|0)<=0)return;e=a+280|0;f=a+284|0;g=a+272|0;h=a+276|0;j=b+52|0;l=a+228|0;m=b+12|0;n=0;o=k[a+84>>2]|0;p=1;while(1){q=ha(k[o+36>>2]|0,k[o+8>>2]|0)|0;r=(q|0)/(k[e>>2]|0)|0;q=ha(k[o+40>>2]|0,k[o+12>>2]|0)|0;s=(q|0)/(k[f>>2]|0)|0;q=k[g>>2]|0;t=k[h>>2]|0;k[j+(n<<2)>>2]=s;u=(t|0)==(s|0);do if((q|0)==(r|0)&u){v=m+(n<<2)|0;if(!(k[l>>2]|0)){k[v>>2]=6;w=p;break}else{k[v>>2]=5;k[c>>2]=1;w=p;break}}else{v=(q|0)==(r<<1|0);if(v&u){k[m+(n<<2)>>2]=7;w=0;break}if(v&(t|0)==(s<<1|0)){v=m+(n<<2)|0;if(!(k[l>>2]|0)){k[v>>2]=9;w=p;break}else{k[v>>2]=8;k[c>>2]=1;w=p;break}}if(((q|0)%(r|0)|0|0)==0?((t|0)%(s|0)|0|0)==0:0){k[m+(n<<2)>>2]=10;i[b+(n+92)>>0]=(q|0)/(r|0)|0;i[b+(n+102)>>0]=(t|0)/(s|0)|0;w=0;break}v=k[a>>2]|0;k[v+20>>2]=39;qb[k[v>>2]&127](a);w=p}while(0);n=n+1|0;if((n|0)>=(k[d>>2]|0)){x=w;break}else{o=o+88|0;p=w}}if((x|0)!=0|(k[l>>2]|0)==0)return;l=k[a>>2]|0;k[l+20>>2]=101;rb[k[l+4>>2]&31](a,0);return}function Pk(a){a=a|0;return}function Qk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=k[a+416>>2]|0;g=a+76|0;if((k[g>>2]|0)<=0)return;h=0;i=k[a+84>>2]|0;while(1){j=(k[d+(h<<2)>>2]|0)+((ha(k[f+52+(h<<2)>>2]|0,e)|0)<<2)|0;Ab[k[f+12+(h<<2)>>2]&31](a,i,(k[b+(h<<2)>>2]|0)+(c<<2)|0,j);h=h+1|0;if((h|0)>=(k[g>>2]|0))break;else i=i+88|0}return}function Rk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;e=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;b=a+276|0;f=k[b>>2]|0;g=k[a+28>>2]|0;if((f|0)>-2&(e-g|0)>0){h=g+-1|0;j=h-e|0;m=e+2-g+((j|0)>-2?j:-2)|0;j=f+1|0;n=0;while(1){o=k[c+(n+-1<<2)>>2]|0;qr(o+g|0,i[o+h>>0]|0,m|0)|0;if((n|0)==(j|0))break;else n=n+1|0}p=k[b>>2]|0}else p=f;f=k[a+228>>2]|0;a=65536-(f<<9)|0;n=f<<6;if((p|0)<=0)return;p=e+-2|0;if(!p){f=0;do{j=k[d+(f<<2)>>2]|0;m=k[c+(f<<2)>>2]|0;h=k[c+(f+-1<<2)>>2]|0;f=f+1|0;g=k[c+(f<<2)>>2]|0;o=(l[g>>0]|0)+(l[h>>0]|0)|0;q=l[m>>0]|0;r=o+q|0;s=m+1|0;m=(l[g+1>>0]|0)+(l[h+1>>0]|0)+(l[s>>0]|0)|0;h=((ha(q,a)|0)+32768+(ha(r+o+m|0,n)|0)|0)>>>16&255;i[j>>0]=h;h=l[s>>0]|0;s=((ha(h,a)|0)+32768+(ha(r-h+(m<<1)|0,n)|0)|0)>>>16&255;i[j+1>>0]=s}while((f|0)<(k[b>>2]|0));return}f=e+-1|0;e=0;do{s=k[d+(e<<2)>>2]|0;j=k[c+(e<<2)>>2]|0;m=k[c+(e+-1<<2)>>2]|0;e=e+1|0;h=k[c+(e<<2)>>2]|0;r=m+1|0;o=h+1|0;q=(l[h>>0]|0)+(l[m>>0]|0)|0;m=l[j>>0]|0;h=q+m|0;g=j+1|0;t=(l[o>>0]|0)+(l[r>>0]|0)+(l[g>>0]|0)|0;u=((ha(m,a)|0)+32768+(ha(h+q+t|0,n)|0)|0)>>>16&255;i[s>>0]=u;u=s+f|0;q=s;s=r;r=o;o=p;m=t;t=g;g=h;while(1){q=q+1|0;h=l[t>>0]|0;t=t+1|0;s=s+1|0;r=r+1|0;v=(l[r>>0]|0)+(l[s>>0]|0)+(l[t>>0]|0)|0;w=((ha(h,a)|0)+32768+(ha(g+m-h+v|0,n)|0)|0)>>>16&255;i[q>>0]=w;o=o+-1|0;if(!o){x=v;y=m;break}else{w=m;m=v;g=w}}g=l[j+f>>0]|0;m=((ha(g,a)|0)+32768+(ha(y-g+(x<<1)|0,n)|0)|0)>>>16&255;i[u>>0]=m}while((e|0)<(k[b>>2]|0));return}function Sk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=a+276|0;f=a+28|0;rm(c,0,d,0,k[e>>2]|0,k[f>>2]|0);c=k[e>>2]|0;e=k[f>>2]|0;f=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;if(!((c|0)>0&(f-e|0)>0))return;b=e+-1|0;a=b-f|0;g=2-e+f+((a|0)>-2?a:-2)|0;a=0;do{f=k[d+(a<<2)>>2]|0;qr(f+e|0,i[f+b>>0]|0,g|0)|0;a=a+1|0}while((a|0)!=(c|0));return}function Tk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;e=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;b=a+276|0;f=k[b>>2]|0;g=k[a+28>>2]|0;a=e<<1;if((f|0)>0&(a-g|0)>0){h=g+-1|0;j=h-a|0;m=a+2-g+((j|0)>-2?j:-2)|0;j=0;do{a=k[c+(j<<2)>>2]|0;qr(a+g|0,i[a+h>>0]|0,m|0)|0;j=j+1|0}while((j|0)!=(f|0));n=k[b>>2]|0}else n=f;if((n|0)<=0)return;if(!e){f=0;do f=f+1|0;while((f|0)<(n|0));return}else o=0;do{n=0;f=k[c+(o<<2)>>2]|0;j=0;m=k[d+(o<<2)>>2]|0;while(1){i[m>>0]=((l[f>>0]|0)+n+(l[f+1>>0]|0)|0)>>>1;j=j+1|0;if((j|0)==(e|0))break;else{n=n^1;f=f+2|0;m=m+1|0}}o=o+1|0}while((o|0)<(k[b>>2]|0));return}function Uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;e=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;b=a+276|0;f=k[b>>2]|0;g=k[a+28>>2]|0;h=e<<1;if((f|0)>-2&(h-g|0)>0){j=g+-1|0;m=j-h|0;n=h+2-g+((m|0)>-2?m:-2)|0;m=f+1|0;h=0;while(1){o=k[c+(h+-1<<2)>>2]|0;qr(o+g|0,i[o+j>>0]|0,n|0)|0;if((h|0)==(m|0))break;else h=h+1|0}p=k[b>>2]|0}else p=f;f=k[a+228>>2]|0;a=(ha(f,-80)|0)+16384|0;h=f<<4;if((p|0)<=0)return;p=e+-2|0;f=e+-1|0;m=e<<1;e=m+-3|0;n=m+-3|0;j=m+-3|0;m=0;g=0;while(1){o=k[d+(g<<2)>>2]|0;q=k[c+(m<<2)>>2]|0;r=k[c+((m|1)<<2)>>2]|0;s=k[c+(m+-1<<2)>>2]|0;m=m+2|0;t=k[c+(m<<2)>>2]|0;u=l[q>>0]|0;v=l[r>>0]|0;w=l[s>>0]|0;x=l[t>>0]|0;y=q+2|0;z=r+2|0;A=s+2|0;B=t+2|0;C=((ha((l[q+1>>0]|0)+u+v+(l[r+1>>0]|0)|0,a)|0)+32768+(ha(x+w+(l[A>>0]|0)+(l[B>>0]|0)+(v+u+w+(l[s+1>>0]|0)+x+(l[t+1>>0]|0)+(l[y>>0]|0)+(l[z>>0]|0)<<1)|0,h)|0)|0)>>>16&255;i[o>>0]=C;C=o+f|0;x=o;o=q;q=r;w=s;u=t;v=A;A=B;B=p;D=y;y=z;while(1){z=x+1|0;E=l[o+3>>0]|0;F=l[q+3>>0]|0;G=E+(l[D>>0]|0)+(l[y>>0]|0)+F|0;H=l[w+3>>0]|0;I=l[u+3>>0]|0;J=H+(l[v>>0]|0)+(l[A>>0]|0)+I+(l[o+1>>0]|0)|0;if(!B){K=E;L=F;M=G;N=H;O=I;P=J;break}I=D+2|0;H=y+2|0;F=v+2|0;E=A+2|0;Q=((ha(G,a)|0)+32768+(ha((l[F>>0]|0)+(l[w+1>>0]|0)+((l[I>>0]|0)+J+(l[q+1>>0]|0)+(l[H>>0]|0)<<1)+(l[u+1>>0]|0)+(l[E>>0]|0)|0,h)|0)|0)>>>16&255;i[z>>0]=Q;Q=A;J=v;G=y;R=D;x=z;v=F;A=E;B=B+-1|0;D=I;y=H;u=Q;w=J;q=G;o=R}o=((ha(M,a)|0)+32768+(ha(O+N+(l[s+n>>0]|0)+(l[t+j>>0]|0)+(L+K+P+(l[r+e>>0]|0)<<1)|0,h)|0)|0)>>>16&255;i[C>>0]=o;if((m|0)>=(k[b>>2]|0))break;else g=g+1|0}return}function Vk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;e=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;b=a+276|0;f=k[b>>2]|0;g=k[a+28>>2]|0;a=e<<1;if((f|0)>0&(a-g|0)>0){h=g+-1|0;j=h-a|0;m=a+2-g+((j|0)>-2?j:-2)|0;j=0;do{a=k[c+(j<<2)>>2]|0;qr(a+g|0,i[a+h>>0]|0,m|0)|0;j=j+1|0}while((j|0)!=(f|0));n=k[b>>2]|0}else n=f;if((n|0)<=0)return;if(!e){f=0;do f=f+2|0;while((f|0)<(n|0));return}else{o=0;p=0}while(1){n=1;f=k[c+(o<<2)>>2]|0;j=k[c+((o|1)<<2)>>2]|0;m=0;h=k[d+(p<<2)>>2]|0;while(1){i[h>>0]=((l[f>>0]|0)+n+(l[f+1>>0]|0)+(l[j>>0]|0)+(l[j+1>>0]|0)|0)>>>2;m=m+1|0;if((m|0)==(e|0))break;else{n=n^3;f=f+2|0;j=j+2|0;h=h+1|0}}o=o+2|0;if((o|0)>=(k[b>>2]|0))break;else p=p+1|0}return}function Wk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;e=k[a+416>>2]|0;f=ha(k[b+36>>2]|0,k[b+28>>2]|0)|0;g=k[b+4>>2]|0;b=i[e+92+g>>0]|0;h=b&255;j=i[e+102+g>>0]|0;g=j&255;e=ha(g,h)|0;m=e>>>1;n=a+276|0;o=k[n>>2]|0;p=k[a+28>>2]|0;a=ha(h,f)|0;if((o|0)>0&(a-p|0)>0){q=p+-1|0;r=q-a|0;s=a+2-p+((r|0)>-2?r:-2)|0;r=0;do{a=k[c+(r<<2)>>2]|0;qr(a+p|0,i[a+q>>0]|0,s|0)|0;r=r+1|0}while((r|0)!=(o|0));t=k[n>>2]|0}else t=o;if((t|0)<=0)return;o=(f|0)==0;r=j<<24>>24==0;j=b<<24>>24==0;b=t;t=0;s=0;while(1){if(o)u=b;else{q=0;p=0;a=k[d+(s<<2)>>2]|0;while(1){if(r)v=0;else{w=0;x=0;while(1){if(j)y=w;else{z=0;A=(k[c+(x+t<<2)>>2]|0)+p|0;B=w;while(1){C=(l[A>>0]|0)+B|0;z=z+1|0;if((z|0)==(h|0)){y=C;break}else{A=A+1|0;B=C}}}x=x+1|0;if((x|0)==(g|0)){v=y;break}else w=y}}i[a>>0]=(v+m|0)/(e|0)|0;q=q+1|0;if((q|0)==(f|0))break;else{p=p+h|0;a=a+1|0}}u=k[n>>2]|0}t=t+g|0;if((t|0)>=(u|0))break;else{b=u;s=s+1|0}}return}function Xk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;k[a+4>>2]=0;if((b|0)!=90){d=k[a>>2]|0;k[d+20>>2]=13;k[d+24>>2]=90;k[d+28>>2]=b;qb[k[d>>2]&127](a)}if((c|0)==488)e=a;else{d=k[a>>2]|0;k[d+20>>2]=22;k[d+24>>2]=488;k[d+28>>2]=c;qb[k[d>>2]&127](a);e=a}d=k[a>>2]|0;c=a+12|0;b=k[c>>2]|0;qr(a|0,0,488)|0;k[a>>2]=d;k[c>>2]=b;k[a+16>>2]=1;tm(e);k[a+8>>2]=0;k[a+24>>2]=0;k[a+312>>2]=0;e=a+164|0;b=e+48|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(b|0));jl(a);dl(a);k[a+20>>2]=200;return}function Yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=k[a+20>>2]|0;if((c&-2|0)!=200){d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=c;qb[k[d>>2]&127](a)}d=Zk(a)|0;switch(d|0){case 1:{e=1;return e|0}case 2:{if(!b)f=a;else{b=k[a>>2]|0;k[b+20>>2]=53;qb[k[b>>2]&127](a);f=a}Ak(f);e=2;return e|0}default:{e=d;return e|0}}return 0}function Zk(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=a+20|0;c=k[b>>2]|0;switch(c|0){case 200:{d=a+460|0;qb[k[(k[d>>2]|0)+4>>2]&127](a);qb[k[(k[a+24>>2]|0)+8>>2]&127](a);k[b>>2]=201;e=d;break}case 201:{e=a+460|0;break}case 210:case 208:case 207:case 206:case 205:case 204:case 203:{f=ub[k[k[a+460>>2]>>2]&63](a)|0;return f|0}case 202:{f=1;return f|0}default:{d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=c;qb[k[d>>2]&127](a);f=0;return f|0}}d=ub[k[k[e>>2]>>2]&63](a)|0;if((d|0)!=1){f=d;return f|0}switch(k[a+36>>2]|0){case 1:{k[a+40>>2]=1;k[a+44>>2]=1;break}case 3:{d=k[a+216>>2]|0;e=k[d>>2]|0;c=k[d+88>>2]|0;g=k[d+176>>2]|0;d=(e|0)==1;a:do if(d&(c|0)==2&(g|0)==3)k[a+40>>2]=3;else{if(d&(c|0)==34&(g|0)==35){k[a+40>>2]=7;break}if((e|0)==82&(c|0)==71&(g|0)==66){k[a+40>>2]=2;break}if((e|0)==114&(c|0)==103&(g|0)==98){k[a+40>>2]=6;break}if(k[a+284>>2]|0){k[a+40>>2]=3;break}if(!(k[a+296>>2]|0)){h=k[a>>2]|0;k[h+24>>2]=e;k[h+28>>2]=c;k[h+32>>2]=g;k[h+20>>2]=113;rb[k[h+4>>2]&31](a,1);k[a+40>>2]=3;break}h=l[a+300>>0]|0;switch(h|0){case 0:{k[a+40>>2]=2;break a;break}case 1:{k[a+40>>2]=3;break a;break}default:{i=k[a>>2]|0;k[i+20>>2]=116;k[i+24>>2]=h;rb[k[i+4>>2]&31](a,-1);k[a+40>>2]=3;break a}}}while(0);k[a+44>>2]=2;break}case 4:{b:do if(!(k[a+296>>2]|0))k[a+40>>2]=4;else{g=l[a+300>>0]|0;switch(g|0){case 0:{k[a+40>>2]=4;break b;break}case 2:{k[a+40>>2]=5;break b;break}default:{c=k[a>>2]|0;k[c+20>>2]=116;k[c+24>>2]=g;rb[k[c+4>>2]&31](a,-1);k[a+40>>2]=5;break b}}}while(0);k[a+44>>2]=4;break}default:{k[a+40>>2]=0;k[a+44>>2]=0}}c=k[a+428>>2]|0;k[a+48>>2]=c;k[a+52>>2]=c;p[a+56>>3]=1.0;k[a+64>>2]=0;k[a+68>>2]=0;k[a+72>>2]=0;k[a+76>>2]=1;k[a+80>>2]=1;k[a+84>>2]=0;k[a+88>>2]=2;k[a+92>>2]=1;k[a+96>>2]=256;k[a+136>>2]=0;k[a+100>>2]=0;k[a+104>>2]=0;k[a+108>>2]=0;k[b>>2]=202;f=1;return f|0}function _k(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=a+20|0;c=k[b>>2]|0;if((c+-205|0)>>>0<2?(k[a+64>>2]|0)==0:0){if((k[a+140>>2]|0)>>>0<(k[a+116>>2]|0)>>>0){d=k[a>>2]|0;k[d+20>>2]=69;qb[k[d>>2]&127](a)}qb[k[(k[a+444>>2]|0)+4>>2]&127](a);k[b>>2]=210}else e=6;a:do if((e|0)==6)switch(c|0){case 210:{break a;break}case 207:{k[b>>2]=210;break a;break}default:{d=k[a>>2]|0;k[d+20>>2]=21;k[d+24>>2]=c;qb[k[d>>2]&127](a);break a}}while(0);c=a+460|0;while(1){b=k[c>>2]|0;if(k[b+20>>2]|0)break;if(!(ub[k[b>>2]&63](a)|0)){f=0;e=13;break}}if((e|0)==13)return f|0;qb[k[(k[a+24>>2]|0)+24>>2]&127](a);Ak(a);f=1;return f|0}function $k(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;b=a+20|0;c=k[b>>2]|0;a:do switch(c|0){case 202:{tl(a);if(!(k[a+64>>2]|0)){k[b>>2]=203;d=6;break a}k[b>>2]=207;e=1;return e|0}case 203:{d=6;break}case 204:{f=a+444|0;break}default:{g=k[a>>2]|0;k[g+20>>2]=21;k[g+24>>2]=c;qb[k[g>>2]&127](a);d=16}}while(0);if((d|0)==6){c=a+460|0;b:do if(k[(k[c>>2]|0)+16>>2]|0){g=a+8|0;h=a+332|0;i=k[g>>2]|0;c:while(1){if(i)qb[k[i>>2]&127](a);j=ub[k[k[c>>2]>>2]&63](a)|0;switch(j|0){case 2:{break b;break}case 0:{e=0;break c;break}default:{}}l=k[g>>2]|0;if(!((j&-3|0)==1&(l|0)!=0)){i=l;continue}j=l+4|0;m=(k[j>>2]|0)+1|0;k[j>>2]=m;j=l+8|0;n=k[j>>2]|0;if((m|0)<(n|0)){i=l;continue}k[j>>2]=(k[h>>2]|0)+n;i=l}return e|0}while(0);k[a+152>>2]=k[a+144>>2];d=16}if((d|0)==16){d=a+444|0;if((k[b>>2]|0)==204)f=d;else{qb[k[k[d>>2]>>2]&127](a);k[a+140>>2]=0;k[b>>2]=204;f=d}}d:do if(k[(k[f>>2]|0)+8>>2]|0){d=a+140|0;c=a+116|0;i=a+8|0;h=a+448|0;g=k[d>>2]|0;while(1){l=k[c>>2]|0;if(g>>>0>=l>>>0){qb[k[(k[f>>2]|0)+4>>2]&127](a);qb[k[k[f>>2]>>2]&127](a);k[d>>2]=0;if(!(k[(k[f>>2]|0)+8>>2]|0))break d;else{g=0;continue}}n=k[i>>2]|0;if(!n)o=g;else{k[n+4>>2]=g;k[n+8>>2]=l;qb[k[n>>2]&127](a);o=k[d>>2]|0}Ab[k[(k[h>>2]|0)+4>>2]&31](a,0,d,0);g=k[d>>2]|0;if((g|0)==(o|0)){e=0;break}}return e|0}while(0);k[b>>2]=(k[a+68>>2]|0)!=0?206:205;e=1;return e|0}function al(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=r;r=r+16|0;e=d;f=k[a+20>>2]|0;if((f|0)!=205){g=k[a>>2]|0;k[g+20>>2]=21;k[g+24>>2]=f;qb[k[g>>2]&127](a)}g=a+140|0;f=k[g>>2]|0;h=k[a+116>>2]|0;if(f>>>0>=h>>>0){i=k[a>>2]|0;k[i+20>>2]=126;rb[k[i+4>>2]&31](a,-1);j=0;r=d;return j|0}i=k[a+8>>2]|0;if(i){k[i+4>>2]=f;k[i+8>>2]=h;qb[k[i>>2]&127](a)}k[e>>2]=0;Ab[k[(k[a+448>>2]|0)+4>>2]&31](a,b,e,c);c=k[e>>2]|0;k[g>>2]=(k[g>>2]|0)+c;j=c;r=d;return j|0}function bl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+20>>2]|0;if((d|0)!=206){e=k[a>>2]|0;k[e+20>>2]=21;k[e+24>>2]=d;qb[k[e>>2]&127](a)}e=a+140|0;d=k[e>>2]|0;f=k[a+116>>2]|0;if(d>>>0>=f>>>0){g=k[a>>2]|0;k[g+20>>2]=126;rb[k[g+4>>2]&31](a,-1);h=0;return h|0}g=k[a+8>>2]|0;if(g){k[g+4>>2]=d;k[g+8>>2]=f;qb[k[g>>2]&127](a)}g=ha(k[a+328>>2]|0,k[a+320>>2]|0)|0;if(g>>>0>c>>>0){c=k[a>>2]|0;k[c+20>>2]=24;qb[k[c>>2]&127](a)}if(!(yb[k[(k[a+452>>2]|0)+12>>2]&127](a,b)|0)){h=0;return h|0}k[e>>2]=(k[e>>2]|0)+g;h=g;return h|0}function cl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+428|0;c=k[b>>2]|0;d=ha(c,k[a+48>>2]|0)|0;e=k[a+52>>2]|0;do if(d>>>0>e>>>0){if(d>>>0<=e<<1>>>0){f=pm(k[a+28>>2]<<1,c)|0;k[a+112>>2]=f;f=pm(k[a+32>>2]<<1,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=2;k[a+328>>2]=2;g=2;break}if(d>>>0<=(e*3|0)>>>0){f=pm((k[a+28>>2]|0)*3|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*3|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=3;k[a+328>>2]=3;g=3;break}if(d>>>0<=e<<2>>>0){f=pm(k[a+28>>2]<<2,c)|0;k[a+112>>2]=f;f=pm(k[a+32>>2]<<2,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=4;k[a+328>>2]=4;g=4;break}if(d>>>0<=(e*5|0)>>>0){f=pm((k[a+28>>2]|0)*5|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*5|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=5;k[a+328>>2]=5;g=5;break}if(d>>>0<=(e*6|0)>>>0){f=pm((k[a+28>>2]|0)*6|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*6|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=6;k[a+328>>2]=6;g=6;break}if(d>>>0<=(e*7|0)>>>0){f=pm((k[a+28>>2]|0)*7|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*7|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=7;k[a+328>>2]=7;g=7;break}if(d>>>0<=e<<3>>>0){f=pm(k[a+28>>2]<<3,c)|0;k[a+112>>2]=f;f=pm(k[a+32>>2]<<3,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=8;k[a+328>>2]=8;g=8;break}if(d>>>0<=(e*9|0)>>>0){f=pm((k[a+28>>2]|0)*9|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*9|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=9;k[a+328>>2]=9;g=9;break}if(d>>>0<=(e*10|0)>>>0){f=pm((k[a+28>>2]|0)*10|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*10|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=10;k[a+328>>2]=10;g=10;break}if(d>>>0<=(e*11|0)>>>0){f=pm((k[a+28>>2]|0)*11|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*11|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=11;k[a+328>>2]=11;g=11;break}if(d>>>0<=(e*12|0)>>>0){f=pm((k[a+28>>2]|0)*12|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*12|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=12;k[a+328>>2]=12;g=12;break}if(d>>>0<=(e*13|0)>>>0){f=pm((k[a+28>>2]|0)*13|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*13|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=13;k[a+328>>2]=13;g=13;break}if(d>>>0<=(e*14|0)>>>0){f=pm((k[a+28>>2]|0)*14|0,c)|0;k[a+112>>2]=f;f=pm((k[a+32>>2]|0)*14|0,k[b>>2]|0)|0;k[a+116>>2]=f;k[a+324>>2]=14;k[a+328>>2]=14;g=14;break}f=k[a+28>>2]|0;if(d>>>0>(e*15|0)>>>0){h=pm(f<<4,c)|0;k[a+112>>2]=h;h=pm(k[a+32>>2]<<4,k[b>>2]|0)|0;k[a+116>>2]=h;k[a+324>>2]=16;k[a+328>>2]=16;g=16;break}else{h=pm(f*15|0,c)|0;k[a+112>>2]=h;h=pm((k[a+32>>2]|0)*15|0,k[b>>2]|0)|0;k[a+116>>2]=h;k[a+324>>2]=15;k[a+328>>2]=15;g=15;break}}else{h=pm(k[a+28>>2]|0,c)|0;k[a+112>>2]=h;h=pm(k[a+32>>2]|0,k[b>>2]|0)|0;k[a+116>>2]=h;k[a+324>>2]=1;k[a+328>>2]=1;g=1}while(0);b=k[a+36>>2]|0;if((b|0)<=0)return;c=0;e=k[a+216>>2]|0;while(1){k[e+36>>2]=g;k[e+40>>2]=g;c=c+1|0;if((c|0)>=(b|0))break;else e=e+88|0}return}function dl(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,0,28)|0;k[a+460>>2]=b;k[b>>2]=46;k[b+4>>2]=39;k[b+8>>2]=40;k[b+12>>2]=41;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=1;return}function el(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;b=a+460|0;c=k[b>>2]|0;d=c+20|0;if(k[d>>2]|0){e=2;return e|0}f=a+464|0;g=c+24|0;h=a+340|0;i=c+16|0;c=a+32|0;j=a+212|0;l=a+36|0;m=a+316|0;n=a+320|0;o=a+216|0;p=a+220|0;q=a+224|0;r=a+416|0;s=a+412|0;t=a+420|0;u=a+424|0;v=a+428|0;w=a+432|0;x=a+436|0;y=a+324|0;z=a+328|0;A=a+28|0;B=a+332|0;a:while(1){C=ub[k[(k[f>>2]|0)+4>>2]&63](a)|0;switch(C|0){case 2:{D=57;break a;break}case 1:break;default:{e=C;D=62;break a}}b:do switch(k[g>>2]|0){case 0:{if(!(k[i>>2]|0)){C=k[a>>2]|0;k[C+20>>2]=36;qb[k[C>>2]&127](a)}if(!(k[h>>2]|0))continue a;else{D=56;break a}break}case 1:{if(!((k[c>>2]|0)<=65500?(k[A>>2]|0)<=65500:0)){C=k[a>>2]|0;k[C+20>>2]=42;k[C+24>>2]=65500;qb[k[C>>2]&127](a)}C=k[j>>2]|0;if((C+-8|0)>>>0>4){E=k[a>>2]|0;k[E+20>>2]=16;k[E+24>>2]=C;qb[k[E>>2]&127](a)}E=k[l>>2]|0;if((E|0)>10){C=k[a>>2]|0;k[C+20>>2]=27;k[C+24>>2]=E;k[C+28>>2]=10;qb[k[C>>2]&127](a);F=k[l>>2]|0}else F=E;k[m>>2]=1;k[n>>2]=1;if((F|0)>0){E=F;C=1;G=1;H=0;I=k[o>>2]|0;while(1){J=I+8|0;K=k[J>>2]|0;L=I+12|0;if((K+-1|0)>>>0<=3?(M=k[L>>2]|0,(M+-1|0)>>>0<=3):0){N=G;O=K;P=C;Q=M;R=E}else{M=k[a>>2]|0;k[M+20>>2]=19;qb[k[M>>2]&127](a);N=k[m>>2]|0;O=k[J>>2]|0;P=k[n>>2]|0;Q=k[L>>2]|0;R=k[l>>2]|0}G=(N|0)>(O|0)?N:O;k[m>>2]=G;C=(P|0)>(Q|0)?P:Q;k[n>>2]=C;H=H+1|0;if((H|0)>=(R|0)){S=R;break}else{E=R;I=I+88|0}}}else S=F;c:do if(!(k[p>>2]|0)){if((k[q>>2]|0)!=0?(k[h>>2]|0)!=0:0){D=22;break}do switch(k[r>>2]|0){case 0:{k[v>>2]=1;k[w>>2]=119984;k[x>>2]=0;T=1;U=S;break c;break}case 3:{k[v>>2]=2;k[w>>2]=121164;k[x>>2]=3;T=2;U=S;break c;break}case 8:{k[v>>2]=3;k[w>>2]=121064;k[x>>2]=8;T=3;U=S;break c;break}case 15:{k[v>>2]=4;k[w>>2]=120936;k[x>>2]=15;T=4;U=S;break c;break}case 24:{k[v>>2]=5;k[w>>2]=120772;k[x>>2]=24;T=5;U=S;break c;break}case 35:{k[v>>2]=6;k[w>>2]=120564;k[x>>2]=35;T=6;U=S;break c;break}case 48:{k[v>>2]=7;k[w>>2]=120304;k[x>>2]=48;T=7;U=S;break c;break}case 63:{k[v>>2]=8;k[w>>2]=119984;k[x>>2]=63;T=8;U=S;break c;break}case 80:{k[v>>2]=9;k[w>>2]=119984;k[x>>2]=63;T=9;U=S;break c;break}case 99:{k[v>>2]=10;k[w>>2]=119984;k[x>>2]=63;T=10;U=S;break c;break}case 120:{k[v>>2]=11;k[w>>2]=119984;k[x>>2]=63;T=11;U=S;break c;break}case 143:{k[v>>2]=12;k[w>>2]=119984;k[x>>2]=63;T=12;U=S;break c;break}case 168:{k[v>>2]=13;k[w>>2]=119984;k[x>>2]=63;T=13;U=S;break c;break}case 195:{k[v>>2]=14;k[w>>2]=119984;k[x>>2]=63;T=14;U=S;break c;break}case 224:{k[v>>2]=15;k[w>>2]=119984;k[x>>2]=63;T=15;U=S;break c;break}case 255:{k[v>>2]=16;k[w>>2]=119984;k[x>>2]=63;T=16;U=S;break c;break}default:{I=k[a>>2]|0;k[I+20>>2]=17;k[I+24>>2]=k[s>>2];k[I+28>>2]=k[r>>2];k[I+32>>2]=k[t>>2];k[I+36>>2]=k[u>>2];qb[k[I>>2]&127](a);T=k[v>>2]|0;U=k[l>>2]|0;break c}}while(0)}else D=22;while(0);if((D|0)==22){D=0;k[v>>2]=8;k[w>>2]=119984;k[x>>2]=63;T=8;U=S}k[y>>2]=T;k[z>>2]=T;if((U|0)>0){I=T;E=0;H=k[o>>2]|0;while(1){k[H+36>>2]=I;k[H+40>>2]=I;C=H+8|0;G=ha(k[C>>2]|0,k[A>>2]|0)|0;L=pm(G,ha(k[m>>2]|0,I)|0)|0;k[H+28>>2]=L;L=H+12|0;G=ha(k[L>>2]|0,k[c>>2]|0)|0;J=pm(G,ha(k[v>>2]|0,k[n>>2]|0)|0)|0;k[H+32>>2]=J;J=ha(k[C>>2]|0,k[A>>2]|0)|0;C=pm(J,k[m>>2]|0)|0;k[H+44>>2]=C;C=ha(k[L>>2]|0,k[c>>2]|0)|0;L=pm(C,k[n>>2]|0)|0;k[H+48>>2]=L;k[H+52>>2]=1;k[H+80>>2]=0;L=E+1|0;if((L|0)>=(k[l>>2]|0))break;I=k[v>>2]|0;E=L;H=H+88|0}V=k[v>>2]|0}else V=T;H=pm(k[c>>2]|0,ha(V,k[n>>2]|0)|0)|0;k[B>>2]=H;H=k[h>>2]|0;if((H|0)>=(k[l>>2]|0)?(k[q>>2]|0)==0:0){k[(k[b>>2]|0)+16>>2]=0;W=H;break b}k[(k[b>>2]|0)+16>>2]=1;W=H;break}default:W=k[h>>2]|0}while(0);if(W){D=52;break}k[g>>2]=2}if((D|0)==52){k[g>>2]=0;e=1;return e|0}else if((D|0)==56){gl(a);e=1;return e|0}else if((D|0)==57){k[d>>2]=1;if(!(k[g>>2]|0)){g=a+152|0;d=k[a+144>>2]|0;if((k[g>>2]|0)<=(d|0)){e=2;return e|0}k[g>>2]=d;e=2;return e|0}else{if(!(k[(k[f>>2]|0)+16>>2]|0)){e=2;return e|0}f=k[a>>2]|0;k[f+20>>2]=62;qb[k[f>>2]&127](a);e=2;return e|0}}else if((D|0)==62)return e|0;return 0}function fl(a){a=a|0;var b=0;b=k[a+460>>2]|0;k[b>>2]=46;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=1;qb[k[(k[a>>2]|0)+16>>2]&127](a);qb[k[k[a+464>>2]>>2]&127](a);k[a+160>>2]=0;return}function gl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;b=a+340|0;c=k[b>>2]|0;if((c|0)!=1){if((c+-1|0)>>>0>3){d=k[a>>2]|0;k[d+20>>2]=27;k[d+24>>2]=c;k[d+28>>2]=4;qb[k[d>>2]&127](a)}d=a+428|0;c=pm(k[a+28>>2]|0,ha(k[d>>2]|0,k[a+316>>2]|0)|0)|0;k[a+360>>2]=c;c=pm(k[a+32>>2]|0,ha(k[d>>2]|0,k[a+320>>2]|0)|0)|0;k[a+364>>2]=c;c=a+368|0;k[c>>2]=0;if((k[b>>2]|0)<=0){e=a+468|0;f=k[e>>2]|0;g=k[f>>2]|0;qb[g&127](a);h=a+452|0;i=k[h>>2]|0;j=k[i>>2]|0;qb[j&127](a);l=k[h>>2]|0;m=l+4|0;n=k[m>>2]|0;o=a+460|0;p=k[o>>2]|0;k[p>>2]=n;return}d=0;q=0;while(1){r=k[a+344+(q<<2)>>2]|0;s=k[r+8>>2]|0;k[r+56>>2]=s;t=k[r+12>>2]|0;k[r+60>>2]=t;u=ha(t,s)|0;k[r+64>>2]=u;v=ha(k[r+36>>2]|0,s)|0;k[r+68>>2]=v;v=((k[r+28>>2]|0)>>>0)%(s>>>0)|0;k[r+72>>2]=(v|0)==0?s:v;v=((k[r+32>>2]|0)>>>0)%(t>>>0)|0;k[r+76>>2]=(v|0)==0?t:v;if((u+d|0)>10){v=k[a>>2]|0;k[v+20>>2]=14;qb[k[v>>2]&127](a)}if((u|0)>0){v=u;while(1){u=k[c>>2]|0;k[c>>2]=u+1;k[a+372+(u<<2)>>2]=q;if((v|0)>1)v=v+-1|0;else break}}v=q+1|0;u=k[b>>2]|0;if((v|0)>=(u|0)){w=u;break}d=k[c>>2]|0;q=v}if((w|0)>0)x=w;else{e=a+468|0;f=k[e>>2]|0;g=k[f>>2]|0;qb[g&127](a);h=a+452|0;i=k[h>>2]|0;j=k[i>>2]|0;qb[j&127](a);l=k[h>>2]|0;m=l+4|0;n=k[m>>2]|0;o=a+460|0;p=k[o>>2]|0;k[p>>2]=n;return}}else{w=k[a+344>>2]|0;k[a+360>>2]=k[w+28>>2];q=k[w+32>>2]|0;k[a+364>>2]=q;k[w+56>>2]=1;k[w+60>>2]=1;k[w+64>>2]=1;k[w+68>>2]=k[w+36>>2];k[w+72>>2]=1;c=k[w+12>>2]|0;d=(q>>>0)%(c>>>0)|0;k[w+76>>2]=(d|0)==0?c:d;k[a+368>>2]=1;k[a+372>>2]=0;x=1}d=a+4|0;c=x;x=0;while(1){w=k[a+344+(x<<2)>>2]|0;q=w+80|0;if(!(k[q>>2]|0)){v=k[w+16>>2]|0;w=a+164+(v<<2)|0;if(!(v>>>0<=3?(k[w>>2]|0)!=0:0)){u=k[a>>2]|0;k[u+20>>2]=54;k[u+24>>2]=v;qb[k[u>>2]&127](a)}u=nb[k[k[d>>2]>>2]&63](a,1,132)|0;wr(u|0,k[w>>2]|0,132)|0;k[q>>2]=u;y=k[b>>2]|0}else y=c;x=x+1|0;if((x|0)>=(y|0))break;else c=y}e=a+468|0;f=k[e>>2]|0;g=k[f>>2]|0;qb[g&127](a);h=a+452|0;i=k[h>>2]|0;j=k[i>>2]|0;qb[j&127](a);l=k[h>>2]|0;m=l+4|0;n=k[m>>2]|0;o=a+460|0;p=k[o>>2]|0;k[p>>2]=n;return}function hl(a){a=a|0;qb[k[(k[a+468>>2]|0)+8>>2]&127](a);k[k[a+460>>2]>>2]=46;return}function il(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;c=a+440|0;d=k[c>>2]|0;e=k[a>>2]|0;k[e+20>>2]=124;k[e+24>>2]=d;k[e+28>>2]=b;rb[k[e+4>>2]&31](a,-1);e=b+1&7|208;f=b+2&7|208;g=b+7&7|208;h=b+6&7|208;b=d;a:while(1){d=(b&-8|0)==208;i=(b|0)==(e|0);j=(b|0)==(f|0);l=(b|0)==(g|0);m=(b|0)==(h|0);b:do if((b|0)<192){n=k[a>>2]|0;k[n+20>>2]=99;o=n+24|0;if(d){k[o>>2]=b;k[n+28>>2]=2;rb[k[n+4>>2]&31](a,4);break}if(i){k[o>>2]=e;k[n+28>>2]=2;rb[k[n+4>>2]&31](a,4);break}else{k[o>>2]=b;k[n+28>>2]=2;rb[k[n+4>>2]&31](a,4);break}}else{if(!d){p=10;break a}n=i|j?3:l|m?2:1;while(1){o=k[a>>2]|0;k[o+20>>2]=99;k[o+24>>2]=b;k[o+28>>2]=n;rb[k[o+4>>2]&31](a,4);switch(n|0){case 1:{p=13;break a;break}case 3:{q=1;p=17;break a;break}case 2:{break b;break}default:{}}}}while(0);if(!(kl(a)|0)){q=0;p=17;break}b=k[c>>2]|0}if((p|0)==10){h=k[a>>2]|0;k[h+20>>2]=99;g=h+24|0;if(i){k[g>>2]=e;k[h+28>>2]=3;rb[k[h+4>>2]&31](a,4);q=1;return q|0}else{k[g>>2]=b;k[h+28>>2]=3;rb[k[h+4>>2]&31](a,4);q=1;return q|0}}else if((p|0)==13){k[c>>2]=0;q=1;return q|0}else if((p|0)==17)return q|0;return 0}function jl(a){a=a|0;var b=0,c=0;b=nb[k[k[a+4>>2]>>2]&63](a,0,172)|0;c=a+464|0;k[c>>2]=b;k[b>>2]=42;k[b+4>>2]=47;k[b+8>>2]=48;k[b+28>>2]=49;k[b+96>>2]=0;k[b+100>>2]=0;k[b+36>>2]=49;k[b+104>>2]=0;k[b+40>>2]=49;k[b+108>>2]=0;k[b+44>>2]=49;k[b+112>>2]=0;k[b+48>>2]=49;k[b+116>>2]=0;k[b+52>>2]=49;k[b+120>>2]=0;k[b+56>>2]=49;k[b+124>>2]=0;k[b+60>>2]=49;k[b+128>>2]=0;k[b+64>>2]=49;k[b+132>>2]=0;k[b+68>>2]=49;k[b+136>>2]=0;k[b+72>>2]=49;k[b+140>>2]=0;k[b+76>>2]=49;k[b+144>>2]=0;k[b+80>>2]=49;k[b+148>>2]=0;k[b+84>>2]=49;k[b+152>>2]=0;k[b+156>>2]=0;k[b+92>>2]=49;k[b+160>>2]=0;k[b+32>>2]=50;k[b+88>>2]=50;b=k[c>>2]|0;k[a+216>>2]=0;k[a+144>>2]=0;k[a+440>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+24>>2]=0;k[b+164>>2]=0;return}function kl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=k[a+24>>2]|0;c=b+4|0;d=b+12|0;e=a+464|0;f=k[c>>2]|0;g=k[b>>2]|0;a:while(1){if(!f){if(!(ub[k[d>>2]&63](a)|0)){h=0;j=19;break}l=k[b>>2]|0;m=k[c>>2]|0}else{l=g;m=f}n=m+-1|0;o=l+1|0;if((i[l>>0]|0)==-1){p=n;q=o}else{r=n;n=o;while(1){o=(k[e>>2]|0)+24|0;k[o>>2]=(k[o>>2]|0)+1;k[b>>2]=n;k[c>>2]=r;if(!r){if(!(ub[k[d>>2]&63](a)|0)){h=0;j=19;break a}s=k[b>>2]|0;t=k[c>>2]|0}else{s=n;t=r}o=t+-1|0;u=s+1|0;if((i[s>>0]|0)==-1){p=o;q=u;break}else{r=o;n=u}}}while(1){if(!p){if(!(ub[k[d>>2]&63](a)|0)){h=0;j=19;break a}v=k[c>>2]|0;w=k[b>>2]|0}else{v=p;w=q}n=v+-1|0;r=w+1|0;u=i[w>>0]|0;if(u<<24>>24==-1){p=n;q=r}else{x=n;y=r;z=u;break}}u=(k[e>>2]|0)+24|0;r=k[u>>2]|0;if(z<<24>>24){A=x;B=y;C=z;D=r;j=16;break}k[u>>2]=r+2;k[b>>2]=y;k[c>>2]=x;f=x;g=y}if((j|0)==16){y=C&255;if(D){C=k[a>>2]|0;k[C+20>>2]=119;k[C+24>>2]=D;k[C+28>>2]=y;rb[k[C+4>>2]&31](a,-1);k[(k[e>>2]|0)+24>>2]=0}k[a+440>>2]=y;k[b>>2]=B;k[c>>2]=A;h=1;return h|0}else if((j|0)==19)return h|0;return 0}function ll(a){a=a|0;var b=0;b=k[a+464>>2]|0;k[a+216>>2]=0;k[a+144>>2]=0;k[a+440>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+24>>2]=0;k[b+164>>2]=0;return}function ml(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,sb=0,tb=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0,de=0;b=r;r=r+288|0;c=b+256|0;d=b;e=a+440|0;f=a+464|0;g=a+24|0;h=a+232|0;n=a+248|0;o=a+264|0;p=a+233|0;q=a+249|0;s=a+265|0;t=a+234|0;u=a+250|0;v=a+266|0;w=a+235|0;x=a+251|0;y=a+267|0;z=a+236|0;A=a+252|0;B=a+268|0;C=a+237|0;D=a+253|0;E=a+269|0;F=a+238|0;G=a+254|0;H=a+270|0;I=a+239|0;J=a+255|0;K=a+271|0;L=a+240|0;M=a+256|0;N=a+272|0;O=a+241|0;P=a+257|0;Q=a+273|0;R=a+242|0;S=a+258|0;T=a+274|0;U=a+243|0;V=a+259|0;W=a+275|0;X=a+244|0;Y=a+260|0;Z=a+276|0;_=a+245|0;$=a+261|0;aa=a+277|0;ba=a+246|0;ca=a+262|0;da=a+278|0;ea=a+247|0;fa=a+263|0;ga=a+279|0;ha=a+280|0;ia=a+40|0;ja=a+304|0;ka=a+308|0;la=a+284|0;ma=a+288|0;na=a+289|0;oa=a+290|0;pa=a+292|0;qa=a+294|0;ra=a+296|0;sa=a+300|0;ta=c+1|0;ua=c+2|0;va=c+3|0;wa=c+4|0;xa=c+5|0;ya=c+6|0;za=c+7|0;Aa=c+8|0;Ba=c+9|0;Ca=c+10|0;Da=c+11|0;Ea=c+12|0;Fa=c+13|0;Ga=c+14|0;Ha=c+15|0;Ia=c+16|0;Ja=a+36|0;Ka=a+216|0;La=k[e>>2]|0;a:while(1){do if(!La){if(k[(k[f>>2]|0)+12>>2]|0){if(!(kl(a)|0)){Ma=0;Na=303;break a}Oa=k[e>>2]|0;break}Pa=k[g>>2]|0;Qa=Pa+4|0;Ra=k[Qa>>2]|0;if(!Ra){if(!(ub[k[Pa+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Sa=k[Qa>>2]|0}else Sa=Ra;Ra=k[Pa>>2]|0;Ta=Sa+-1|0;Ua=Ra+1|0;Va=i[Ra>>0]|0;Ra=Va&255;if(!Ta){if(!(ub[k[Pa+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Wa=k[Qa>>2]|0;Xa=k[Pa>>2]|0}else{Wa=Ta;Xa=Ua}Ua=i[Xa>>0]|0;Ta=Ua&255;if(Va<<24>>24!=-1|Ua<<24>>24!=-40){Ua=k[a>>2]|0;k[Ua+20>>2]=55;k[Ua+24>>2]=Ra;k[Ua+28>>2]=Ta;qb[k[Ua>>2]&127](a)}k[e>>2]=Ta;k[Pa>>2]=Xa+1;k[Qa>>2]=Wa+-1;Oa=Ta}else Oa=La;while(0);do switch(Oa|0){case 218:{Na=25;break a;break}case 217:{Na=72;break a;break}case 216:{Ta=k[a>>2]|0;k[Ta+20>>2]=104;rb[k[Ta+4>>2]&31](a,1);Ta=k[f>>2]|0;if(!(k[Ta+12>>2]|0))Ya=Ta;else{Ta=k[a>>2]|0;k[Ta+20>>2]=64;qb[k[Ta>>2]&127](a);Ya=k[f>>2]|0}i[h>>0]=0;i[n>>0]=1;i[o>>0]=5;i[p>>0]=0;i[q>>0]=1;i[s>>0]=5;i[t>>0]=0;i[u>>0]=1;i[v>>0]=5;i[w>>0]=0;i[x>>0]=1;i[y>>0]=5;i[z>>0]=0;i[A>>0]=1;i[B>>0]=5;i[C>>0]=0;i[D>>0]=1;i[E>>0]=5;i[F>>0]=0;i[G>>0]=1;i[H>>0]=5;i[I>>0]=0;i[J>>0]=1;i[K>>0]=5;i[L>>0]=0;i[M>>0]=1;i[N>>0]=5;i[O>>0]=0;i[P>>0]=1;i[Q>>0]=5;i[R>>0]=0;i[S>>0]=1;i[T>>0]=5;i[U>>0]=0;i[V>>0]=1;i[W>>0]=5;i[X>>0]=0;i[Y>>0]=1;i[Z>>0]=5;i[_>>0]=0;i[$>>0]=1;i[aa>>0]=5;i[ba>>0]=0;i[ca>>0]=1;i[da>>0]=5;i[ea>>0]=0;i[fa>>0]=1;i[ga>>0]=5;k[ha>>2]=0;k[ia>>2]=0;k[ja>>2]=0;k[ka>>2]=0;k[la>>2]=0;i[ma>>0]=1;i[na>>0]=1;i[oa>>0]=0;j[pa>>1]=1;j[qa>>1]=1;k[ra>>2]=0;i[sa>>0]=0;k[Ya+12>>2]=1;break}case 192:{if(!(rl(a,1,0,0)|0)){Ma=0;Na=303;break a}break}case 193:{if(!(rl(a,0,0,0)|0)){Ma=0;Na=303;break a}break}case 194:{if(!(rl(a,0,1,0)|0)){Ma=0;Na=303;break a}break}case 201:{if(!(rl(a,0,0,1)|0)){Ma=0;Na=303;break a}break}case 202:{if(!(rl(a,0,1,1)|0)){Ma=0;Na=303;break a}break}case 207:case 206:case 205:case 203:case 200:case 199:case 198:case 197:case 195:{Ta=k[a>>2]|0;k[Ta+20>>2]=63;k[Ta+24>>2]=Oa;qb[k[Ta>>2]&127](a);break}case 204:{Ta=k[g>>2]|0;Qa=Ta+4|0;Pa=k[Qa>>2]|0;if(!Pa){if(!(ub[k[Ta+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Za=k[Qa>>2]|0}else Za=Pa;Pa=k[Ta>>2]|0;Ua=Za+-1|0;Ra=Pa+1|0;Va=l[Pa>>0]<<8;if(!Ua){if(!(ub[k[Ta+12>>2]&63](a)|0)){Ma=0;Na=303;break a}_a=k[Qa>>2]|0;$a=k[Ta>>2]|0}else{_a=Ua;$a=Ra}Ra=_a+-1|0;Ua=$a+1|0;Pa=l[$a>>0]|Va;Va=Pa+-2|0;if(Pa>>>0>2){Pa=Ta+12|0;ab=Ra;bb=Va;cb=Ua;while(1){if(!ab){if(!(ub[k[Pa>>2]&63](a)|0)){Ma=0;Na=303;break a}db=k[Qa>>2]|0;eb=k[Ta>>2]|0}else{db=ab;eb=cb}fb=db+-1|0;gb=eb+1|0;hb=i[eb>>0]|0;ib=hb&255;if(!fb){if(!(ub[k[Pa>>2]&63](a)|0)){Ma=0;Na=303;break a}jb=k[Qa>>2]|0;kb=k[Ta>>2]|0}else{jb=fb;kb=gb}gb=jb+-1|0;fb=kb+1|0;lb=i[kb>>0]|0;mb=lb&255;nb=bb+-2|0;ob=k[a>>2]|0;k[ob+20>>2]=81;k[ob+24>>2]=ib;k[ob+28>>2]=mb;rb[k[ob+4>>2]&31](a,1);if((hb&255)<=31)if((hb&255)<=15){hb=mb&15;i[a+232+ib>>0]=hb;ob=(lb&255)>>>4;i[a+248+ib>>0]=ob;if((hb&255)>(ob&255)){ob=k[a>>2]|0;k[ob+20>>2]=30;k[ob+24>>2]=mb;qb[k[ob>>2]&127](a)}}else Na=90;else{ob=k[a>>2]|0;k[ob+20>>2]=29;k[ob+24>>2]=ib;qb[k[ob>>2]&127](a);Na=90}if((Na|0)==90){Na=0;i[ib+-16+(a+264)>>0]=lb}if((bb|0)>2){ab=gb;bb=nb;cb=fb}else{pb=gb;sb=nb;tb=fb;break}}}else{pb=Ra;sb=Va;tb=Ua}if(sb){cb=k[a>>2]|0;k[cb+20>>2]=12;qb[k[cb>>2]&127](a)}k[Ta>>2]=tb;k[Qa>>2]=pb;break}case 196:{cb=k[g>>2]|0;bb=cb+4|0;ab=k[bb>>2]|0;if(!ab){if(!(ub[k[cb+12>>2]&63](a)|0)){Na=127;break a}vb=k[bb>>2]|0}else vb=ab;ab=k[cb>>2]|0;Pa=vb+-1|0;fb=ab+1|0;nb=l[ab>>0]<<8;if(!Pa){if(!(ub[k[cb+12>>2]&63](a)|0)){Na=127;break a}wb=k[bb>>2]|0;xb=k[cb>>2]|0}else{wb=Pa;xb=fb}fb=wb+-1|0;Pa=xb+1|0;ab=(l[xb>>0]|nb)+-2|0;if((ab|0)>16){nb=cb+12|0;gb=fb;lb=ab;ib=Pa;while(1){if(!gb){if(!(ub[k[nb>>2]&63](a)|0)){Na=127;break a}yb=k[bb>>2]|0;zb=k[cb>>2]|0}else{yb=gb;zb=ib}ob=l[zb>>0]|0;mb=k[a>>2]|0;k[mb+20>>2]=82;k[mb+24>>2]=ob;rb[k[mb+4>>2]&31](a,1);i[c>>0]=0;mb=yb+-1|0;hb=0;Ab=1;Bb=zb+1|0;while(1){if(!mb){if(!(ub[k[nb>>2]&63](a)|0)){Na=127;break a}Cb=k[bb>>2]|0;Db=k[cb>>2]|0}else{Cb=mb;Db=Bb}Eb=i[Db>>0]|0;i[c+Ab>>0]=Eb;Fb=(Eb&255)+hb|0;Ab=Ab+1|0;Eb=Cb+-1|0;Gb=Db+1|0;if((Ab|0)>=17){Hb=Fb;Ib=Eb;Jb=Gb;break}else{mb=Eb;hb=Fb;Bb=Gb}}Bb=lb+-17|0;hb=k[a>>2]|0;k[hb+24>>2]=l[ta>>0];k[hb+28>>2]=l[ua>>0];k[hb+32>>2]=l[va>>0];k[hb+36>>2]=l[wa>>0];k[hb+40>>2]=l[xa>>0];k[hb+44>>2]=l[ya>>0];k[hb+48>>2]=l[za>>0];k[hb+52>>2]=l[Aa>>0];k[hb+20>>2]=88;rb[k[hb+4>>2]&31](a,2);hb=k[a>>2]|0;k[hb+24>>2]=l[Ba>>0];k[hb+28>>2]=l[Ca>>0];k[hb+32>>2]=l[Da>>0];k[hb+36>>2]=l[Ea>>0];k[hb+40>>2]=l[Fa>>0];k[hb+44>>2]=l[Ga>>0];k[hb+48>>2]=l[Ha>>0];k[hb+52>>2]=l[Ia>>0];k[hb+20>>2]=88;rb[k[hb+4>>2]&31](a,2);if((Hb|0)>256|(Bb|0)<(Hb|0)){hb=k[a>>2]|0;k[hb+20>>2]=9;qb[k[hb>>2]&127](a)}qr(d|0,0,256)|0;if((Hb|0)>0){hb=Ib;mb=0;Ab=Jb;while(1){if(!hb){if(!(ub[k[nb>>2]&63](a)|0)){Na=127;break a}Kb=k[bb>>2]|0;Lb=k[cb>>2]|0}else{Kb=hb;Lb=Ab}Gb=Kb+-1|0;Fb=Lb+1|0;i[d+mb>>0]=i[Lb>>0]|0;mb=mb+1|0;if((mb|0)>=(Hb|0)){Mb=Gb;Nb=Fb;break}else{hb=Gb;Ab=Fb}}}else{Mb=Ib;Nb=Jb}Ab=Bb-Hb|0;hb=(ob&16|0)==0;mb=ob+-16|0;Fb=hb?ob:mb;Gb=hb?a+180+(ob<<2)|0:a+196+(mb<<2)|0;if(Fb>>>0>3){mb=k[a>>2]|0;k[mb+20>>2]=31;k[mb+24>>2]=Fb;qb[k[mb>>2]&127](a)}mb=k[Gb>>2]|0;if(!mb){Fb=Dk(a)|0;k[Gb>>2]=Fb;Ob=Fb}else Ob=mb;mb=Ob;Fb=c;hb=mb+17|0;do{i[mb>>0]=i[Fb>>0]|0;mb=mb+1|0;Fb=Fb+1|0}while((mb|0)<(hb|0));wr((k[Gb>>2]|0)+17|0,d|0,256)|0;if((Ab|0)>16){gb=Mb;lb=Ab;ib=Nb}else{Pb=Mb;Qb=Ab;Rb=Nb;break}}}else{Pb=fb;Qb=ab;Rb=Pa}if(Qb){ib=k[a>>2]|0;k[ib+20>>2]=12;qb[k[ib>>2]&127](a)}k[cb>>2]=Rb;k[bb>>2]=Pb;break}case 219:{ib=k[g>>2]|0;lb=ib+4|0;gb=k[lb>>2]|0;if(!gb){if(!(ub[k[ib+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Sb=k[lb>>2]|0}else Sb=gb;gb=k[ib>>2]|0;nb=Sb+-1|0;Qa=gb+1|0;Ta=l[gb>>0]<<8;if(!nb){if(!(ub[k[ib+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Tb=k[lb>>2]|0;Ub=k[ib>>2]|0}else{Tb=nb;Ub=Qa}Qa=Tb+-1|0;nb=Ub+1|0;gb=l[Ub>>0]|Ta;Ta=gb+-2|0;if(gb>>>0>2){gb=ib+12|0;Ua=Qa;Va=Ta;Ra=nb;while(1){Fb=Va+-1|0;if(!Ua){if(!(ub[k[gb>>2]&63](a)|0)){Ma=0;Na=303;break a}Vb=k[lb>>2]|0;Wb=k[ib>>2]|0}else{Vb=Ua;Wb=Ra}mb=l[Wb>>0]|0;hb=mb>>>4;ob=mb&15;mb=k[a>>2]|0;k[mb+20>>2]=83;k[mb+24>>2]=ob;k[mb+28>>2]=hb;rb[k[mb+4>>2]&31](a,1);if(ob>>>0>3){mb=k[a>>2]|0;k[mb+20>>2]=32;k[mb+24>>2]=ob;qb[k[mb>>2]&127](a)}mb=a+164+(ob<<2)|0;ob=k[mb>>2]|0;if(!ob){Bb=Ck(a)|0;k[mb>>2]=Bb;Xb=Bb}else Xb=ob;ob=(hb|0)!=0;if(ob)if((Va|0)<129){hb=0;do{j[Xb+(hb<<1)>>1]=1;hb=hb+1|0}while((hb|0)!=64);Yb=Fb>>1;Na=150}else Na=157;else if((Va|0)<65){hb=0;do{j[Xb+(hb<<1)>>1]=1;hb=hb+1|0}while((hb|0)!=64);Yb=Fb;Na=150}else Na=157;b:do if((Na|0)==150){Na=0;switch(Yb|0){case 4:{Zb=4;_b=121164;break}case 9:{Zb=Yb;_b=121064;break}case 16:{Zb=Yb;_b=120936;break}case 25:{Zb=Yb;_b=120772;break}case 36:{Zb=Yb;_b=120564;break}case 49:{Zb=Yb;_b=120304;break}default:{hb=Vb+-1|0;Ab=Wb+1|0;if((Yb|0)>0){$b=hb;ac=Yb;bc=119984;cc=Ab;Na=159;break b}else{dc=hb;ec=Yb;fc=Ab;break b}}}$b=Vb+-1|0;ac=Zb;bc=_b;cc=Wb+1|0;Na=159}else if((Na|0)==157){Na=0;$b=Vb+-1|0;ac=64;bc=119984;cc=Wb+1|0;Na=159}while(0);if((Na|0)==159){Na=0;Ab=$b;hb=0;Gb=cc;while(1){Bb=(Ab|0)==0;if(ob){if(Bb){if(!(ub[k[gb>>2]&63](a)|0)){Ma=0;Na=303;break a}gc=k[lb>>2]|0;hc=k[ib>>2]|0}else{gc=Ab;hc=Gb}mb=gc+-1|0;Eb=hc+1|0;ic=l[hc>>0]<<8;if(!mb){if(!(ub[k[gb>>2]&63](a)|0)){Ma=0;Na=303;break a}jc=k[lb>>2]|0;kc=k[ib>>2]|0}else{jc=mb;kc=Eb}lc=jc;mc=kc;nc=l[kc>>0]|ic}else{if(Bb){if(!(ub[k[gb>>2]&63](a)|0)){Ma=0;Na=303;break a}oc=k[lb>>2]|0;pc=k[ib>>2]|0}else{oc=Ab;pc=Gb}lc=oc;mc=pc;nc=l[pc>>0]|0}j[Xb+(k[bc+(hb<<2)>>2]<<1)>>1]=nc;hb=hb+1|0;Bb=lc+-1|0;ic=mc+1|0;if((hb|0)>=(ac|0)){dc=Bb;ec=ac;fc=ic;break}else{Ab=Bb;Gb=ic}}}Gb=k[a>>2]|0;c:do if((k[Gb+104>>2]|0)>1){Ab=Gb;hb=0;while(1){k[Ab+24>>2]=m[Xb+(hb<<1)>>1];k[Ab+28>>2]=m[Xb+((hb|1)<<1)>>1];k[Ab+32>>2]=m[Xb+((hb|2)<<1)>>1];k[Ab+36>>2]=m[Xb+((hb|3)<<1)>>1];k[Ab+40>>2]=m[Xb+((hb|4)<<1)>>1];k[Ab+44>>2]=m[Xb+((hb|5)<<1)>>1];k[Ab+48>>2]=m[Xb+((hb|6)<<1)>>1];k[Ab+52>>2]=m[Xb+((hb|7)<<1)>>1];k[Ab+20>>2]=95;rb[k[Ab+4>>2]&31](a,2);ic=hb+8|0;if((ic|0)>=64)break c;Ab=k[a>>2]|0;hb=ic}}while(0);Gb=Fb-ec+(ob?0-ec|0:0)|0;if((Gb|0)>0){Ua=dc;Va=Gb;Ra=fc}else{qc=dc;rc=Gb;sc=fc;break}}}else{qc=Qa;rc=Ta;sc=nb}if(rc){Ra=k[a>>2]|0;k[Ra+20>>2]=12;qb[k[Ra>>2]&127](a)}k[ib>>2]=sc;k[lb>>2]=qc;break}case 221:{Ra=k[g>>2]|0;Va=Ra+4|0;Ua=k[Va>>2]|0;if(!Ua){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}tc=k[Va>>2]|0}else tc=Ua;Ua=k[Ra>>2]|0;gb=tc+-1|0;bb=Ua+1|0;cb=l[Ua>>0]<<8;if(!gb){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}uc=k[Va>>2]|0;vc=k[Ra>>2]|0}else{uc=gb;vc=bb}bb=uc+-1|0;gb=vc+1|0;if((l[vc>>0]|cb|0)!=4){cb=k[a>>2]|0;k[cb+20>>2]=12;qb[k[cb>>2]&127](a)}if(!bb){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}wc=k[Va>>2]|0;xc=k[Ra>>2]|0}else{wc=bb;xc=gb}gb=wc+-1|0;bb=xc+1|0;cb=l[xc>>0]<<8;if(!gb){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}yc=k[Va>>2]|0;zc=k[Ra>>2]|0}else{yc=gb;zc=bb}bb=l[zc>>0]|cb;cb=k[a>>2]|0;k[cb+20>>2]=84;k[cb+24>>2]=bb;rb[k[cb+4>>2]&31](a,1);k[ha>>2]=bb;k[Ra>>2]=zc+1;k[Va>>2]=yc+-1;break}case 248:{Va=k[g>>2]|0;Ra=k[Va>>2]|0;bb=Va+4|0;cb=k[bb>>2]|0;if(!(k[(k[f>>2]|0)+16>>2]|0)){gb=k[a>>2]|0;k[gb+20>>2]=60;Sq(gb+24|0,156277,80)|0;qb[k[k[a>>2]>>2]&127](a)}do if((k[Ja>>2]|0)>=3){if(!cb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Ac=k[bb>>2]|0;Bc=k[Va>>2]|0}else{Ac=cb;Bc=Ra}gb=Ac+-1|0;Ua=Bc+1|0;Pa=l[Bc>>0]<<8;if(!gb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Cc=k[bb>>2]|0;Dc=k[Va>>2]|0}else{Cc=gb;Dc=Ua}Ua=Cc+-1|0;gb=Dc+1|0;if((l[Dc>>0]|Pa|0)!=24){Pa=k[a>>2]|0;k[Pa+20>>2]=12;qb[k[Pa>>2]&127](a)}if(!Ua){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Ec=k[bb>>2]|0;Fc=k[Va>>2]|0}else{Ec=Ua;Fc=gb}gb=Ec+-1|0;Ua=Fc+1|0;if((i[Fc>>0]|0)!=13){Pa=k[a>>2]|0;k[Pa+20>>2]=70;k[Pa+24>>2]=k[e>>2];qb[k[Pa>>2]&127](a)}if(!gb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Gc=k[bb>>2]|0;Hc=k[Va>>2]|0}else{Gc=gb;Hc=Ua}Ua=Gc+-1|0;gb=Hc+1|0;Pa=l[Hc>>0]<<8;if(!Ua){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Ic=k[bb>>2]|0;Jc=k[Va>>2]|0}else{Ic=Ua;Jc=gb}gb=Ic+-1|0;Ua=Jc+1|0;if((l[Jc>>0]|Pa|0)==255){if(!gb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Kc=k[bb>>2]|0;Lc=k[Va>>2]|0}else{Kc=gb;Lc=Ua}Pa=Kc+-1|0;ab=Lc+1|0;if((i[Lc>>0]|0)==3){if(!Pa){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Mc=k[bb>>2]|0;Nc=k[Va>>2]|0}else{Mc=Pa;Nc=ab}fb=Mc+-1|0;Gb=Nc+1|0;hb=k[Ka>>2]|0;if((l[Nc>>0]|0)==(k[hb+88>>2]|0)){if(!fb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Oc=k[Ka>>2]|0;Pc=k[bb>>2]|0;Qc=k[Va>>2]|0}else{Oc=hb;Pc=fb;Qc=Gb}hb=Pc+-1|0;Ab=Qc+1|0;if((l[Qc>>0]|0)==(k[Oc>>2]|0)){if(!hb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Rc=k[Ka>>2]|0;Sc=k[bb>>2]|0;Tc=k[Va>>2]|0}else{Rc=Oc;Sc=hb;Tc=Ab}ic=Sc+-1|0;Bb=Tc+1|0;if((l[Tc>>0]|0)!=(k[Rc+176>>2]|0)){Uc=ic;Vc=Bb;Na=288;break}if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Wc=k[bb>>2]|0;Xc=k[Va>>2]|0}else{Wc=ic;Xc=Bb}Bb=Wc+-1|0;ic=Xc+1|0;if((i[Xc>>0]|0)!=-128){Uc=Bb;Vc=ic;Na=288;break}if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Yc=k[bb>>2]|0;Zc=k[Va>>2]|0}else{Yc=Bb;Zc=ic}ic=Yc+-1|0;Bb=Zc+1|0;Eb=l[Zc>>0]<<8;if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}_c=k[bb>>2]|0;$c=k[Va>>2]|0}else{_c=ic;$c=Bb}Bb=_c+-1|0;ic=$c+1|0;if(l[$c>>0]|Eb){Uc=Bb;Vc=ic;Na=288;break}if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}ad=k[bb>>2]|0;bd=k[Va>>2]|0}else{ad=Bb;bd=ic}ic=ad+-1|0;Bb=bd+1|0;Eb=l[bd>>0]<<8;if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}cd=k[bb>>2]|0;dd=k[Va>>2]|0}else{cd=ic;dd=Bb}Bb=cd+-1|0;ic=dd+1|0;if(l[dd>>0]|Eb){Uc=Bb;Vc=ic;Na=288;break}if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}ed=k[bb>>2]|0;fd=k[Va>>2]|0}else{ed=Bb;fd=ic}ic=ed+-1|0;Bb=fd+1|0;if(i[fd>>0]|0){Uc=ic;Vc=Bb;Na=288;break}if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}gd=k[bb>>2]|0;hd=k[Va>>2]|0}else{gd=ic;hd=Bb}Bb=gd+-1|0;ic=hd+1|0;Eb=l[hd>>0]<<8;if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}id=k[bb>>2]|0;jd=k[Va>>2]|0}else{id=Bb;jd=ic}ic=id+-1|0;Bb=jd+1|0;if((l[jd>>0]|Eb|0)!=1){Uc=ic;Vc=Bb;Na=288;break}if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}kd=k[bb>>2]|0;ld=k[Va>>2]|0}else{kd=ic;ld=Bb}Bb=kd+-1|0;ic=ld+1|0;Eb=l[ld>>0]<<8;if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}md=k[bb>>2]|0;nd=k[Va>>2]|0}else{md=Bb;nd=ic}ic=md+-1|0;Bb=nd+1|0;if(l[nd>>0]|Eb){Uc=ic;Vc=Bb;Na=288;break}if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}od=k[bb>>2]|0;pd=k[Va>>2]|0}else{od=ic;pd=Bb}Bb=od+-1|0;ic=pd+1|0;if(i[pd>>0]|0){Uc=Bb;Vc=ic;Na=288;break}if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}qd=k[bb>>2]|0;rd=k[Va>>2]|0}else{qd=Bb;rd=ic}ic=qd+-1|0;Bb=rd+1|0;Eb=l[rd>>0]<<8;if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}sd=k[bb>>2]|0;td=k[Va>>2]|0}else{sd=ic;td=Bb}Bb=sd+-1|0;ic=td+1|0;if((l[td>>0]|Eb|0)!=1){Uc=Bb;Vc=ic;Na=288;break}if(!Bb){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}ud=k[bb>>2]|0;vd=k[Va>>2]|0}else{ud=Bb;vd=ic}ic=ud+-1|0;Bb=vd+1|0;Eb=l[vd>>0]<<8;if(!ic){if(!(ub[k[Va+12>>2]&63](a)|0)){Ma=0;Na=303;break a}wd=k[bb>>2]|0;xd=k[Va>>2]|0}else{wd=ic;xd=Bb}Bb=wd+-1|0;ic=xd+1|0;if(!(l[xd>>0]|Eb)){yd=Bb;zd=ic}else{Uc=Bb;Vc=ic;Na=288}}else{Uc=hb;Vc=Ab;Na=288}}else{Uc=fb;Vc=Gb;Na=288}}else{Uc=Pa;Vc=ab;Na=288}}else{Uc=gb;Vc=Ua;Na=288}}else{Uc=cb;Vc=Ra;Na=288}while(0);if((Na|0)==288){Na=0;Ra=k[a>>2]|0;k[Ra+20>>2]=28;qb[k[Ra>>2]&127](a);yd=Uc;zd=Vc}k[ja>>2]=1;k[Va>>2]=zd;k[bb>>2]=yd;break}case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:{if(!(ub[k[(k[f>>2]|0)+32+(Oa+-224<<2)>>2]&63](a)|0)){Ma=0;Na=303;break a}break}case 254:{if(!(ub[k[(k[f>>2]|0)+28>>2]&63](a)|0)){Ma=0;Na=303;break a}break}case 1:case 215:case 214:case 213:case 212:case 211:case 210:case 209:case 208:{Ra=k[a>>2]|0;k[Ra+20>>2]=94;k[Ra+24>>2]=Oa;rb[k[Ra+4>>2]&31](a,1);break}case 220:{Ra=k[g>>2]|0;cb=Ra+4|0;lb=k[cb>>2]|0;if(!lb){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Ad=k[cb>>2]|0}else Ad=lb;lb=k[Ra>>2]|0;ib=Ad+-1|0;nb=lb+1|0;Ta=l[lb>>0]<<8;if(!ib){if(!(ub[k[Ra+12>>2]&63](a)|0)){Ma=0;Na=303;break a}Bd=k[cb>>2]|0;Cd=k[Ra>>2]|0}else{Bd=ib;Cd=nb}nb=l[Cd>>0]|Ta;Ta=nb+-2|0;ib=k[a>>2]|0;k[ib+20>>2]=93;k[ib+24>>2]=k[e>>2];k[ib+28>>2]=Ta;rb[k[ib+4>>2]&31](a,1);k[Ra>>2]=Cd+1;k[cb>>2]=Bd+-1;if(nb>>>0>2)rb[k[(k[g>>2]|0)+16>>2]&31](a,Ta);break}default:{Ta=k[a>>2]|0;k[Ta+20>>2]=70;k[Ta+24>>2]=Oa;qb[k[Ta>>2]&127](a)}}while(0);k[e>>2]=0;La=0}if((Na|0)==25){La=k[g>>2]|0;g=k[La>>2]|0;Oa=La+4|0;Bd=k[Oa>>2]|0;if(!(k[(k[f>>2]|0)+16>>2]|0)){Cd=k[a>>2]|0;k[Cd+20>>2]=60;Sq(Cd+24|0,156273,80)|0;qb[k[k[a>>2]>>2]&127](a)}do if(!Bd)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{Dd=k[Oa>>2]|0;Ed=k[La>>2]|0;break}else{Dd=Bd;Ed=g}while(0);g=Dd+-1|0;Dd=Ed+1|0;Bd=l[Ed>>0]<<8;do if(!g)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{Fd=k[Oa>>2]|0;Gd=k[La>>2]|0;break}else{Fd=g;Gd=Dd}while(0);Dd=Fd+-1|0;Fd=Gd+1|0;g=l[Gd>>0]|Bd;do if(!Dd)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{Hd=k[Oa>>2]|0;Id=k[La>>2]|0;break}else{Hd=Dd;Id=Fd}while(0);Fd=i[Id>>0]|0;Dd=Fd&255;Bd=k[a>>2]|0;k[Bd+20>>2]=105;k[Bd+24>>2]=Dd;rb[k[Bd+4>>2]&31](a,1);do if(!((Fd&255)>4|(g|0)!=((Dd<<1)+6|0))){if(Fd<<24>>24){k[a+340>>2]=Dd;Bd=Hd+-1|0;Jd=(Bd|0)==0;Kd=Bd;Ld=Id+1|0;Na=42;break}if(k[a+224>>2]|0){k[a+340>>2]=Dd;Bd=Hd+-1|0;if(!Bd){Md=1;Na=61}else{Nd=1;Od=Bd;Pd=Id+1|0}}else Na=41}else Na=41;while(0);if((Na|0)==41){g=k[a>>2]|0;k[g+20>>2]=12;qb[k[g>>2]&127](a);k[a+340>>2]=Dd;g=Hd+-1|0;Hd=Id+1|0;Id=(g|0)==0;if(!(Fd<<24>>24)){Qd=Id;Rd=1;Sd=g;Td=Hd;Na=60}else{Jd=Id;Kd=g;Ld=Hd;Na=42}}d:do if((Na|0)==42){Hd=La+12|0;g=a+344|0;Id=Jd;Fd=Kd;Bd=0;Gd=Ld;while(1){if(Id){if(!(ub[k[Hd>>2]&63](a)|0)){Ma=0;Na=303;break}Ud=k[Oa>>2]|0;Vd=k[La>>2]|0}else{Ud=Fd;Vd=Gd}Ed=Ud+-1|0;Cd=Vd+1|0;Ad=l[Vd>>0]|0;e:do if((Bd|0)>0){yd=0;while(1){if((Ad|0)==(k[k[a+344+(yd<<2)>>2]>>2]|0))break;yd=yd+1|0;if((yd|0)>=(Bd|0)){Wd=Ad;break e}}yd=k[k[g>>2]>>2]|0;if((Bd|0)>1){ob=yd;Fb=1;while(1){zd=k[k[a+344+(Fb<<2)>>2]>>2]|0;ja=(zd|0)>(ob|0)?zd:ob;Fb=Fb+1|0;if((Fb|0)==(Bd|0)){Xd=ja;break}else ob=ja}}else Xd=yd;Wd=Xd+1|0}else Wd=Ad;while(0);Ad=k[Ka>>2]|0;bb=k[Ja>>2]|0;f:do if((bb|0)>0){Va=0;ob=Ad;while(1){if((Wd|0)==(k[ob>>2]|0)){Yd=ob;break f}Va=Va+1|0;Fb=ob+88|0;if((Va|0)>=(bb|0)){Zd=Fb;Na=55;break}else ob=Fb}}else{Zd=Ad;Na=55}while(0);if((Na|0)==55){Na=0;Ad=k[a>>2]|0;k[Ad+20>>2]=4;k[Ad+24>>2]=Wd;qb[k[Ad>>2]&127](a);Yd=Zd}k[a+344+(Bd<<2)>>2]=Yd;if(!Ed){if(!(ub[k[Hd>>2]&63](a)|0)){Ma=0;Na=303;break}_d=k[Oa>>2]|0;$d=k[La>>2]|0}else{_d=Ed;$d=Cd}Ad=l[$d>>0]|0;bb=Yd+20|0;k[bb>>2]=Ad>>>4;ob=Yd+24|0;k[ob>>2]=Ad&15;Ad=k[a>>2]|0;k[Ad+24>>2]=k[Yd>>2];k[Ad+28>>2]=k[bb>>2];k[Ad+32>>2]=k[ob>>2];k[Ad+20>>2]=106;rb[k[Ad+4>>2]&31](a,1);Bd=Bd+1|0;Ad=_d+-1|0;ob=$d+1|0;bb=(Ad|0)==0;if((Bd|0)>=(Dd|0)){Qd=bb;Rd=0;Sd=Ad;Td=ob;Na=60;break d}else{Id=bb;Fd=Ad;Gd=ob}}if((Na|0)==303){r=b;return Ma|0}}while(0);if((Na|0)==60)if(Qd){Md=Rd;Na=61}else{Nd=Rd;Od=Sd;Pd=Td}do if((Na|0)==61)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{Nd=Md;Od=k[Oa>>2]|0;Pd=k[La>>2]|0;break}while(0);Md=Od+-1|0;Od=Pd+1|0;Td=a+412|0;k[Td>>2]=l[Pd>>0];do if(!Md)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{ae=k[Oa>>2]|0;be=k[La>>2]|0;break}else{ae=Md;be=Od}while(0);Od=ae+-1|0;ae=be+1|0;Md=a+416|0;k[Md>>2]=l[be>>0];do if(!Od)if(!(ub[k[La+12>>2]&63](a)|0)){Ma=0;r=b;return Ma|0}else{ce=k[Oa>>2]|0;de=k[La>>2]|0;break}else{ce=Od;de=ae}while(0);ae=l[de>>0]|0;Od=a+420|0;k[Od>>2]=ae>>>4;be=a+424|0;k[be>>2]=ae&15;ae=k[a>>2]|0;k[ae+24>>2]=k[Td>>2];k[ae+28>>2]=k[Md>>2];k[ae+32>>2]=k[Od>>2];k[ae+36>>2]=k[be>>2];k[ae+20>>2]=107;rb[k[ae+4>>2]&31](a,1);k[(k[f>>2]|0)+20>>2]=0;if(!Nd){Nd=a+144|0;k[Nd>>2]=(k[Nd>>2]|0)+1}k[La>>2]=de+1;k[Oa>>2]=ce+-1;k[e>>2]=0;Ma=1;r=b;return Ma|0}else if((Na|0)==72){ce=k[a>>2]|0;k[ce+20>>2]=87;rb[k[ce+4>>2]&31](a,1);k[e>>2]=0;Ma=2;r=b;return Ma|0}else if((Na|0)==127){Ma=0;r=b;return Ma|0}else if((Na|0)==303){r=b;return Ma|0}return 0}function nl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=a+440|0;c=k[b>>2]|0;do if(!c)if(!(kl(a)|0)){d=0;return d|0}else{e=k[b>>2]|0;break}else e=c;while(0);c=a+464|0;f=k[(k[c>>2]|0)+20>>2]|0;if((e|0)!=(f+208|0)){if(!(yb[k[(k[a+24>>2]|0)+20>>2]&127](a,f)|0)){d=0;return d|0}}else{e=k[a>>2]|0;k[e+20>>2]=100;k[e+24>>2]=f;rb[k[e+4>>2]&31](a,3);k[b>>2]=0}b=(k[c>>2]|0)+20|0;k[b>>2]=(k[b>>2]|0)+1&7;d=1;return d|0}function ol(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;b=a+24|0;c=k[b>>2]|0;d=c+4|0;e=k[d>>2]|0;do if(!e)if(!(ub[k[c+12>>2]&63](a)|0)){f=0;return f|0}else{g=k[d>>2]|0;break}else g=e;while(0);e=k[c>>2]|0;h=g+-1|0;g=e+1|0;i=(l[e>>0]|0)<<8;do if(!h)if(!(ub[k[c+12>>2]&63](a)|0)){f=0;return f|0}else{j=k[d>>2]|0;m=k[c>>2]|0;break}else{j=h;m=g}while(0);g=l[m>>0]|0|i;i=g+-2|0;h=k[a>>2]|0;k[h+20>>2]=93;k[h+24>>2]=k[a+440>>2];k[h+28>>2]=i;rb[k[h+4>>2]&31](a,1);k[c>>2]=m+1;k[d>>2]=j+-1;if(g>>>0<=2){f=1;return f|0}rb[k[(k[b>>2]|0)+16>>2]&31](a,i);f=1;return f|0}function pl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;b=r;r=r+16|0;c=b;d=a+24|0;e=k[d>>2]|0;f=e+4|0;g=k[f>>2]|0;do if(!g)if(!(ub[k[e+12>>2]&63](a)|0)){h=0;r=b;return h|0}else{j=k[f>>2]|0;break}else j=g;while(0);g=k[e>>2]|0;m=j+-1|0;j=g+1|0;n=l[g>>0]<<8;do if(!m)if(!(ub[k[e+12>>2]&63](a)|0)){h=0;r=b;return h|0}else{o=k[f>>2]|0;p=k[e>>2]|0;break}else{o=m;p=j}while(0);j=l[p>>0]|n;n=j+-2|0;m=(n|0)>13?14:j>>>0>2?n:0;j=o+-1|0;o=p+1|0;a:do if(!m){q=j;s=o}else{p=e+12|0;g=j;t=0;u=o;while(1){if(!g){if(!(ub[k[p>>2]&63](a)|0)){h=0;break}v=k[f>>2]|0;w=k[e>>2]|0}else{v=g;w=u}i[c+t>>0]=i[w>>0]|0;t=t+1|0;x=v+-1|0;y=w+1|0;if(t>>>0>=m>>>0){q=x;s=y;break a}else{g=x;u=y}}r=b;return h|0}while(0);w=n-m|0;v=k[a+440>>2]|0;b:do switch(v|0){case 224:{ql(a,c,m,w);break}case 238:{if((((m>>>0>11&(i[c>>0]|0)==65?(i[c+1>>0]|0)==100:0)?(i[c+2>>0]|0)==111:0)?(i[c+3>>0]|0)==98:0)?(i[c+4>>0]|0)==101:0){o=l[c+7>>0]<<8|l[c+8>>0];j=l[c+9>>0]<<8|l[c+10>>0];u=i[c+11>>0]|0;g=k[a>>2]|0;k[g+24>>2]=l[c+5>>0]<<8|l[c+6>>0];k[g+28>>2]=o;k[g+32>>2]=j;k[g+36>>2]=u&255;k[g+20>>2]=78;rb[k[g+4>>2]&31](a,1);k[a+296>>2]=1;i[a+300>>0]=u;break b}u=k[a>>2]|0;k[u+20>>2]=80;k[u+24>>2]=n;rb[k[u+4>>2]&31](a,1);break}default:{u=k[a>>2]|0;k[u+20>>2]=70;k[u+24>>2]=v;qb[k[u>>2]&127](a)}}while(0);k[e>>2]=s;k[f>>2]=q;if((w|0)<=0){h=1;r=b;return h|0}rb[k[(k[d>>2]|0)+16>>2]&31](a,w);h=1;r=b;return h|0}function ql(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=d+c|0;if(c>>>0>13){if((i[b>>0]|0)==74)if((((i[b+1>>0]|0)==70?(i[b+2>>0]|0)==73:0)?(i[b+3>>0]|0)==70:0)?(i[b+4>>0]|0)==0:0){k[a+284>>2]=1;d=i[b+5>>0]|0;f=a+288|0;i[f>>0]=d;g=i[b+6>>0]|0;h=a+289|0;i[h>>0]=g;m=i[b+7>>0]|0;n=a+290|0;i[n>>0]=m;o=(l[b+8>>0]<<8|l[b+9>>0])&65535;p=a+292|0;j[p>>1]=o;q=(l[b+10>>0]<<8|l[b+11>>0])&65535;r=a+294|0;j[r>>1]=q;if((d+-1&255)<2){s=a;t=d;u=g;v=o;w=q;x=m}else{m=k[a>>2]|0;k[m+20>>2]=122;k[m+24>>2]=d&255;k[m+28>>2]=g&255;rb[k[m+4>>2]&31](a,-1);s=a;t=i[f>>0]|0;u=i[h>>0]|0;v=j[p>>1]|0;w=j[r>>1]|0;x=i[n>>0]|0}n=k[a>>2]|0;k[n+24>>2]=t&255;k[n+28>>2]=u&255;k[n+32>>2]=v&65535;k[n+36>>2]=w&65535;k[n+40>>2]=x&255;k[n+20>>2]=89;rb[k[n+4>>2]&31](s,1);n=b+12|0;x=i[n>>0]|0;w=b+13|0;v=i[w>>0]|0;if(!((v|x)<<24>>24)){y=x;z=v}else{v=k[a>>2]|0;k[v+20>>2]=92;k[v+24>>2]=l[n>>0];k[v+28>>2]=l[w>>0];rb[k[v+4>>2]&31](s,1);y=i[n>>0]|0;z=i[w>>0]|0}w=e+-14|0;if((w|0)==(ha((y&255)*3|0,z&255)|0))return;z=k[a>>2]|0;k[z+20>>2]=90;k[z+24>>2]=w;rb[k[z+4>>2]&31](s,1);return}else A=16}else if(c>>>0>5?(i[b>>0]|0)==74:0)A=16;if(((((A|0)==16?(i[b+1>>0]|0)==70:0)?(i[b+2>>0]|0)==88:0)?(i[b+3>>0]|0)==88:0)?(i[b+4>>0]|0)==0:0){A=b+5|0;switch(l[A>>0]|0){case 16:{b=k[a>>2]|0;k[b+20>>2]=110;k[b+24>>2]=e;rb[k[b+4>>2]&31](a,1);return}case 17:{b=k[a>>2]|0;k[b+20>>2]=111;k[b+24>>2]=e;rb[k[b+4>>2]&31](a,1);return}case 19:{b=k[a>>2]|0;k[b+20>>2]=112;k[b+24>>2]=e;rb[k[b+4>>2]&31](a,1);return}default:{b=k[a>>2]|0;k[b+20>>2]=91;k[b+24>>2]=l[A>>0];k[b+28>>2]=e;rb[k[b+4>>2]&31](a,1);return}}}b=k[a>>2]|0;k[b+20>>2]=79;k[b+24>>2]=e;rb[k[b+4>>2]&31](a,1);return}function rl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;e=k[a+24>>2]|0;f=k[e>>2]|0;g=e+4|0;h=k[g>>2]|0;k[a+220>>2]=b;k[a+224>>2]=c;k[a+228>>2]=d;do if(!h)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{j=k[g>>2]|0;m=k[e>>2]|0;break}else{j=h;m=f}while(0);f=j+-1|0;j=m+1|0;h=(l[m>>0]|0)<<8;do if(!f)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{n=k[g>>2]|0;o=k[e>>2]|0;break}else{n=f;o=j}while(0);j=n+-1|0;n=o+1|0;f=l[o>>0]|0|h;do if(!j)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{p=k[g>>2]|0;q=k[e>>2]|0;break}else{p=j;q=n}while(0);n=p+-1|0;p=q+1|0;k[a+212>>2]=l[q>>0];do if(!n)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{r=k[g>>2]|0;s=k[e>>2]|0;break}else{r=n;s=p}while(0);p=r+-1|0;r=s+1|0;n=(l[s>>0]|0)<<8;s=a+32|0;k[s>>2]=n;do if(!p)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{t=k[s>>2]|0;u=k[g>>2]|0;v=k[e>>2]|0;break}else{t=n;u=p;v=r}while(0);r=u+-1|0;u=v+1|0;k[s>>2]=t+(l[v>>0]|0);do if(!r)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{w=k[g>>2]|0;x=k[e>>2]|0;break}else{w=r;x=u}while(0);u=w+-1|0;w=x+1|0;r=(l[x>>0]|0)<<8;x=a+28|0;k[x>>2]=r;do if(!u)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{y=k[x>>2]|0;z=k[g>>2]|0;A=k[e>>2]|0;break}else{y=r;z=u;A=w}while(0);w=z+-1|0;z=A+1|0;k[x>>2]=y+(l[A>>0]|0);do if(!w)if(!(ub[k[e+12>>2]&63](a)|0)){i=0;return i|0}else{B=k[g>>2]|0;C=k[e>>2]|0;break}else{B=w;C=z}while(0);z=a+36|0;k[z>>2]=l[C>>0];w=f+-8|0;f=k[a>>2]|0;k[f+24>>2]=k[a+440>>2];k[f+28>>2]=k[x>>2];k[f+32>>2]=k[s>>2];k[f+36>>2]=k[z>>2];k[f+20>>2]=102;rb[k[f+4>>2]&31](a,1);f=a+464|0;if(k[(k[f>>2]|0)+16>>2]|0){A=k[a>>2]|0;k[A+20>>2]=61;qb[k[A>>2]&127](a)}if(((k[s>>2]|0)!=0?(k[x>>2]|0)!=0:0)?(x=k[z>>2]|0,(x|0)>=1):0)D=x;else{x=k[a>>2]|0;k[x+20>>2]=33;qb[k[x>>2]&127](a);D=k[z>>2]|0}if((w|0)!=(D*3|0)){D=k[a>>2]|0;k[D+20>>2]=12;qb[k[D>>2]&127](a)}D=a+216|0;if(!(k[D>>2]|0)){w=nb[k[k[a+4>>2]>>2]&63](a,1,(k[z>>2]|0)*88|0)|0;k[D>>2]=w}w=B+-1|0;B=C+1|0;a:do if((k[z>>2]|0)>0){C=e+12|0;x=w;s=0;A=B;while(1){if(!x){if(!(ub[k[C>>2]&63](a)|0)){i=0;E=55;break}F=k[g>>2]|0;G=k[e>>2]|0}else{F=x;G=A}y=F+-1|0;u=G+1|0;r=l[G>>0]|0;v=k[D>>2]|0;b:do if((s|0)>0){t=v;p=0;while(1){if((r|0)==(k[t>>2]|0))break;p=p+1|0;n=t+88|0;if((p|0)>=(s|0)){H=r;I=n;break b}else t=n}t=k[v>>2]|0;p=v+88|0;if((s|0)>1){n=v;q=t;j=p;h=1;while(1){o=k[n+88>>2]|0;m=(o|0)>(q|0)?o:q;h=h+1|0;if((h|0)==(s|0)){J=m;break}else{o=j;q=m;j=j+88|0;n=o}}K=J;L=v+(s*88|0)|0}else{K=t;L=p}H=K+1|0;I=L}else{H=r;I=v}while(0);k[I>>2]=H;k[I+4>>2]=s;if(!y){if(!(ub[k[C>>2]&63](a)|0)){i=0;E=55;break}M=k[g>>2]|0;N=k[e>>2]|0}else{M=y;N=u}v=M+-1|0;r=N+1|0;n=l[N>>0]|0;j=I+8|0;k[j>>2]=n>>>4;q=I+12|0;k[q>>2]=n&15;if(!v){if(!(ub[k[C>>2]&63](a)|0)){i=0;E=55;break}O=k[g>>2]|0;P=k[e>>2]|0}else{O=v;P=r}r=I+16|0;k[r>>2]=l[P>>0];v=k[a>>2]|0;k[v+24>>2]=k[I>>2];k[v+28>>2]=k[j>>2];k[v+32>>2]=k[q>>2];k[v+36>>2]=k[r>>2];k[v+20>>2]=103;rb[k[v+4>>2]&31](a,1);s=s+1|0;v=O+-1|0;r=P+1|0;if((s|0)>=(k[z>>2]|0)){Q=v;R=r;break a}else{x=v;A=r}}if((E|0)==55)return i|0}else{Q=w;R=B}while(0);k[(k[f>>2]|0)+16>>2]=1;k[e>>2]=R;k[g>>2]=Q;i=1;return i|0}function sl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=k[a+20>>2]|0;if((b|0)!=202){c=k[a>>2]|0;k[c+20>>2]=21;k[c+24>>2]=b;qb[k[c>>2]&127](a)}cl(a);c=k[a+216>>2]|0;b=a+36|0;d=k[b>>2]|0;e=(d|0)>0;if(e){f=k[a+324>>2]|0;g=(k[a+76>>2]|0)!=0?8:4;h=a+320|0;i=k[a+328>>2]|0;if((f|0)>(g|0)){j=(i|0)>(g|0);l=f<<1;m=0;n=c;while(1){o=n+36|0;k[o>>2]=f;a:do if(j)p=1;else{q=k[h>>2]|0;r=k[n+12>>2]|0;s=1;while(1){t=s<<1;if((q|0)%(ha(t,r)|0)|0){p=s;break a}if((ha(i,t)|0)>(g|0)){p=t;break}else s=t}}while(0);s=ha(i,p)|0;r=n+40|0;k[r>>2]=s;q=s<<1;if((f|0)<=(q|0)){if((s|0)>(l|0))k[r>>2]=l}else k[o>>2]=q;m=m+1|0;if((m|0)>=(d|0))break;else n=n+88|0}}else{n=k[a+316>>2]|0;m=(i|0)>(g|0);l=0;p=c;while(1){j=k[p+8>>2]|0;q=1;while(1){r=q<<1;if((n|0)%(ha(r,j)|0)|0){u=q;break}if((ha(f,r)|0)>(g|0)){u=r;break}else q=r}q=ha(f,u)|0;j=p+36|0;k[j>>2]=q;b:do if(m)v=1;else{o=k[h>>2]|0;r=k[p+12>>2]|0;s=1;while(1){t=s<<1;if((o|0)%(ha(t,r)|0)|0){v=s;break b}if((ha(i,t)|0)>(g|0)){v=t;break}else s=t}}while(0);s=ha(i,v)|0;r=p+40|0;k[r>>2]=s;o=s<<1;if((q|0)<=(o|0)){t=q<<1;if((s|0)>(t|0))k[r>>2]=t}else k[j>>2]=o;l=l+1|0;if((l|0)>=(d|0))break;else p=p+88|0}}if(e){e=a+28|0;p=a+316|0;l=a+428|0;v=a+32|0;i=a+320|0;g=0;h=c;while(1){c=ha(ha(k[h+8>>2]|0,k[e>>2]|0)|0,k[h+36>>2]|0)|0;m=pm(c,ha(k[l>>2]|0,k[p>>2]|0)|0)|0;k[h+44>>2]=m;m=ha(ha(k[h+12>>2]|0,k[v>>2]|0)|0,k[h+40>>2]|0)|0;c=pm(m,ha(k[l>>2]|0,k[i>>2]|0)|0)|0;k[h+48>>2]=c;g=g+1|0;c=k[b>>2]|0;if((g|0)>=(c|0)){w=c;break}else h=h+88|0}}else w=d}else w=d;switch(k[a+44>>2]|0){case 1:{k[a+120>>2]=1;x=1;break}case 6:case 2:{k[a+120>>2]=3;x=3;break}case 7:case 3:{k[a+120>>2]=3;x=3;break}case 5:case 4:{k[a+120>>2]=4;x=4;break}default:{k[a+120>>2]=w;x=w}}k[a+124>>2]=(k[a+84>>2]|0)==0?x:1;if(!(ul(a)|0)){y=1;z=a+128|0;k[z>>2]=y;return}y=k[a+320>>2]|0;z=a+128|0;k[z>>2]=y;return}function tl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,28)|0;k[a+444>>2]=c;k[c>>2]=43;k[c+4>>2]=44;k[c+8>>2]=0;d=k[a+212>>2]|0;if((d|0)!=8){e=k[a>>2]|0;k[e+20>>2]=16;k[e+24>>2]=d;qb[k[e>>2]&127](a)}sl(a);e=nb[k[k[b>>2]>>2]&63](a,1,1280)|0;qr(e|0,0,512)|0;k[a+336>>2]=e+512;d=0;do{i[e+(d+512)>>0]=d;d=d+1|0}while((d|0)!=256);qr(e+768|0,-1,512)|0;if(((k[a+116>>2]|0)!=0?(k[a+112>>2]|0)!=0:0)?(e=a+120|0,(k[e>>2]|0)>=1):0)f=e;else{e=k[a>>2]|0;k[e+20>>2]=33;qb[k[e>>2]&127](a);f=a+120|0}e=c+12|0;k[e>>2]=0;d=ul(a)|0;g=c+16|0;k[g>>2]=d;d=c+20|0;k[d>>2]=0;h=c+24|0;k[h>>2]=0;do if(!(k[a+84>>2]|0)){k[a+100>>2]=0;k[a+104>>2]=0;k[a+108>>2]=0;j=a+68|0}else{if(!(k[a+64>>2]|0)){k[a+100>>2]=0;k[a+104>>2]=0;k[a+108>>2]=0}c=a+68|0;if(k[c>>2]|0){l=k[a>>2]|0;k[l+20>>2]=48;qb[k[l>>2]&127](a)}do if((k[f>>2]|0)==3){if(k[a+136>>2]|0){k[a+104>>2]=1;break}if(!(k[a+92>>2]|0)){k[a+100>>2]=1;break}else{k[a+108>>2]=1;break}}else{k[a+100>>2]=1;k[a+104>>2]=0;k[a+108>>2]=0;k[a+136>>2]=0}while(0);if(k[a+100>>2]|0){Wl(a);k[d>>2]=k[a+484>>2]}if((k[a+108>>2]|0)==0?(k[a+104>>2]|0)==0:0){j=c;break}em(a);k[h>>2]=k[a+484>>2];j=c}while(0);if(!(k[j>>2]|0)){if(!(k[g>>2]|0)){Vn(a);Il(a)}else xl(a);Dl(a,k[a+108>>2]|0)}fo(a);if(!(k[a+228>>2]|0))ho(a);else Dn(a);g=a+460|0;if(!(k[(k[g>>2]|0)+16>>2]|0))m=(k[a+64>>2]|0)!=0;else m=1;Nn(a,m&1);if(!(k[j>>2]|0))to(a,0);qb[k[(k[b>>2]|0)+24>>2]&127](a);qb[k[(k[g>>2]|0)+8>>2]&127](a);b=k[a+8>>2]|0;if(!b)return;if(k[a+64>>2]|0)return;if(!(k[(k[g>>2]|0)+16>>2]|0))return;g=k[a+36>>2]|0;j=(k[a+224>>2]|0)==0?g:(g*3|0)+2|0;k[b+4>>2]=0;g=ha(j,k[a+332>>2]|0)|0;k[b+8>>2]=g;k[b+12>>2]=0;k[b+16>>2]=(k[a+108>>2]|0)!=0?3:2;k[e>>2]=(k[e>>2]|0)+1;return}function ul(a){a=a|0;var b=0,c=0;if(k[a+308>>2]|0)return 0;switch(k[a+40>>2]|0){case 7:case 3:break;default:return 0}if((k[a+36>>2]|0)!=3)return 0;if((k[a+44>>2]|0)!=2)return 0;if((k[a+120>>2]|0)!=3)return 0;if(k[a+304>>2]|0)return 0;b=k[a+216>>2]|0;if((k[b+8>>2]|0)!=2)return 0;if((k[b+96>>2]|0)!=1)return 0;if((k[b+184>>2]|0)!=1)return 0;if((k[b+12>>2]|0)>2)return 0;if((k[b+100>>2]|0)!=1)return 0;if((k[b+188>>2]|0)!=1)return 0;c=k[b+36>>2]|0;if((c|0)!=(k[a+324>>2]|0))return 0;if((k[b+124>>2]|0)!=(c|0))return 0;if((k[b+212>>2]|0)!=(c|0))return 0;c=k[b+40>>2]|0;if((c|0)!=(k[a+328>>2]|0))return 0;if((k[b+128>>2]|0)==(c|0))return (k[b+216>>2]|0)==(c|0)|0;else return 0;return 0}function vl(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+444>>2]|0;c=b+8|0;if(!(k[c>>2]|0)){d=a+84|0;do if((k[d>>2]|0)!=0?(k[a+136>>2]|0)==0:0){if((k[a+92>>2]|0)!=0?(k[a+108>>2]|0)!=0:0){k[a+484>>2]=k[b+24>>2];k[c>>2]=1;break}if(!(k[a+100>>2]|0)){e=k[a>>2]|0;k[e+20>>2]=47;qb[k[e>>2]&127](a);break}else{k[a+484>>2]=k[b+20>>2];break}}while(0);qb[k[k[a+472>>2]>>2]&127](a);qb[k[(k[a+452>>2]|0)+8>>2]&127](a);if(!(k[a+68>>2]|0)){if(!(k[b+16>>2]|0))qb[k[k[a+480>>2]>>2]&127](a);qb[k[k[a+476>>2]>>2]&127](a);if(k[d>>2]|0)rb[k[k[a+484>>2]>>2]&31](a,k[c>>2]|0);rb[k[k[a+456>>2]>>2]&31](a,(k[c>>2]|0)!=0?3:0);rb[k[k[a+448>>2]>>2]&31](a,0)}}else{k[c>>2]=0;rb[k[k[a+484>>2]>>2]&31](a,0);rb[k[k[a+456>>2]>>2]&31](a,2);rb[k[k[a+448>>2]>>2]&31](a,2)}d=k[a+8>>2]|0;if(!d)return;e=k[b+12>>2]|0;k[d+12>>2]=e;b=((k[c>>2]|0)!=0?2:1)+e|0;e=d+16|0;k[e>>2]=b;if(!(k[a+64>>2]|0))return;if(k[(k[a+460>>2]|0)+20>>2]|0)return;k[e>>2]=b+((k[a+108>>2]|0)!=0?2:1);return}function wl(a){a=a|0;var b=0;b=k[a+444>>2]|0;if(k[a+84>>2]|0)qb[k[(k[a+484>>2]|0)+8>>2]&127](a);a=b+12|0;k[a>>2]=(k[a>>2]|0)+1;return}function xl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,48)|0;d=a+476|0;k[d>>2]=c;k[c>>2]=45;k[c+8>>2]=0;e=ha(k[a+120>>2]|0,k[a+112>>2]|0)|0;k[c+40>>2]=e;f=c+4|0;if((k[a+320>>2]|0)==2){k[f>>2]=3;k[c+12>>2]=11;g=nb[k[(k[b>>2]|0)+4>>2]&63](a,1,e)|0;k[c+32>>2]=g;h=k[d>>2]|0}else{k[f>>2]=4;k[c+12>>2]=12;k[c+32>>2]=0;h=c}c=(k[a+40>>2]|0)==7;f=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;d=h+16|0;k[d>>2]=f;f=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;g=h+20|0;k[g>>2]=f;f=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;e=h+24|0;k[e>>2]=f;f=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;k[h+28>>2]=f;h=k[d>>2]|0;d=k[g>>2]|0;g=k[e>>2]|0;if(c){c=0;e=-128;while(1){k[h+(c<<2)>>2]=(e*183763|0)+32768>>16;k[d+(c<<2)>>2]=(e*232260|0)+32768>>16;a=ha(e,-93603)|0;k[g+(c<<2)>>2]=a;a=(ha(e,-45107)|0)+32768|0;k[f+(c<<2)>>2]=a;c=c+1|0;if((c|0)==256)break;else e=e+1|0}return}else{e=0;c=-128;while(1){k[h+(e<<2)>>2]=(c*91881|0)+32768>>16;k[d+(e<<2)>>2]=(c*116130|0)+32768>>16;a=ha(c,-46802)|0;k[g+(e<<2)>>2]=a;a=(ha(c,-22553)|0)+32768|0;k[f+(e<<2)>>2]=a;e=e+1|0;if((e|0)==256)break;else c=c+1|0}return}}function yl(a){a=a|0;var b=0;b=k[a+476>>2]|0;k[b+36>>2]=0;k[b+44>>2]=k[a+116>>2];return}function zl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=r;r=r+16|0;h=d;i=k[a+476>>2]|0;j=i+36|0;if(!(k[j>>2]|0)){l=i+44|0;m=k[l>>2]|0;n=m>>>0<2?m:2;m=k[f>>2]|0;o=g-m|0;g=n>>>0>o>>>0?o:n;k[h>>2]=k[e+(m<<2)>>2];if(g>>>0>1)k[h+4>>2]=k[e+(m+1<<2)>>2];else{k[h+4>>2]=k[i+32>>2];k[j>>2]=1}Ab[k[i+12>>2]&31](a,b,k[c>>2]|0,h);h=(k[j>>2]|0)==0;k[f>>2]=(k[f>>2]|0)+g;k[l>>2]=(k[l>>2]|0)-g;if(!h){r=d;return}}else{rm(i+32|0,0,e+(k[f>>2]<<2)|0,0,1,k[i+40>>2]|0);k[j>>2]=0;j=i+44|0;k[f>>2]=(k[f>>2]|0)+1;k[j>>2]=(k[j>>2]|0)+-1}k[c>>2]=(k[c>>2]|0)+1;r=d;return}function Al(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;e=k[a+476>>2]|0;f=k[a+336>>2]|0;g=k[e+16>>2]|0;h=k[e+20>>2]|0;j=k[e+24>>2]|0;m=k[e+28>>2]|0;e=c<<1;n=k[b>>2]|0;o=k[n+(e<<2)>>2]|0;p=k[n+((e|1)<<2)>>2]|0;e=k[(k[b+4>>2]|0)+(c<<2)>>2]|0;n=k[(k[b+8>>2]|0)+(c<<2)>>2]|0;c=k[d>>2]|0;b=k[d+4>>2]|0;d=a+112|0;a=k[d>>2]|0;q=a>>>1;if(!q){r=a;s=o;t=p;u=e;v=n;w=c;x=b}else{a=q*6|0;y=q<<1;z=c+a|0;A=n+q|0;B=q;C=o;D=p;E=e;F=n;n=c;c=b;while(1){G=l[E>>0]|0;H=l[F>>0]|0;I=k[g+(H<<2)>>2]|0;J=(k[j+(H<<2)>>2]|0)+(k[m+(G<<2)>>2]|0)>>16;H=k[h+(G<<2)>>2]|0;G=l[C>>0]|0;i[n>>0]=i[f+(G+I)>>0]|0;i[n+1>>0]=i[f+(G+J)>>0]|0;i[n+2>>0]=i[f+(G+H)>>0]|0;G=l[C+1>>0]|0;i[n+3>>0]=i[f+(G+I)>>0]|0;i[n+4>>0]=i[f+(G+J)>>0]|0;i[n+5>>0]=i[f+(G+H)>>0]|0;G=l[D>>0]|0;i[c>>0]=i[f+(G+I)>>0]|0;i[c+1>>0]=i[f+(G+J)>>0]|0;i[c+2>>0]=i[f+(G+H)>>0]|0;G=l[D+1>>0]|0;i[c+3>>0]=i[f+(G+I)>>0]|0;i[c+4>>0]=i[f+(G+J)>>0]|0;i[c+5>>0]=i[f+(G+H)>>0]|0;B=B+-1|0;if(!B)break;else{C=C+2|0;D=D+2|0;E=E+1|0;F=F+1|0;n=n+6|0;c=c+6|0}}r=k[d>>2]|0;s=o+y|0;t=p+y|0;u=e+q|0;v=A;w=z;x=b+a|0}if(!(r&1))return;r=l[u>>0]|0;u=l[v>>0]|0;v=k[g+(u<<2)>>2]|0;g=(k[j+(u<<2)>>2]|0)+(k[m+(r<<2)>>2]|0)>>16;m=k[h+(r<<2)>>2]|0;r=l[s>>0]|0;i[w>>0]=i[f+(r+v)>>0]|0;i[w+1>>0]=i[f+(r+g)>>0]|0;i[w+2>>0]=i[f+(r+m)>>0]|0;r=l[t>>0]|0;i[x>>0]=i[f+(r+v)>>0]|0;i[x+1>>0]=i[f+(r+g)>>0]|0;i[x+2>>0]=i[f+(r+m)>>0]|0;return}function Bl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ab[k[(k[a+476>>2]|0)+12>>2]&31](a,b,k[c>>2]|0,e+(k[f>>2]<<2)|0);k[f>>2]=(k[f>>2]|0)+1;k[c>>2]=(k[c>>2]|0)+1;return}function Cl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;e=k[a+476>>2]|0;f=k[a+336>>2]|0;g=k[e+16>>2]|0;h=k[e+20>>2]|0;j=k[e+24>>2]|0;m=k[e+28>>2]|0;e=k[(k[b>>2]|0)+(c<<2)>>2]|0;n=k[(k[b+4>>2]|0)+(c<<2)>>2]|0;o=k[(k[b+8>>2]|0)+(c<<2)>>2]|0;c=k[d>>2]|0;d=a+112|0;a=k[d>>2]|0;b=a>>>1;if(!b){p=a;q=e;r=n;s=o;t=c}else{a=b*6|0;u=b<<1;v=o+b|0;w=b;x=e;y=n;z=o;o=c;while(1){A=l[y>>0]|0;B=l[z>>0]|0;C=k[g+(B<<2)>>2]|0;D=(k[j+(B<<2)>>2]|0)+(k[m+(A<<2)>>2]|0)>>16;B=k[h+(A<<2)>>2]|0;A=l[x>>0]|0;i[o>>0]=i[f+(A+C)>>0]|0;i[o+1>>0]=i[f+(A+D)>>0]|0;i[o+2>>0]=i[f+(A+B)>>0]|0;A=l[x+1>>0]|0;i[o+3>>0]=i[f+(A+C)>>0]|0;i[o+4>>0]=i[f+(A+D)>>0]|0;i[o+5>>0]=i[f+(A+B)>>0]|0;w=w+-1|0;if(!w)break;else{x=x+2|0;y=y+1|0;z=z+1|0;o=o+6|0}}p=k[d>>2]|0;q=e+u|0;r=n+b|0;s=v;t=c+a|0}if(!(p&1))return;p=l[r>>0]|0;r=l[s>>0]|0;s=(k[j+(r<<2)>>2]|0)+(k[m+(p<<2)>>2]|0)>>16;m=k[h+(p<<2)>>2]|0;p=l[q>>0]|0;i[t>>0]=i[f+(p+(k[g+(r<<2)>>2]|0))>>0]|0;i[t+1>>0]=i[f+(p+s)>>0]|0;i[t+2>>0]=i[f+(p+m)>>0]|0;return}function Dl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=a+4|0;d=nb[k[k[c>>2]>>2]&63](a,1,28)|0;k[a+456>>2]=d;k[d>>2]=10;e=d+8|0;k[e>>2]=0;f=d+12|0;k[f>>2]=0;if(!(k[a+84>>2]|0))return;g=k[a+320>>2]|0;h=d+16|0;k[h>>2]=g;d=k[c>>2]|0;c=k[a+112>>2]|0;i=k[a+120>>2]|0;if(!b){b=ha(i,c)|0;j=xb[k[d+8>>2]&63](a,1,b,g)|0;k[f>>2]=j;return}else{j=k[d+16>>2]|0;d=ha(i,c)|0;c=qm(k[a+116>>2]|0,g)|0;g=sb[j&3](a,1,0,d,c,k[h>>2]|0)|0;k[e>>2]=g;return}}function El(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a+456>>2]|0;a:do switch(b|0){case 0:{if(!(k[a+84>>2]|0)){k[c+4>>2]=k[(k[a+476>>2]|0)+4>>2];break a}k[c+4>>2]=5;d=c+12|0;if(!(k[d>>2]|0)){e=zb[k[(k[a+4>>2]|0)+28>>2]&3](a,k[c+8>>2]|0,0,k[c+16>>2]|0,1)|0;k[d>>2]=e}break}case 3:{if(!(k[c+8>>2]|0)){e=k[a>>2]|0;k[e+20>>2]=3;qb[k[e>>2]&127](a)}k[c+4>>2]=6;break}case 2:{if(!(k[c+8>>2]|0)){e=k[a>>2]|0;k[e+20>>2]=3;qb[k[e>>2]&127](a)}k[c+4>>2]=7;break}default:{e=k[a>>2]|0;k[e+20>>2]=3;qb[k[e>>2]&127](a)}}while(0);k[c+24>>2]=0;k[c+20>>2]=0;return}function Fl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0;h=r;r=r+16|0;i=h;j=k[a+456>>2]|0;l=g-(k[f>>2]|0)|0;g=k[j+16>>2]|0;k[i>>2]=0;m=j+12|0;ob[k[(k[a+476>>2]|0)+4>>2]&15](a,b,c,d,k[m>>2]|0,i,l>>>0>g>>>0?g:l);Ab[k[(k[a+484>>2]|0)+4>>2]&31](a,k[m>>2]|0,e+(k[f>>2]<<2)|0,k[i>>2]|0);k[f>>2]=(k[f>>2]|0)+(k[i>>2]|0);r=h;return}function Gl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;g=k[a+456>>2]|0;e=g+24|0;h=k[e>>2]|0;if(!h){i=g+16|0;j=zb[k[(k[a+4>>2]|0)+28>>2]&3](a,k[g+8>>2]|0,k[g+20>>2]|0,k[i>>2]|0,1)|0;l=g+12|0;k[l>>2]=j;m=i;n=l;o=j;p=k[e>>2]|0}else{j=g+12|0;m=g+16|0;n=j;o=k[j>>2]|0;p=h}ob[k[(k[a+476>>2]|0)+4>>2]&15](a,b,c,d,o,e,k[m>>2]|0);o=k[e>>2]|0;if(o>>>0>p>>>0){d=o-p|0;Ab[k[(k[a+484>>2]|0)+4>>2]&31](a,(k[n>>2]|0)+(p<<2)|0,0,d);k[f>>2]=(k[f>>2]|0)+d;q=k[e>>2]|0}else q=o;o=k[m>>2]|0;if(q>>>0<o>>>0)return;q=g+20|0;k[q>>2]=(k[q>>2]|0)+o;k[e>>2]=0;return}function Hl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=k[a+456>>2]|0;c=d+24|0;b=k[c>>2]|0;if(!b){h=d+20|0;i=d+16|0;j=zb[k[(k[a+4>>2]|0)+28>>2]&3](a,k[d+8>>2]|0,k[h>>2]|0,k[i>>2]|0,0)|0;k[d+12>>2]=j;l=h;m=i;n=k[c>>2]|0;o=j}else{l=d+20|0;m=d+16|0;n=b;o=k[d+12>>2]|0}d=(k[m>>2]|0)-n|0;b=k[f>>2]|0;j=g-b|0;g=d>>>0>j>>>0?j:d;d=(k[a+116>>2]|0)-(k[l>>2]|0)|0;j=g>>>0>d>>>0?d:g;Ab[k[(k[a+484>>2]|0)+4>>2]&31](a,o+(n<<2)|0,e+(b<<2)|0,j);k[f>>2]=(k[f>>2]|0)+j;f=(k[c>>2]|0)+j|0;k[c>>2]=f;j=k[m>>2]|0;if(f>>>0<j>>>0)return;k[l>>2]=(k[l>>2]|0)+j;k[c>>2]=0;return}function Il(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,160)|0;k[a+476>>2]=c;k[c>>2]=46;k[c+4>>2]=8;k[c+8>>2]=0;if(k[a+308>>2]|0){d=k[a>>2]|0;k[d+20>>2]=26;qb[k[d>>2]&127](a)}d=a+36|0;if((k[d>>2]|0)<=0)return;e=a+324|0;f=a+328|0;g=a+316|0;h=a+320|0;j=c+100|0;l=c+52|0;m=a+112|0;n=c+12|0;o=0;p=k[a+216>>2]|0;while(1){q=ha(k[p+36>>2]|0,k[p+8>>2]|0)|0;r=(q|0)/(k[e>>2]|0)|0;q=ha(k[p+40>>2]|0,k[p+12>>2]|0)|0;s=(q|0)/(k[f>>2]|0)|0;q=k[g>>2]|0;t=k[h>>2]|0;k[j+(o<<2)>>2]=s;do if(!(k[p+52>>2]|0))k[l+(o<<2)>>2]=13;else{u=(s|0)==(t|0);if((r|0)==(q|0)&u){k[l+(o<<2)>>2]=14;break}v=(r<<1|0)==(q|0);do if(v&u)k[l+(o<<2)>>2]=15;else{if(v&(s<<1|0)==(t|0)){k[l+(o<<2)>>2]=16;break}if(((q|0)%(r|0)|0|0)==0?((t|0)%(s|0)|0|0)==0:0){k[l+(o<<2)>>2]=17;i[c+(o+140)>>0]=(q|0)/(r|0)|0;i[c+(o+150)>>0]=(t|0)/(s|0)|0;break}w=k[a>>2]|0;k[w+20>>2]=39;qb[k[w>>2]&127](a)}while(0);v=k[(k[b>>2]|0)+8>>2]|0;u=qm(k[m>>2]|0,k[g>>2]|0)|0;w=xb[v&63](a,1,u,k[h>>2]|0)|0;k[n+(o<<2)>>2]=w}while(0);o=o+1|0;if((o|0)>=(k[d>>2]|0))break;else p=p+88|0}return}function Jl(a){a=a|0;var b=0;b=k[a+476>>2]|0;k[b+92>>2]=k[a+320>>2];k[b+96>>2]=k[a+116>>2];return}function Kl(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=k[a+476>>2]|0;h=d+92|0;i=k[h>>2]|0;j=a+320|0;l=k[j>>2]|0;if((i|0)<(l|0)){m=l;n=i}else{i=a+36|0;if((k[i>>2]|0)>0){o=0;p=k[a+216>>2]|0;while(1){q=(k[b+(o<<2)>>2]|0)+((ha(k[d+100+(o<<2)>>2]|0,k[c>>2]|0)|0)<<2)|0;Ab[k[d+52+(o<<2)>>2]&31](a,p,q,d+12+(o<<2)|0);o=o+1|0;if((o|0)>=(k[i>>2]|0))break;else p=p+88|0}r=k[j>>2]|0}else r=l;k[h>>2]=0;m=r;n=0}r=m-n|0;m=d+96|0;l=k[m>>2]|0;p=r>>>0>l>>>0?l:r;r=k[f>>2]|0;l=g-r|0;g=p>>>0>l>>>0?l:p;pb[k[(k[a+480>>2]|0)+4>>2]&63](a,d+12|0,n,e+(r<<2)|0,g);k[f>>2]=(k[f>>2]|0)+g;k[m>>2]=(k[m>>2]|0)-g;m=(k[h>>2]|0)+g|0;k[h>>2]=m;if((m|0)<(k[j>>2]|0))return;k[c>>2]=(k[c>>2]|0)+1;return}function Ll(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[d>>2]=0;return}function Ml(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;k[d>>2]=c;return}function Nl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0;b=k[d>>2]|0;d=a+320|0;e=k[d>>2]|0;if((e|0)<=0)return;f=a+112|0;a=e;e=0;while(1){g=k[b+(e<<2)>>2]|0;h=k[f>>2]|0;j=g+h|0;if((h|0)>0){h=k[c+(e<<2)>>2]|0;l=g;while(1){g=i[h>>0]|0;i[l>>0]=g;i[l+1>>0]=g;l=l+2|0;if(l>>>0>=j>>>0)break;else h=h+1|0}m=k[d>>2]|0}else m=a;e=e+1|0;if((e|0)>=(m|0))break;else a=m}return}function Ol(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;b=k[d>>2]|0;d=a+320|0;if((k[d>>2]|0)<=0)return;e=a+112|0;a=0;f=0;while(1){g=k[b+(f<<2)>>2]|0;h=k[e>>2]|0;j=g+h|0;if((h|0)>0){l=k[c+(a<<2)>>2]|0;m=g;while(1){g=i[l>>0]|0;i[m>>0]=g;i[m+1>>0]=g;m=m+2|0;if(m>>>0>=j>>>0)break;else l=l+1|0}n=k[e>>2]|0}else n=h;rm(b,f,b,f|1,1,n);f=f+2|0;if((f|0)>=(k[d>>2]|0))break;else a=a+1|0}return}function Pl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;e=k[a+476>>2]|0;f=k[d>>2]|0;d=k[b+4>>2]|0;b=i[e+140+d>>0]|0;g=b&255;h=i[e+150+d>>0]|0;d=h&255;e=a+320|0;if((k[e>>2]|0)<=0)return;j=a+112|0;a=b<<24>>24!=0;l=d+-1|0;m=(b<<24>>24==0?~g:-2)+g+2|0;if((h&255)>1){h=0;g=0;while(1){b=k[f+(g<<2)>>2]|0;n=k[j>>2]|0;o=b+n|0;if((n|0)>0){if(!a){p=5;break}n=k[c+(h<<2)>>2]|0;q=b;while(1){qr(q|0,i[n>>0]|0,m|0)|0;q=q+m|0;if(q>>>0>=o>>>0)break;else n=n+1|0}}rm(f,g,f,g+1|0,l,k[j>>2]|0);g=g+d|0;if((g|0)>=(k[e>>2]|0)){p=15;break}else h=h+1|0}if((p|0)==5)while(1){p=0;p=5}else if((p|0)==15)return}else{h=0;g=0;while(1){l=k[f+(g<<2)>>2]|0;n=k[j>>2]|0;o=l+n|0;if((n|0)>0){if(!a){p=13;break}n=k[c+(h<<2)>>2]|0;q=l;while(1){qr(q|0,i[n>>0]|0,m|0)|0;q=q+m|0;if(q>>>0>=o>>>0)break;else n=n+1|0}}g=g+d|0;if((g|0)>=(k[e>>2]|0)){p=15;break}else h=h+1|0}if((p|0)==13)while(1){p=0;p=13}else if((p|0)==15)return}}function Ql(a){a=a|0;k[a>>2]=47;k[a+4>>2]=11;k[a+8>>2]=48;k[a+12>>2]=12;k[a+16>>2]=49;k[a+104>>2]=0;k[a+108>>2]=0;k[a+20>>2]=0;k[a+112>>2]=119460;k[a+116>>2]=126;k[a+120>>2]=0;k[a+124>>2]=0;k[a+128>>2]=0;return a|0}function Rl(a){a=a|0;qb[k[(k[a>>2]|0)+8>>2]&127](a);Bk(a);jb(1)}function Sl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;if((b|0)>=0){if((k[c+104>>2]|0)<(b|0))return;qb[k[c+8>>2]&127](a);return}b=c+108|0;d=k[b>>2]|0;if((d|0)!=0?(k[c+104>>2]|0)<=2:0)e=d;else{qb[k[c+8>>2]&127](a);e=k[b>>2]|0}k[b>>2]=e+1;return}function Tl(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+208|0;c=b;d=b+8|0;rb[k[(k[a>>2]|0)+12>>2]&31](a,d);a=k[30710]|0;k[c>>2]=d;wq(a,160973,c)|0;r=b;return}function Ul(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;c=r;r=r+48|0;d=c+8|0;e=c;f=k[a>>2]|0;a=k[f+20>>2]|0;if((a|0)>0?(a|0)<=(k[f+116>>2]|0):0){g=(k[f+112>>2]|0)+(a<<2)|0;h=8}else{j=k[f+120>>2]|0;if(((j|0)!=0?(l=k[f+124>>2]|0,(a|0)>=(l|0)):0)?(a|0)<=(k[f+128>>2]|0):0){g=j+(a-l<<2)|0;h=8}else h=9}if((h|0)==8){l=k[g>>2]|0;if(!l)h=9;else m=l}if((h|0)==9){k[f+24>>2]=a;m=k[k[f+112>>2]>>2]|0}a=m;a:while(1){l=a+1|0;switch(i[a>>0]|0){case 0:{break a;break}case 37:{n=l;h=12;break a;break}default:a=l}}if((h|0)==12?(i[n>>0]|0)==115:0){k[e>>2]=f+24;Bq(b,m,e)|0;r=c;return}e=k[f+28>>2]|0;n=k[f+32>>2]|0;h=k[f+36>>2]|0;a=k[f+40>>2]|0;l=k[f+44>>2]|0;g=k[f+48>>2]|0;j=k[f+52>>2]|0;k[d>>2]=k[f+24>>2];k[d+4>>2]=e;k[d+8>>2]=n;k[d+12>>2]=h;k[d+16>>2]=a;k[d+20>>2]=l;k[d+24>>2]=g;k[d+28>>2]=j;Bq(b,m,d)|0;r=c;return}function Vl(a){a=a|0;var b=0;b=k[a>>2]|0;k[b+108>>2]=0;k[b+20>>2]=0;return}function Wl(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,88)|0;d=a+484|0;k[d>>2]=c;k[c>>2]=13;k[c+8>>2]=50;k[c+12>>2]=51;k[c+68>>2]=0;k[c+52>>2]=0;c=a+120|0;if((k[c>>2]|0)>4){e=k[a>>2]|0;k[e+20>>2]=57;k[e+24>>2]=4;qb[k[e>>2]&127](a)}e=a+96|0;f=k[e>>2]|0;if((f|0)>256){g=k[a>>2]|0;k[g+20>>2]=59;k[g+24>>2]=256;qb[k[g>>2]&127](a);h=k[e>>2]|0}else h=f;f=k[d>>2]|0;e=f+32|0;g=k[c>>2]|0;if((g|0)>1){j=1;while(1){l=j+1|0;m=1;n=l;while(1){o=ha(n,l)|0;m=m+1|0;if((m|0)==(g|0)){p=o;break}else n=o}if((p|0)>(h|0)){q=j;r=p;break}else j=l}}else{j=(h|0)>1?h:1;q=j;r=j+1|0}if((q|0)<2){j=k[a>>2]|0;k[j+20>>2]=58;k[j+24>>2]=r;qb[k[j>>2]&127](a)}if((g|0)>0){j=0;r=1;while(1){k[f+32+(j<<2)>>2]=q;p=ha(r,q)|0;j=j+1|0;if((j|0)==(g|0)){s=p;break}else r=p}}else s=1;r=a+44|0;j=0;q=0;p=s;a:while(1){s=j;n=q;while(1){if((n|0)<(g|0)){if((k[r>>2]|0)==2)t=k[119972+(n<<2)>>2]|0;else t=n;m=f+32+(t<<2)|0;o=k[m>>2]|0;u=o+1|0;v=ha((p|0)/(o|0)|0,u)|0;if((v|0)<=(h|0)){w=m;x=u;y=v;z=n;break}}if(!s){A=p;break a}else{s=0;n=0}}k[w>>2]=x;j=1;q=z+1|0;p=y}y=k[a>>2]|0;p=k[y+4>>2]|0;if((k[c>>2]|0)==3){k[y+24>>2]=A;k[y+28>>2]=k[e>>2];k[y+32>>2]=k[f+36>>2];k[y+36>>2]=k[f+40>>2];k[y+20>>2]=96;rb[p&31](a,1)}else{k[y+20>>2]=97;k[y+24>>2]=A;rb[p&31](a,1)}p=xb[k[(k[b>>2]|0)+8>>2]&63](a,1,A,k[c>>2]|0)|0;y=k[c>>2]|0;if((y|0)>0){e=y;y=A;z=0;while(1){q=k[f+32+(z<<2)>>2]|0;j=y;y=(y|0)/(q|0)|0;b:do if((q|0)>0){x=q+-1|0;w=(x|0)/2|0;h=p+(z<<2)|0;if((y|0)>0)B=0;else{t=0;while(1){r=ha(t,y)|0;if((r|0)<(A|0)){g=r;do g=g+j|0;while((g|0)<(A|0))}t=t+1|0;if((t|0)==(q|0)){C=e;break b}}}do{t=ha(B,y)|0;if((t|0)<(A|0)){g=(((B*255|0)+w|0)/(x|0)|0)&255;r=t;do{t=0;do{i[(k[h>>2]|0)+(t+r)>>0]=g;t=t+1|0}while((t|0)!=(y|0));r=r+j|0}while((r|0)<(A|0))}B=B+1|0}while((B|0)!=(q|0));C=k[c>>2]|0}else C=e;while(0);z=z+1|0;if((z|0)>=(C|0))break;else e=C}}k[f+16>>2]=p;k[f+20>>2]=A;_l(a);if((k[a+88>>2]|0)!=2)return;A=k[d>>2]|0;d=(k[a+112>>2]<<1)+4|0;if((k[c>>2]|0)>0)D=0;else return;do{f=nb[k[(k[b>>2]|0)+4>>2]&63](a,1,d)|0;k[A+68+(D<<2)>>2]=f;D=D+1|0}while((D|0)<(k[c>>2]|0));return}function Xl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;b=a+484|0;c=k[b>>2]|0;k[a+136>>2]=k[c+16>>2];k[a+132>>2]=k[c+20>>2];switch(k[a+88>>2]|0){case 0:{d=c+4|0;if((k[a+120>>2]|0)==3){k[d>>2]=18;return}else{k[d>>2]=19;return}break}case 1:{d=a+120|0;k[c+4>>2]=(k[d>>2]|0)==3?20:21;k[c+48>>2]=0;if(!(k[c+28>>2]|0))_l(a);if(k[c+52>>2]|0)return;e=k[b>>2]|0;b=k[d>>2]|0;if((b|0)<=0)return;f=a+4|0;g=b;b=0;while(1){h=k[e+32+(b<<2)>>2]|0;a:do if((b|0)>0){i=0;while(1){if((h|0)==(k[e+32+(i<<2)>>2]|0)){j=i;break}i=i+1|0;if((i|0)>=(b|0)){m=14;break a}}i=k[e+52+(j<<2)>>2]|0;if(i){n=g;o=i}else m=14}else m=14;while(0);if((m|0)==14){m=0;i=nb[k[k[f>>2]>>2]&63](a,1,1024)|0;p=(h<<9)+-512|0;q=0;do{r=0;do{s=255-((l[160977+(q<<4)+r>>0]|0)<<1)|0;t=s*255|0;if((s|0)<0)u=0-((0-t|0)/(p|0)|0)|0;else u=(t|0)/(p|0)|0;k[i+(q<<6)+(r<<2)>>2]=u;r=r+1|0}while((r|0)!=16);q=q+1|0}while((q|0)!=16);n=k[d>>2]|0;o=i}k[e+52+(b<<2)>>2]=o;b=b+1|0;if((b|0)>=(n|0))break;else g=n}return}case 2:{k[c+4>>2]=22;k[c+84>>2]=0;if(!(k[c+68>>2]|0)){n=a+112|0;g=(k[n>>2]<<1)+4|0;b=a+120|0;if((k[b>>2]|0)<=0)return;o=a+4|0;e=0;do{d=nb[k[(k[o>>2]|0)+4>>2]&63](a,1,g)|0;k[c+68+(e<<2)>>2]=d;e=e+1|0;d=k[b>>2]|0}while((e|0)<(d|0));v=b;w=n;x=d}else{n=a+120|0;v=n;w=a+112|0;x=k[n>>2]|0}n=(k[w>>2]<<1)+4|0;if((x|0)>0)y=0;else return;do{qr(k[c+68+(y<<2)>>2]|0,0,n|0)|0;y=y+1|0}while((y|0)<(k[v>>2]|0));return}default:{v=k[a>>2]|0;k[v+20>>2]=49;qb[k[v>>2]&127](a);return}}}function Yl(a){a=a|0;return}function Zl(a){a=a|0;var b=0;b=k[a>>2]|0;k[b+20>>2]=47;qb[k[b>>2]&127](a);return}function _l(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;b=k[a+484>>2]|0;c=(k[a+88>>2]|0)==1;k[b+28>>2]=c&1;d=a+120|0;e=xb[k[(k[a+4>>2]|0)+8>>2]&63](a,1,c?766:256,k[d>>2]|0)|0;a=b+24|0;k[a>>2]=e;if((k[d>>2]|0)<=0)return;e=k[b+20>>2]|0;f=0;do{g=k[b+32+(f<<2)>>2]|0;e=(e|0)/(g|0)|0;if(c){h=(k[a>>2]|0)+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+255}h=k[(k[a>>2]|0)+(f<<2)>>2]|0;j=g+-1|0;l=j<<1;m=0;n=(g+254|0)/(l|0)|0;g=0;while(1){if((m|0)>(n|0)){o=g;while(1){p=o+1|0;q=(((p<<1|1)*255|0)+j|0)/(l|0)|0;if((m|0)>(q|0))o=p;else{r=q;s=p;break}}}else{r=n;s=g}o=(ha(s,e)|0)&255;i[h+m>>0]=o;m=m+1|0;if((m|0)==256)break;else{n=r;g=s}}if(c){g=h+255|0;n=1;do{i[h+(0-n)>>0]=i[h>>0]|0;i[h+(n+255)>>0]=i[g>>0]|0;n=n+1|0}while((n|0)!=256)}f=f+1|0}while((f|0)<(k[d>>2]|0));return}function $l(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0;e=k[(k[a+484>>2]|0)+24>>2]|0;f=k[e>>2]|0;g=k[e+4>>2]|0;h=k[e+8>>2]|0;e=k[a+112>>2]|0;if((d|0)<1|(e|0)==0)return;else j=0;do{a=e;m=k[b+(j<<2)>>2]|0;n=k[c+(j<<2)>>2]|0;while(1){i[n>>0]=(l[g+(l[m+1>>0]|0)>>0]|0)+(l[f+(l[m>>0]|0)>>0]|0)+(l[h+(l[m+2>>0]|0)>>0]|0);a=a+-1|0;if(!a)break;else{m=m+3|0;n=n+1|0}}j=j+1|0}while((j|0)!=(d|0));return}function am(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=k[(k[a+484>>2]|0)+24>>2]|0;f=k[a+112>>2]|0;g=k[a+120>>2]|0;if((d|0)<=0)return;a=(f|0)==0;h=(g|0)>0;j=0;do{if(!a){m=f;n=k[b+(j<<2)>>2]|0;o=k[c+(j<<2)>>2]|0;while(1){if(h){p=0;q=0;r=n;while(1){s=(l[(k[e+(p<<2)>>2]|0)+(l[r>>0]|0)>>0]|0)+q|0;p=p+1|0;if((p|0)==(g|0)){t=s;break}else{q=s;r=r+1|0}}u=t;v=n+g|0}else{u=0;v=n}i[o>>0]=u;m=m+-1|0;if(!m)break;else{n=v;o=o+1|0}}}j=j+1|0}while((j|0)!=(d|0));return}function bm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=k[a+484>>2]|0;f=k[e+24>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0;j=k[f+8>>2]|0;f=k[a+112>>2]|0;if((d|0)<=0)return;a=e+48|0;m=e+52|0;n=e+56|0;o=e+60|0;e=(f|0)==0;p=k[a>>2]|0;q=0;do{r=k[m>>2]|0;s=k[n>>2]|0;t=k[o>>2]|0;if(!e){u=f;v=0;w=k[b+(q<<2)>>2]|0;x=k[c+(q<<2)>>2]|0;while(1){i[x>>0]=(l[h+((l[w+1>>0]|0)+(k[s+(p<<6)+(v<<2)>>2]|0))>>0]|0)+(l[g+((l[w>>0]|0)+(k[r+(p<<6)+(v<<2)>>2]|0))>>0]|0)+(l[j+((l[w+2>>0]|0)+(k[t+(p<<6)+(v<<2)>>2]|0))>>0]|0);u=u+-1|0;if(!u)break;else{v=v+1&15;w=w+3|0;x=x+1|0}}}p=p+1&15;k[a>>2]=p;q=q+1|0}while((q|0)!=(d|0));return}function cm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;e=k[a+484>>2]|0;f=k[a+120>>2]|0;g=k[a+112>>2]|0;if((d|0)<=0)return;a=e+48|0;h=(f|0)>0;j=e+24|0;m=(g|0)==0;n=0;do{o=c+(n<<2)|0;qr(k[o>>2]|0,0,g|0)|0;p=k[a>>2]|0;if(h){q=b+(n<<2)|0;r=0;do{s=k[(k[j>>2]|0)+(r<<2)>>2]|0;t=k[e+52+(r<<2)>>2]|0;if(!m){u=g;v=0;w=(k[q>>2]|0)+r|0;x=k[o>>2]|0;while(1){i[x>>0]=(l[x>>0]|0)+(l[s+((l[w>>0]|0)+(k[t+(p<<6)+(v<<2)>>2]|0))>>0]|0);u=u+-1|0;if(!u)break;else{v=v+1&15;w=w+f|0;x=x+1|0}}}r=r+1|0}while((r|0)!=(f|0))}k[a>>2]=p+1&15;n=n+1|0}while((n|0)!=(d|0));return}function dm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;e=k[a+484>>2]|0;f=k[a+120>>2]|0;g=k[a+112>>2]|0;h=k[a+336>>2]|0;if((d|0)<=0)return;a=(f|0)>0;m=e+84|0;n=e+24|0;o=e+16|0;p=(g|0)==0;q=g+-1|0;r=ha(q,f)|0;s=0-f|0;t=g+1|0;u=0;do{v=c+(u<<2)|0;qr(k[v>>2]|0,0,g|0)|0;if(a){w=b+(u<<2)|0;x=0;do{y=k[v>>2]|0;z=k[e+68+(x<<2)>>2]|0;if(!(k[m>>2]|0)){A=x;B=1;C=f;D=z;E=y}else{A=x+r|0;B=-1;C=s;D=z+(t<<1)|0;E=y+q|0}y=k[(k[n>>2]|0)+(x<<2)>>2]|0;z=k[(k[o>>2]|0)+(x<<2)>>2]|0;if(p){F=0;G=D}else{H=ha(g,B)|0;I=0;J=0;K=g;L=0;M=D;N=(k[w>>2]|0)+A|0;O=E;while(1){P=M;M=M+(B<<1)|0;Q=l[h+((L+8+(j[M>>1]|0)>>4)+(l[N>>0]|0))>>0]|0;R=l[y+Q>>0]|0;i[O>>0]=(l[O>>0]|0)+R;S=Q-(l[z+R>>0]|0)|0;j[P>>1]=(S*3|0)+J;P=(S*5|0)+I|0;K=K+-1|0;if(!K){T=P;break}else{I=S;J=P;L=S*7|0;N=N+C|0;O=O+B|0}}F=T;G=D+(H<<1)|0}j[G>>1]=F;x=x+1|0}while((x|0)!=(f|0))}k[m>>2]=(k[m>>2]|0)==0&1;u=u+1|0}while((u|0)!=(d|0));return}function em(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,44)|0;k[a+484>>2]=c;k[c>>2]=14;k[c+12>>2]=52;d=c+32|0;k[d>>2]=0;k[c+40>>2]=0;if((k[a+120>>2]|0)!=3){e=k[a>>2]|0;k[e+20>>2]=48;qb[k[e>>2]&127](a)}e=nb[k[k[b>>2]>>2]&63](a,1,128)|0;f=c+24|0;k[f>>2]=e;e=0;do{g=nb[k[(k[b>>2]|0)+4>>2]&63](a,1,4096)|0;k[(k[f>>2]|0)+(e<<2)>>2]=g;e=e+1|0}while((e|0)!=32);k[c+28>>2]=1;if(!(k[a+108>>2]|0))k[c+16>>2]=0;else{e=k[a+96>>2]|0;if((e|0)>=8){if((e|0)>256){f=k[a>>2]|0;k[f+20>>2]=59;k[f+24>>2]=256;qb[k[f>>2]&127](a)}}else{f=k[a>>2]|0;k[f+20>>2]=58;k[f+24>>2]=8;qb[k[f>>2]&127](a)}f=xb[k[(k[b>>2]|0)+8>>2]&63](a,1,e,3)|0;k[c+16>>2]=f;k[c+20>>2]=e}e=a+88|0;if(!(k[e>>2]|0))return;k[e>>2]=2;e=nb[k[(k[b>>2]|0)+4>>2]&63](a,1,((k[a+112>>2]|0)*6|0)+12|0)|0;k[d>>2]=e;hm(a);return}function fm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;c=k[a+484>>2]|0;d=k[c+24>>2]|0;e=a+88|0;if(!(k[e>>2]|0))f=0;else{k[e>>2]=2;f=2}if(!b){k[c+4>>2]=(f|0)==2?24:25;k[c+8>>2]=54;f=k[a+132>>2]|0;if((f|0)>=1){if((f|0)>256){f=k[a>>2]|0;k[f+20>>2]=59;k[f+24>>2]=256;qb[k[f>>2]&127](a)}}else{f=k[a>>2]|0;k[f+20>>2]=58;k[f+24>>2]=1;qb[k[f>>2]&127](a)}if((k[e>>2]|0)==2){e=((k[a+112>>2]|0)*6|0)+12|0;f=c+32|0;b=k[f>>2]|0;if(!b){g=nb[k[(k[a+4>>2]|0)+4>>2]&63](a,1,e)|0;k[f>>2]=g;h=g}else h=b;qr(h|0,0,e|0)|0;if(!(k[c+40>>2]|0))hm(a);k[c+36>>2]=0}}else{k[c+4>>2]=23;k[c+8>>2]=53;k[c+28>>2]=1}a=c+28|0;if(!(k[a>>2]|0))return;qr(k[d>>2]|0,0,4096)|0;qr(k[d+4>>2]|0,0,4096)|0;qr(k[d+8>>2]|0,0,4096)|0;qr(k[d+12>>2]|0,0,4096)|0;qr(k[d+16>>2]|0,0,4096)|0;qr(k[d+20>>2]|0,0,4096)|0;qr(k[d+24>>2]|0,0,4096)|0;qr(k[d+28>>2]|0,0,4096)|0;qr(k[d+32>>2]|0,0,4096)|0;qr(k[d+36>>2]|0,0,4096)|0;qr(k[d+40>>2]|0,0,4096)|0;qr(k[d+44>>2]|0,0,4096)|0;qr(k[d+48>>2]|0,0,4096)|0;qr(k[d+52>>2]|0,0,4096)|0;qr(k[d+56>>2]|0,0,4096)|0;qr(k[d+60>>2]|0,0,4096)|0;qr(k[d+64>>2]|0,0,4096)|0;qr(k[d+68>>2]|0,0,4096)|0;qr(k[d+72>>2]|0,0,4096)|0;qr(k[d+76>>2]|0,0,4096)|0;qr(k[d+80>>2]|0,0,4096)|0;qr(k[d+84>>2]|0,0,4096)|0;qr(k[d+88>>2]|0,0,4096)|0;qr(k[d+92>>2]|0,0,4096)|0;qr(k[d+96>>2]|0,0,4096)|0;qr(k[d+100>>2]|0,0,4096)|0;qr(k[d+104>>2]|0,0,4096)|0;qr(k[d+108>>2]|0,0,4096)|0;qr(k[d+112>>2]|0,0,4096)|0;qr(k[d+116>>2]|0,0,4096)|0;qr(k[d+120>>2]|0,0,4096)|0;qr(k[d+124>>2]|0,0,4096)|0;k[a>>2]=0;return}function gm(a){a=a|0;k[(k[a+484>>2]|0)+28>>2]=1;return}function hm(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+484>>2]|0;c=nb[k[k[a+4>>2]>>2]&63](a,1,2044)|0;a=c+1020|0;k[b+40>>2]=a;k[a>>2]=0;k[c+1024>>2]=1;k[c+1016>>2]=-1;k[c+1028>>2]=2;k[c+1012>>2]=-2;k[c+1032>>2]=3;k[c+1008>>2]=-3;k[c+1036>>2]=4;k[c+1004>>2]=-4;k[c+1040>>2]=5;k[c+1e3>>2]=-5;k[c+1044>>2]=6;k[c+996>>2]=-6;k[c+1048>>2]=7;k[c+992>>2]=-7;k[c+1052>>2]=8;k[c+988>>2]=-8;k[c+1056>>2]=9;k[c+984>>2]=-9;k[c+1060>>2]=10;k[c+980>>2]=-10;k[c+1064>>2]=11;k[c+976>>2]=-11;k[c+1068>>2]=12;k[c+972>>2]=-12;k[c+1072>>2]=13;k[c+968>>2]=-13;k[c+1076>>2]=14;k[c+964>>2]=-14;k[c+1080>>2]=15;k[c+960>>2]=-15;c=16;b=16;while(1){k[a+(c<<2)>>2]=b;k[a+(0-c<<2)>>2]=0-b;c=c+1|0;d=(c&1^1)+b|0;if((c|0)==48){e=d;break}else b=d}b=0-e|0;c=48;do{k[a+(c<<2)>>2]=e;k[a+(0-c<<2)>>2]=b;c=c+1|0}while((c|0)!=256);return}function im(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,m=0;c=k[(k[a+484>>2]|0)+24>>2]|0;e=k[a+112>>2]|0;if((d|0)<1|(e|0)==0)return;else f=0;do{a=e;g=k[b+(f<<2)>>2]|0;while(1){h=(k[c+((l[g>>0]|0)>>>3<<2)>>2]|0)+((l[g+1>>0]|0)>>>2<<6)+((l[g+2>>0]|0)>>>3<<1)|0;i=j[h>>1]|0;m=i+1<<16>>16;j[h>>1]=m<<16>>16==0?i:m;a=a+-1|0;if(!a)break;else g=g+3|0}f=f+1|0}while((f|0)!=(d|0));return}function jm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0;b=a+484|0;c=k[b>>2]|0;d=a+136|0;k[d>>2]=k[c+16>>2];e=k[c+20>>2]|0;f=nb[k[k[a+4>>2]>>2]&63](a,1,e<<5)|0;k[f>>2]=0;k[f+4>>2]=31;k[f+8>>2]=0;k[f+12>>2]=63;k[f+16>>2]=0;k[f+20>>2]=31;om(a,f);if((e|0)>1){g=1;while(1){if((g<<1|0)>(e|0)){h=f;l=0;m=0;n=0;while(1){o=k[h+24>>2]|0;p=(o|0)>(m|0);q=p?h:n;l=l+1|0;if((l|0)==(g|0)){r=q;break}else{h=h+32|0;m=p?o:m;n=q}}}else{n=f;m=0;h=0;l=0;while(1){q=k[n+28>>2]|0;if((q|0)>(h|0)){o=(k[n+24>>2]|0)>0;s=o?q:h;t=o?n:l}else{s=h;t=l}m=m+1|0;if((m|0)==(g|0)){r=t;break}else{n=n+32|0;h=s;l=t}}}if(!r){u=g;break}l=f+(g<<5)|0;h=r+4|0;k[f+(g<<5)+4>>2]=k[h>>2];n=r+12|0;k[f+(g<<5)+12>>2]=k[n>>2];m=r+20|0;k[f+(g<<5)+20>>2]=k[m>>2];k[l>>2]=k[r>>2];o=r+8|0;q=f+(g<<5)+8|0;k[q>>2]=k[o>>2];p=r+16|0;v=f+(g<<5)+16|0;k[v>>2]=k[p>>2];w=k[h>>2]|0;x=k[r>>2]|0;y=w-x<<4;z=k[n>>2]|0;A=k[o>>2]|0;o=(z-A|0)*12|0;B=k[m>>2]|0;C=k[p>>2]|0;p=(y|0)>(o|0);switch(((B-C<<3|0)>((p?y:o)|0)?2:p&1^1)|0){case 0:{p=(x+w|0)/2|0;k[h>>2]=p;k[l>>2]=p+1;break}case 1:{p=(A+z|0)/2|0;k[n>>2]=p;k[q>>2]=p+1;break}case 2:{p=(C+B|0)/2|0;k[m>>2]=p;k[v>>2]=p+1;break}default:{}}om(a,r);om(a,l);l=g+1|0;if((l|0)<(e|0))g=l;else{u=l;break}}if((u|0)>0)D=u;else{E=u;F=a+132|0;k[F>>2]=E;G=k[a>>2]|0;H=G+20|0;k[H>>2]=98;I=G+24|0;k[I>>2]=E;J=G+4|0;K=k[J>>2]|0;rb[K&31](a,1);L=c+28|0;k[L>>2]=1;return}}else D=1;u=0;do{g=k[(k[b>>2]|0)+24>>2]|0;e=k[f+(u<<5)>>2]|0;r=k[f+(u<<5)+4>>2]|0;t=k[f+(u<<5)+8>>2]|0;s=k[f+(u<<5)+12>>2]|0;l=k[f+(u<<5)+16>>2]|0;p=k[f+(u<<5)+20>>2]|0;if((e|0)>(r|0)){M=0;N=0;O=0;P=0}else{v=(t|0)>(s|0);m=(l|0)>(p|0);B=e;e=0;C=0;q=0;n=0;while(1){if(v){Q=e;R=C;S=q;T=n}else{z=k[g+(B<<2)>>2]|0;A=B<<3|4;h=e;w=t;x=C;o=q;y=n;while(1){if(m){U=h;V=x;W=o;X=y}else{Y=w<<2|2;Z=h;_=x;$=l;aa=o;ba=z+(w<<6)+(l<<1)|0;ca=y;while(1){da=j[ba>>1]|0;ea=da&65535;if(!(da<<16>>16)){fa=Z;ga=_;ia=aa;ja=ca}else{fa=(ha(ea,A)|0)+Z|0;ga=(ha(ea,Y)|0)+_|0;ia=(ha(ea,$<<3|4)|0)+aa|0;ja=ea+ca|0}if(($|0)<(p|0)){Z=fa;_=ga;$=$+1|0;aa=ia;ba=ba+2|0;ca=ja}else{U=fa;V=ga;W=ia;X=ja;break}}}if((w|0)<(s|0)){h=U;w=w+1|0;x=V;o=W;y=X}else{Q=U;R=V;S=W;T=X;break}}}if((B|0)<(r|0)){B=B+1|0;e=Q;C=R;q=S;n=T}else{M=Q;N=R;O=S;P=T;break}}}n=P>>1;i[(k[k[d>>2]>>2]|0)+u>>0]=(n+M|0)/(P|0)|0;i[(k[(k[d>>2]|0)+4>>2]|0)+u>>0]=(n+N|0)/(P|0)|0;i[(k[(k[d>>2]|0)+8>>2]|0)+u>>0]=(n+O|0)/(P|0)|0;u=u+1|0}while((u|0)!=(D|0));E=D;F=a+132|0;k[F>>2]=E;G=k[a>>2]|0;H=G+20|0;k[H>>2]=98;I=G+24|0;k[I>>2]=E;J=G+4|0;K=k[J>>2]|0;rb[K&31](a,1);L=c+28|0;k[L>>2]=1;return}function km(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0;e=k[a+484>>2]|0;f=k[e+24>>2]|0;g=k[a+112>>2]|0;h=k[a+336>>2]|0;m=k[e+40>>2]|0;n=k[a+136>>2]|0;o=k[n>>2]|0;p=k[n+4>>2]|0;q=k[n+8>>2]|0;if((d|0)<=0)return;n=e+36|0;r=e+32|0;e=(g|0)==0;s=g+-1|0;t=s*3|0;u=(g*3|0)+3|0;v=0;do{w=k[b+(v<<2)>>2]|0;x=k[c+(v<<2)>>2]|0;if(!(k[n>>2]|0)){y=1;z=3;A=k[r>>2]|0;B=w;C=x;D=1}else{y=-1;z=-3;A=(k[r>>2]|0)+(u<<1)|0;B=w+t|0;C=x+s|0;D=0}k[n>>2]=D;if(e){E=0;F=0;G=0;H=A}else{x=z+1|0;w=z+2|0;I=ha(g,z)|0;J=0;K=0;L=0;M=0;N=0;O=0;P=g;Q=0;R=0;S=0;T=A;U=B;V=C;while(1){W=T;T=T+(z<<1)|0;X=l[h+((l[U>>0]|0)+(k[m+(Q+8+(j[T>>1]|0)>>4<<2)>>2]|0))>>0]|0;Y=l[h+((l[U+1>>0]|0)+(k[m+(R+8+(j[W+(x<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;Z=l[h+((l[U+2>>0]|0)+(k[m+(S+8+(j[W+(w<<1)>>1]|0)>>4<<2)>>2]|0))>>0]|0;_=Z>>>3;$=Y>>>2;aa=X>>>3;ba=(k[f+(aa<<2)>>2]|0)+($<<6)+(_<<1)|0;ca=j[ba>>1]|0;if(!(ca<<16>>16)){nm(a,aa,$,_);da=j[ba>>1]|0}else da=ca;ca=(da&65535)+-1|0;i[V>>0]=ca;ba=X-(l[o+ca>>0]|0)|0;X=Y-(l[p+ca>>0]|0)|0;Y=Z-(l[q+ca>>0]|0)|0;j[W>>1]=(ba*3|0)+M;ca=(ba*5|0)+J|0;j[W+2>>1]=(X*3|0)+N;Z=(X*5|0)+K|0;j[W+4>>1]=(Y*3|0)+O;W=(Y*5|0)+L|0;P=P+-1|0;if(!P){ea=ca;fa=Z;ga=W;break}else{J=ba;K=X;L=Y;M=ca;N=Z;O=W;Q=ba*7|0;R=X*7|0;S=Y*7|0;U=U+z|0;V=V+y|0}}E=ea;F=fa;G=ga;H=A+(I<<1)|0}j[H>>1]=E;j[H+2>>1]=F;j[H+4>>1]=G;v=v+1|0}while((v|0)!=(d|0));return}function lm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;e=k[(k[a+484>>2]|0)+24>>2]|0;f=k[a+112>>2]|0;if((d|0)<=0)return;g=(f|0)==0;h=0;do{if(!g){m=f;n=k[b+(h<<2)>>2]|0;o=k[c+(h<<2)>>2]|0;while(1){p=(l[n>>0]|0)>>>3;q=(l[n+1>>0]|0)>>>2;r=(l[n+2>>0]|0)>>>3;s=(k[e+(p<<2)>>2]|0)+(q<<6)+(r<<1)|0;t=j[s>>1]|0;if(!(t<<16>>16)){nm(a,p,q,r);u=j[s>>1]|0}else u=t;i[o>>0]=(u&65535)+255;m=m+-1|0;if(!m)break;else{n=n+3|0;o=o+1|0}}}h=h+1|0}while((h|0)!=(d|0));return}function mm(a){a=a|0;return}function nm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;e=r;r=r+1408|0;f=e;g=e+1152|0;h=e+1024|0;m=k[(k[a+484>>2]|0)+24>>2]|0;n=b>>2;b=c>>3;c=d>>2;d=n<<5;o=d|4;p=b<<5;q=p|2;s=c<<5;t=s|4;u=k[a+132>>2]|0;v=d|28;d=v+o>>1;w=p|30;p=w+q>>1;x=s|28;s=x+t>>1;if((u|0)>0){y=k[a+136>>2]|0;z=k[y>>2]|0;A=k[y+4>>2]|0;B=k[y+8>>2]|0;y=0;C=2147483647;while(1){D=l[z+y>>0]|0;do if((D|0)>=(o|0)){if((D|0)>(v|0)){E=D-v<<1;F=D-o<<1;G=ha(F,F)|0;H=ha(E,E)|0;break}if((D|0)>(d|0)){E=D-o<<1;G=ha(E,E)|0;H=0;break}else{E=D-v<<1;G=ha(E,E)|0;H=0;break}}else{E=D-o<<1;F=D-v<<1;G=ha(F,F)|0;H=ha(E,E)|0}while(0);D=l[A+y>>0]|0;do if((D|0)>=(q|0)){if((D|0)>(w|0)){E=(D-w|0)*3|0;F=(D-q|0)*3|0;I=ha(F,F)|0;J=(ha(E,E)|0)+H|0;break}if((D|0)>(p|0)){E=(D-q|0)*3|0;I=ha(E,E)|0;J=H;break}else{E=(D-w|0)*3|0;I=ha(E,E)|0;J=H;break}}else{E=(D-q|0)*3|0;F=(D-w|0)*3|0;I=ha(F,F)|0;J=(ha(E,E)|0)+H|0}while(0);D=I+G|0;E=l[B+y>>0]|0;do if((E|0)>=(t|0)){if((E|0)>(x|0)){F=E-x|0;K=E-t|0;L=ha(K,K)|0;M=(ha(F,F)|0)+J|0;break}if((E|0)>(s|0)){F=E-t|0;L=ha(F,F)|0;M=J;break}else{F=E-x|0;L=ha(F,F)|0;M=J;break}}else{F=E-t|0;K=E-x|0;L=ha(K,K)|0;M=(ha(F,F)|0)+J|0}while(0);E=D+L|0;k[f+(y<<2)>>2]=M;F=(E|0)<(C|0)?E:C;y=y+1|0;if((y|0)==(u|0)){N=F;break}else C=F}C=0;y=0;while(1){if((k[f+(C<<2)>>2]|0)>(N|0))O=y;else{i[g+y>>0]=C;O=y+1|0}C=C+1|0;if((C|0)==(u|0)){P=O;break}else y=O}}else P=0;O=f;y=127;while(1){k[O>>2]=2147483647;if((y|0)>0){O=O+4|0;y=y+-1|0}else break}if((P|0)>0){y=a+136|0;a=h+32|0;O=f+128|0;u=h+64|0;C=f+256|0;N=h+96|0;M=f+384|0;L=0;do{J=i[g+L>>0]|0;x=J&255;s=k[y>>2]|0;B=o-(l[(k[s>>2]|0)+x>>0]|0)|0;G=B<<1;I=ha(G,G)|0;G=q-(l[(k[s+4>>2]|0)+x>>0]|0)|0;H=G*3|0;w=(ha(H,H)|0)+I|0;I=t-(l[(k[s+8>>2]|0)+x>>0]|0)|0;x=w+(ha(I,I)|0)|0;w=B<<6;B=w+256|0;s=(G*72|0)+144|0;G=I<<4;I=G+64|0;H=G+192|0;p=G+320|0;G=f;A=h;v=x;d=7;z=s;while(1){if((v|0)<(k[G>>2]|0)){k[G>>2]=v;i[A>>0]=J}F=I+v|0;E=G+4|0;if((F|0)<(k[E>>2]|0)){k[E>>2]=F;i[A+1>>0]=J}E=H+F|0;F=G+8|0;if((E|0)<(k[F>>2]|0)){k[F>>2]=E;i[A+2>>0]=J}F=p+E|0;E=G+12|0;if((F|0)<(k[E>>2]|0)){k[E>>2]=F;i[A+3>>0]=J}if((d|0)>0){G=G+16|0;A=A+4|0;v=v+z|0;d=d+-1|0;z=z+288|0}else break}z=x+B|0;d=w+768|0;v=O;A=a;G=z;D=7;F=s;while(1){if((G|0)<(k[v>>2]|0)){k[v>>2]=G;i[A>>0]=J}E=I+G|0;K=v+4|0;if((E|0)<(k[K>>2]|0)){k[K>>2]=E;i[A+1>>0]=J}K=H+E|0;E=v+8|0;if((K|0)<(k[E>>2]|0)){k[E>>2]=K;i[A+2>>0]=J}E=p+K|0;K=v+12|0;if((E|0)<(k[K>>2]|0)){k[K>>2]=E;i[A+3>>0]=J}if((D|0)>0){v=v+16|0;A=A+4|0;G=G+F|0;D=D+-1|0;F=F+288|0}else break}F=z+d|0;D=w+1280|0;G=C;A=u;v=F;B=7;x=s;while(1){if((v|0)<(k[G>>2]|0)){k[G>>2]=v;i[A>>0]=J}E=I+v|0;K=G+4|0;if((E|0)<(k[K>>2]|0)){k[K>>2]=E;i[A+1>>0]=J}K=H+E|0;E=G+8|0;if((K|0)<(k[E>>2]|0)){k[E>>2]=K;i[A+2>>0]=J}E=p+K|0;K=G+12|0;if((E|0)<(k[K>>2]|0)){k[K>>2]=E;i[A+3>>0]=J}if((B|0)>0){G=G+16|0;A=A+4|0;v=v+x|0;B=B+-1|0;x=x+288|0}else break}x=M;B=N;v=F+D|0;A=7;G=s;while(1){if((v|0)<(k[x>>2]|0)){k[x>>2]=v;i[B>>0]=J}w=I+v|0;d=x+4|0;if((w|0)<(k[d>>2]|0)){k[d>>2]=w;i[B+1>>0]=J}d=H+w|0;w=x+8|0;if((d|0)<(k[w>>2]|0)){k[w>>2]=d;i[B+2>>0]=J}w=p+d|0;d=x+12|0;if((w|0)<(k[d>>2]|0)){k[d>>2]=w;i[B+3>>0]=J}if((A|0)>0){x=x+16|0;B=B+4|0;v=v+G|0;A=A+-1|0;G=G+288|0}else break}L=L+1|0}while((L|0)!=(P|0))}P=n<<2;n=b<<3;b=c<<2;c=k[m+(P<<2)>>2]|0;L=b|1;N=L+1|0;M=b|3;u=h;C=0;while(1){a=C+n|0;j[c+(a<<6)+(b<<1)>>1]=(l[u>>0]|0)+1;j[c+(a<<6)+(L<<1)>>1]=(l[u+1>>0]|0)+1;j[c+(a<<6)+(N<<1)>>1]=(l[u+2>>0]|0)+1;j[c+(a<<6)+(M<<1)>>1]=(l[u+3>>0]|0)+1;C=C+1|0;if((C|0)==8)break;else u=u+4|0}u=k[m+((P|1)<<2)>>2]|0;C=b|1;M=C+1|0;c=b|3;N=h+32|0;L=0;while(1){a=L+n|0;j[u+(a<<6)+(b<<1)>>1]=(l[N>>0]|0)+1;j[u+(a<<6)+(C<<1)>>1]=(l[N+1>>0]|0)+1;j[u+(a<<6)+(M<<1)>>1]=(l[N+2>>0]|0)+1;j[u+(a<<6)+(c<<1)>>1]=(l[N+3>>0]|0)+1;L=L+1|0;if((L|0)==8)break;else N=N+4|0}N=k[m+((P|2)<<2)>>2]|0;L=b|1;c=L+1|0;u=b|3;M=h+64|0;C=0;while(1){a=C+n|0;j[N+(a<<6)+(b<<1)>>1]=(l[M>>0]|0)+1;j[N+(a<<6)+(L<<1)>>1]=(l[M+1>>0]|0)+1;j[N+(a<<6)+(c<<1)>>1]=(l[M+2>>0]|0)+1;j[N+(a<<6)+(u<<1)>>1]=(l[M+3>>0]|0)+1;C=C+1|0;if((C|0)==8)break;else M=M+4|0}M=k[m+((P|3)<<2)>>2]|0;P=b|1;m=P+1|0;C=b|3;u=h+96|0;h=0;while(1){N=h+n|0;j[M+(N<<6)+(b<<1)>>1]=(l[u>>0]|0)+1;j[M+(N<<6)+(P<<1)>>1]=(l[u+1>>0]|0)+1;j[M+(N<<6)+(m<<1)>>1]=(l[u+2>>0]|0)+1;j[M+(N<<6)+(C<<1)>>1]=(l[u+3>>0]|0)+1;h=h+1|0;if((h|0)==8)break;else u=u+4|0}r=e;return}function om(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;c=k[(k[a+484>>2]|0)+24>>2]|0;a=k[b>>2]|0;d=b+4|0;e=k[d>>2]|0;f=b+8|0;g=k[f>>2]|0;h=b+12|0;i=k[h>>2]|0;l=b+16|0;m=k[l>>2]|0;n=b+20|0;o=k[n>>2]|0;a:do if((a|0)<(e|0)){p=(g|0)>(i|0);q=(m|0)>(o|0);r=a;b:while(1){if(!p){s=k[c+(r<<2)>>2]|0;t=g;while(1){if(!q){u=m;v=s+(t<<6)+(m<<1)|0;while(1){if(j[v>>1]|0){w=r;break b}if((u|0)<(o|0)){u=u+1|0;v=v+2|0}else break}}if((t|0)<(i|0))t=t+1|0;else break}}if((r|0)<(e|0))r=r+1|0;else{x=a;break a}}k[b>>2]=w;x=w}else x=a;while(0);c:do if((e|0)>(x|0)){a=(g|0)>(i|0);w=(m|0)>(o|0);r=e;d:while(1){if(!a){q=k[c+(r<<2)>>2]|0;p=g;while(1){if(!w){t=m;s=q+(p<<6)+(m<<1)|0;while(1){if(j[s>>1]|0){y=r;break d}if((t|0)<(o|0)){t=t+1|0;s=s+2|0}else break}}if((p|0)<(i|0))p=p+1|0;else break}}if((r|0)>(x|0))r=r+-1|0;else{z=e;break c}}k[d>>2]=y;z=y}else z=e;while(0);e:do if((g|0)<(i|0)){e=(z|0)<(x|0);y=(m|0)>(o|0);d=g;f:while(1){if(!e){r=x;while(1){if(!y){w=m;a=(k[c+(r<<2)>>2]|0)+(d<<6)+(m<<1)|0;while(1){if(j[a>>1]|0){A=d;break f}if((w|0)<(o|0)){w=w+1|0;a=a+2|0}else break}}if((r|0)<(z|0))r=r+1|0;else break}}if((d|0)<(i|0))d=d+1|0;else{B=g;break e}}k[f>>2]=A;B=A}else B=g;while(0);g:do if((i|0)>(B|0)){g=(z|0)<(x|0);A=(m|0)>(o|0);f=i;h:while(1){if(!g){d=x;while(1){if(!A){y=m;e=(k[c+(d<<2)>>2]|0)+(f<<6)+(m<<1)|0;while(1){if(j[e>>1]|0){C=f;break h}if((y|0)<(o|0)){y=y+1|0;e=e+2|0}else break}}if((d|0)<(z|0))d=d+1|0;else break}}if((f|0)>(B|0))f=f+-1|0;else{D=i;break g}}k[h>>2]=C;D=C}else D=i;while(0);i:do if((m|0)<(o|0)){i=(z|0)<(x|0);C=(D|0)<(B|0);h=m;j:while(1){if(!i){f=x;while(1){if(!C){A=B;g=(k[c+(f<<2)>>2]|0)+(B<<6)+(h<<1)|0;while(1){if(j[g>>1]|0){E=h;break j}if((A|0)<(D|0)){A=A+1|0;g=g+64|0}else break}}if((f|0)<(z|0))f=f+1|0;else break}}if((h|0)<(o|0))h=h+1|0;else{F=m;break i}}k[l>>2]=E;F=E}else F=m;while(0);k:do if((o|0)>(F|0)){m=(z|0)<(x|0);E=(D|0)<(B|0);l=o;l:while(1){m:do if(!m){if(E){h=x;while(1)if((h|0)<(z|0))h=h+1|0;else break m}else G=x;while(1){h=B;C=(k[c+(G<<2)>>2]|0)+(B<<6)+(l<<1)|0;while(1){if(j[C>>1]|0){H=l;break l}if((h|0)<(D|0)){h=h+1|0;C=C+64|0}else break}if((G|0)<(z|0))G=G+1|0;else break}}while(0);if((l|0)>(F|0))l=l+-1|0;else{I=o;break k}}k[n>>2]=H;I=H}else I=o;while(0);o=z-x<<4;H=(D-B|0)*12|0;n=I-F<<3;G=(ha(H,H)|0)+(ha(o,o)|0)+(ha(n,n)|0)|0;k[b+24>>2]=G;if((z|0)<(x|0)){J=0;K=b+28|0;k[K>>2]=J;return}G=(I|0)<(F|0);if((D|0)<(B|0)){J=0;K=b+28|0;k[K>>2]=J;return}else{L=x;M=0}while(1){x=k[c+(L<<2)>>2]|0;if(G)N=M;else{n=B;o=M;while(1){H=F;l=o;E=x+(n<<6)+(F<<1)|0;while(1){m=((j[E>>1]|0)!=0&1)+l|0;if((H|0)<(I|0)){H=H+1|0;l=m;E=E+2|0}else{O=m;break}}if((n|0)<(D|0)){n=n+1|0;o=O}else{N=O;break}}}if((L|0)<(z|0)){L=L+1|0;M=N}else{J=N;break}}K=b+28|0;k[K>>2]=J;return}function pm(a,b){a=a|0;b=b|0;return (a+-1+b|0)/(b|0)|0|0}function qm(a,b){a=a|0;b=b|0;var c=0;c=a+-1+b|0;return c-((c|0)%(b|0)|0)|0}function rm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;if((e|0)<=0)return;g=c+(d<<2)|0;d=a+(b<<2)|0;b=e;while(1){wr(k[g>>2]|0,k[d>>2]|0,f|0)|0;if((b|0)>1){g=g+4|0;d=d+4|0;b=b+-1|0}else break}return}function sm(a,b,c){a=a|0;b=b|0;c=c|0;wr(b|0,a|0,c<<7|0)|0;return}function tm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;b=r;r=r+16|0;c=b;d=b+8|0;e=b+12|0;f=a+4|0;k[f>>2]=0;g=Lm(a)|0;k[d>>2]=g;g=Fm(a,84)|0;if(!g){Mm(a);h=k[a>>2]|0;k[h+20>>2]=56;k[h+24>>2]=0;qb[k[h>>2]&127](a)}k[g>>2]=30;k[g+4>>2]=31;k[g+8>>2]=53;k[g+12>>2]=54;k[g+16>>2]=1;k[g+20>>2]=2;k[g+24>>2]=55;k[g+28>>2]=1;k[g+32>>2]=2;k[g+36>>2]=15;k[g+40>>2]=56;k[g+48>>2]=1e9;a=g+44|0;k[a>>2]=k[d>>2];k[g+56>>2]=0;k[g+64>>2]=0;k[g+52>>2]=0;k[g+60>>2]=0;k[g+68>>2]=0;k[g+72>>2]=0;k[g+76>>2]=84;k[f>>2]=g;g=Xa(161233)|0;if(!g){r=b;return}i[e>>0]=120;k[c>>2]=d;k[c+4>>2]=e;if((Cq(g,161241,c)|0)<=0){r=b;return}switch(i[e>>0]|0){case 77:case 109:{e=(k[d>>2]|0)*1e3|0;k[d>>2]=e;j=e;break}default:j=k[d>>2]|0}k[a>>2]=j*1e3;r=b;return}function um(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=k[a+4>>2]|0;if(c>>>0>999999984){e=k[a>>2]|0;k[e+20>>2]=56;k[e+24>>2]=1;qb[k[e>>2]&127](a)}e=c&7;f=((e|0)==0?0:8-e|0)+c|0;if(b>>>0>1){c=k[a>>2]|0;k[c+20>>2]=15;k[c+24>>2]=b;qb[k[c>>2]&127](a)}c=d+52+(b<<2)|0;e=k[c>>2]|0;a:do if(!e){g=0;h=8}else{i=e;while(1){if((k[i+8>>2]|0)>>>0>=f>>>0){j=i;break a}l=k[i>>2]|0;if(!l){g=i;h=8;break}else i=l}}while(0);do if((h|0)==8){e=f+16|0;i=(g|0)==0;l=k[(i?121244:121252)+(b<<2)>>2]|0;m=999999984-f|0;n=l>>>0>m>>>0?m:l;l=e+n|0;m=Fm(a,l)|0;if(!m){o=n;while(1){p=o>>>1;if(o>>>0<100){q=k[a>>2]|0;k[q+20>>2]=56;k[q+24>>2]=2;qb[k[q>>2]&127](a)}q=e+p|0;r=Fm(a,q)|0;if(!r)o=p;else{s=q;t=r;u=p;break}}}else{s=l;t=m;u=n}o=d+76|0;k[o>>2]=(k[o>>2]|0)+s;k[t>>2]=0;k[t+4>>2]=0;k[t+8>>2]=u+f;if(i){k[c>>2]=t;j=t;break}else{k[g>>2]=t;j=t;break}}while(0);t=j+4|0;g=k[t>>2]|0;k[t>>2]=g+f;t=j+8|0;k[t>>2]=(k[t>>2]|0)-f;return j+16+g|0}function vm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=k[a+4>>2]|0;if(c>>>0>999999984){e=k[a>>2]|0;k[e+20>>2]=56;k[e+24>>2]=3;qb[k[e>>2]&127](a)}e=c&7;f=((e|0)==0?0:8-e|0)+c|0;if(b>>>0>1){c=k[a>>2]|0;k[c+20>>2]=15;k[c+24>>2]=b;qb[k[c>>2]&127](a)}c=f+16|0;e=Hm(a,c)|0;if(!e){g=k[a>>2]|0;k[g+20>>2]=56;k[g+24>>2]=4;qb[k[g>>2]&127](a)}a=d+76|0;k[a>>2]=(k[a>>2]|0)+c;c=d+60+(b<<2)|0;k[e>>2]=k[c>>2];k[e+4>>2]=f;k[e+8>>2]=0;k[c>>2]=e;return e+16|0}function wm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;e=k[a+4>>2]|0;f=999999984/(c>>>0)|0;if(!f){g=k[a>>2]|0;k[g+20>>2]=72;qb[k[g>>2]&127](a)}g=(f|0)<(d|0)?f:d;k[e+80>>2]=g;e=um(a,b,d<<2)|0;if(!d)return e|0;f=~d;h=0;i=g;while(1){g=d-h|0;j=i;i=i>>>0<g>>>0?i:g;g=vm(a,b,ha(i,c)|0)|0;if(!i)l=h;else{m=h+f|0;n=~j;j=m>>>0>n>>>0?m:n;n=h;m=i;o=g;while(1){k[e+(n<<2)>>2]=o;m=m+-1|0;if(!m)break;else{n=n+1|0;o=o+c|0}}l=h+-1-j|0}if(l>>>0>=d>>>0)break;else h=l}return e|0}function xm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;e=k[a+4>>2]|0;f=c<<7;g=999999984/(f>>>0)|0;if(!g){h=k[a>>2]|0;k[h+20>>2]=72;qb[k[h>>2]&127](a)}h=(g|0)<(d|0)?g:d;k[e+80>>2]=h;e=um(a,b,d<<2)|0;if(!d)return e|0;g=~d;i=0;j=h;while(1){h=d-i|0;l=j;j=j>>>0<h>>>0?j:h;h=vm(a,b,ha(f,j)|0)|0;if(!j)m=i;else{n=i+g|0;o=~l;l=n>>>0>o>>>0?n:o;o=i;n=j;p=h;while(1){k[e+(o<<2)>>2]=p;n=n+-1|0;if(!n)break;else{o=o+1|0;p=p+(c<<7)|0}}m=i+-1-l|0}if(m>>>0>=d>>>0)break;else i=m}return e|0}function ym(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=k[a+4>>2]|0;if((b|0)!=1){h=k[a>>2]|0;k[h+20>>2]=15;k[h+24>>2]=b;qb[k[h>>2]&127](a)}h=um(a,b,128)|0;k[h>>2]=0;k[h+4>>2]=e;k[h+8>>2]=d;k[h+12>>2]=f;k[h+32>>2]=c;k[h+40>>2]=0;c=g+68|0;k[h+44>>2]=k[c>>2];k[c>>2]=h;return h|0}function zm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=k[a+4>>2]|0;if((b|0)!=1){h=k[a>>2]|0;k[h+20>>2]=15;k[h+24>>2]=b;qb[k[h>>2]&127](a)}h=um(a,b,128)|0;k[h>>2]=0;k[h+4>>2]=e;k[h+8>>2]=d;k[h+12>>2]=f;k[h+32>>2]=c;k[h+40>>2]=0;c=g+72|0;k[h+44>>2]=k[c>>2];k[c>>2]=h;return h|0}function Am(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;b=a+4|0;c=k[b>>2]|0;d=c+68|0;e=k[d>>2]|0;if(!e){f=0;g=0}else{h=0;i=0;j=e;while(1){if(!(k[j>>2]|0)){e=k[j+8>>2]|0;l=(ha(e,k[j+12>>2]|0)|0)+i|0;m=(ha(k[j+4>>2]|0,e)|0)+h|0;n=l}else{m=h;n=i}j=k[j+44>>2]|0;if(!j){f=m;g=n;break}else{h=m;i=n}}}n=c+72|0;i=k[n>>2]|0;if(!i){o=f;p=g}else{m=i;i=f;f=g;while(1){if(!(k[m>>2]|0)){g=k[m+8>>2]|0;h=(ha(k[m+12>>2]<<7,g)|0)+f|0;q=(ha(g<<7,k[m+4>>2]|0)|0)+i|0;r=h}else{q=i;r=f}m=k[m+44>>2]|0;if(!m){o=q;p=r;break}else{i=q;f=r}}}if((p|0)<1)return;r=Jm(a,p,o,k[c+76>>2]|0)|0;if((r|0)<(o|0)){o=(r|0)/(p|0)|0;s=(o|0)<1?1:o}else s=1e9;o=k[d>>2]|0;if(o){d=c+80|0;p=o;do{if(!(k[p>>2]|0)){o=k[p+4>>2]|0;r=k[p+12>>2]|0;if(((((o+-1|0)>>>0)/(r>>>0)|0)+1|0)>(s|0)){f=ha(r,s)|0;r=p+16|0;k[r>>2]=f;f=p+8|0;Km(a,p+48|0,ha(k[f>>2]|0,o)|0);k[p+40>>2]=1;t=f;u=k[r>>2]|0}else{k[p+16>>2]=o;t=p+8|0;u=o}o=k[t>>2]|0;r=k[b>>2]|0;f=999999984/(o>>>0)|0;if(!f){q=k[a>>2]|0;k[q+20>>2]=72;qb[k[q>>2]&127](a)}q=(f|0)<(u|0)?f:u;k[r+80>>2]=q;r=um(a,1,u<<2)|0;if(u){f=~u;i=0;m=q;while(1){q=u-i|0;h=m;m=m>>>0<q>>>0?m:q;q=ha(m,o)|0;g=k[b>>2]|0;if(q>>>0>999999984){j=k[a>>2]|0;k[j+20>>2]=56;k[j+24>>2]=3;qb[k[j>>2]&127](a)}j=q&7;l=((j|0)==0?0:8-j|0)+q|0;q=l+16|0;j=Hm(a,q)|0;if(!j){e=k[a>>2]|0;k[e+20>>2]=56;k[e+24>>2]=4;qb[k[e>>2]&127](a)}e=g+76|0;k[e>>2]=(k[e>>2]|0)+q;q=g+64|0;k[j>>2]=k[q>>2];k[j+4>>2]=l;k[j+8>>2]=0;k[q>>2]=j;if(!m)v=i;else{q=i+f|0;l=~h;h=q>>>0>l>>>0;g=i;e=m;w=j+16|0;while(1){k[r+(g<<2)>>2]=w;e=e+-1|0;if(!e)break;else{g=g+1|0;w=w+o|0}}v=i+-1-(h?q:l)|0}if(v>>>0>=u>>>0)break;else i=v}}k[p>>2]=r;k[p+20>>2]=k[d>>2];k[p+24>>2]=0;k[p+28>>2]=0;k[p+36>>2]=0}p=k[p+44>>2]|0}while((p|0)!=0)}p=k[n>>2]|0;if(!p)return;n=c+80|0;c=p;do{if(!(k[c>>2]|0)){p=k[c+4>>2]|0;d=k[c+12>>2]|0;if(((((p+-1|0)>>>0)/(d>>>0)|0)+1|0)>(s|0)){v=ha(d,s)|0;d=c+16|0;k[d>>2]=v;v=c+8|0;Km(a,c+48|0,ha(p<<7,k[v>>2]|0)|0);k[c+40>>2]=1;x=v;y=k[d>>2]|0}else{k[c+16>>2]=p;x=c+8|0;y=p}p=k[x>>2]|0;d=k[b>>2]|0;v=p<<7;u=999999984/(v>>>0)|0;if(!u){t=k[a>>2]|0;k[t+20>>2]=72;qb[k[t>>2]&127](a)}t=(u|0)<(y|0)?u:y;k[d+80>>2]=t;d=um(a,1,y<<2)|0;if(y){u=~y;i=0;o=t;while(1){t=y-i|0;m=o;o=o>>>0<t>>>0?o:t;t=ha(o,v)|0;f=k[b>>2]|0;if(t>>>0>999999984){w=k[a>>2]|0;k[w+20>>2]=56;k[w+24>>2]=3;qb[k[w>>2]&127](a)}w=t|16;g=Hm(a,w)|0;if(!g){e=k[a>>2]|0;k[e+20>>2]=56;k[e+24>>2]=4;qb[k[e>>2]&127](a)}e=f+76|0;k[e>>2]=(k[e>>2]|0)+w;w=f+64|0;k[g>>2]=k[w>>2];k[g+4>>2]=t;k[g+8>>2]=0;k[w>>2]=g;if(!o)z=i;else{w=i+u|0;t=~m;m=w>>>0>t>>>0;f=i;e=o;j=g+16|0;while(1){k[d+(f<<2)>>2]=j;e=e+-1|0;if(!e)break;else{f=f+1|0;j=j+(p<<7)|0}}z=i+-1-(m?w:t)|0}if(z>>>0>=y>>>0)break;else i=z}}k[c>>2]=d;k[c+20>>2]=k[n>>2];k[c+24>>2]=0;k[c+28>>2]=0;k[c+36>>2]=0}c=k[c+44>>2]|0}while((c|0)!=0);return}function Bm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=d+c|0;g=b+4|0;if(!((f>>>0<=(k[g>>2]|0)>>>0?(k[b+12>>2]|0)>>>0>=d>>>0:0)?(k[b>>2]|0)!=0:0)){d=k[a>>2]|0;k[d+20>>2]=23;qb[k[d>>2]&127](a)}d=b+24|0;h=k[d>>2]|0;if(!(h>>>0<=c>>>0?f>>>0<=((k[b+16>>2]|0)+h|0)>>>0:0))i=7;a:do if((i|0)==7){if(!(k[b+40>>2]|0)){h=k[a>>2]|0;k[h+20>>2]=71;qb[k[h>>2]&127](a)}h=b+36|0;if(k[h>>2]|0){j=k[b+8>>2]|0;l=k[d>>2]|0;m=b+20|0;n=b+16|0;o=k[n>>2]|0;b:do if((o|0)>0?(p=b+28|0,q=b+48|0,r=b+52|0,s=k[m>>2]|0,t=(s|0)<(o|0)?s:o,s=(k[p>>2]|0)-l|0,u=(t|0)<(s|0)?t:s,s=(k[g>>2]|0)-l|0,t=(u|0)<(s|0)?u:s,(t|0)>=1):0){s=t;t=ha(l,j)|0;u=0;while(1){v=ha(s,j)|0;pb[k[r>>2]&63](a,q,k[(k[b>>2]|0)+(u<<2)>>2]|0,t,v);w=k[m>>2]|0;x=k[n>>2]|0;u=w+u|0;if((x|0)<=(u|0))break b;y=x-u|0;x=(w|0)<(y|0)?w:y;y=u+(k[d>>2]|0)|0;w=(k[p>>2]|0)-y|0;z=(x|0)<(w|0)?x:w;w=(k[g>>2]|0)-y|0;s=(z|0)<(w|0)?z:w;if((s|0)<1)break;else t=v+t|0}}while(0);k[h>>2]=0}n=b+16|0;m=k[n>>2]|0;if((k[d>>2]|0)>>>0<c>>>0)A=c;else{j=f-m|0;A=(j|0)<0?0:j}k[d>>2]=A;j=k[b+8>>2]|0;l=b+20|0;if((m|0)>0?(o=b+28|0,t=b+48|0,s=k[l>>2]|0,p=(s|0)<(m|0)?s:m,m=(k[o>>2]|0)-A|0,s=(p|0)<(m|0)?p:m,m=(k[g>>2]|0)-A|0,p=(s|0)<(m|0)?s:m,(p|0)>=1):0){m=p;p=ha(j,A)|0;s=0;while(1){u=ha(m,j)|0;pb[k[t>>2]&63](a,t,k[(k[b>>2]|0)+(s<<2)>>2]|0,p,u);q=k[l>>2]|0;r=k[n>>2]|0;s=q+s|0;if((r|0)<=(s|0))break a;v=r-s|0;r=(q|0)<(v|0)?q:v;v=s+(k[d>>2]|0)|0;q=(k[o>>2]|0)-v|0;w=(r|0)<(q|0)?r:q;q=(k[g>>2]|0)-v|0;m=(w|0)<(q|0)?w:q;if((m|0)<1)break;else p=u+p|0}}}while(0);g=b+28|0;A=k[g>>2]|0;do if(A>>>0<f>>>0){p=(e|0)==0;if(A>>>0<c>>>0)if(p){B=0;C=c}else{m=k[a>>2]|0;k[m+20>>2]=23;qb[k[m>>2]&127](a);D=c;i=28}else if(p){B=0;C=A}else{D=A;i=28}if((i|0)==28){k[g>>2]=f;B=1;C=D}if(!(k[b+32>>2]|0)){if(B)break;p=k[a>>2]|0;k[p+20>>2]=23;qb[k[p>>2]&127](a);break}p=k[b+8>>2]|0;m=k[d>>2]|0;o=C-m|0;s=f-m|0;if(o>>>0<s>>>0){m=o;do{qr(k[(k[b>>2]|0)+(m<<2)>>2]|0,0,p|0)|0;m=m+1|0}while((m|0)!=(s|0))}}while(0);if(!e){E=k[b>>2]|0;F=k[d>>2]|0;G=c-F|0;H=E+(G<<2)|0;return H|0}k[b+36>>2]=1;E=k[b>>2]|0;F=k[d>>2]|0;G=c-F|0;H=E+(G<<2)|0;return H|0}
87
+function $h(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,vb=0,wb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0;b=r;r=r+272|0;c=b+248|0;d=b+240|0;e=b+232|0;f=b+224|0;g=b+216|0;h=b+208|0;n=b+200|0;o=b+192|0;p=b+184|0;q=b+176|0;s=b+168|0;t=b+160|0;u=b+152|0;v=b+144|0;w=b+136|0;x=b+128|0;y=b+120|0;z=b+112|0;A=b+104|0;B=b+96|0;C=b+88|0;D=b+80|0;E=b+72|0;F=b+64|0;G=b+56|0;H=b+48|0;I=b+40|0;J=b+32|0;K=b+24|0;M=b+16|0;N=b+8|0;O=b;P=b+256|0;Q=a+576|0;R=k[Q>>2]|0;S=R+176|0;T=S;U=k[T>>2]|0;V=k[T+4>>2]|0;if((U|0)==0&(V|0)==0){T=ub[k[a+648>>2]&63](k[a+628>>2]|0)|0;W=L;X=S;k[X>>2]=T;k[X+4>>2]=W;Y=W;Z=T}else{Y=V;Z=U}U=R+208|0;V=U;T=k[V>>2]|0;W=k[V+4>>2]|0;do if(!((T|0)==0&(W|0)==0)){if(!(Y>>>0>W>>>0|(Y|0)==(W|0)&Z>>>0>T>>>0)){k[U>>2]=0;k[U+4>>2]=0;k[U+8>>2]=0;k[U+12>>2]=0;break}V=R+216|0;X=V;S=k[X>>2]|0;_=k[X+4>>2]|0;X=sr(S|0,_|0,T|0,W|0)|0;$=L;if((S|0)==0&(_|0)==0|($>>>0>Y>>>0|($|0)==(Y|0)&X>>>0>Z>>>0)){X=pr(Z|0,Y|0,T|0,W|0)|0;$=V;k[$>>2]=X;k[$+4>>2]=L}}while(0);k[R+1220>>2]=0;k[R+1224>>2]=0;k[R+1228>>2]=k[a+168>>2];W=R+1248|0;T=W;k[T>>2]=0;k[T+4>>2]=0;T=R+1256|0;j[T>>1]=0;Y=R+1260|0;Z=R+1232|0;U=R+1240|0;$=R+225|0;X=R+205|0;V=0;a:while(1){if(!(V<<16>>16)){if(!(ai(R)|0)){aa=0;ba=324;break}_=j[T>>1]|0;if(!(_<<16>>16)){ba=13;break}else ca=_}else ca=V;_=k[Y>>2]|0;if((i[_>>0]|0)!=-1){ba=252;break}S=_+1|0;k[Y>>2]=S;_=ca+-1<<16>>16;j[T>>1]=_;da=S;S=_;while(1){if(!(S<<16>>16)){if(!(ai(R)|0)){aa=0;ba=324;break a}_=j[T>>1]|0;if(!(_<<16>>16)){ba=20;break a}ea=_;fa=k[Y>>2]|0}else{ea=S;fa=da}_=i[fa>>0]|0;ga=fa+1|0;k[Y>>2]=ga;ha=ea+-1<<16>>16;j[T>>1]=ha;if(_<<24>>24==-1){da=ga;S=ha}else{ia=_;ja=ga;ka=ha;break}}S=ia&255;b:do switch(S|0){case 216:break;case 239:case 238:case 237:case 236:case 235:case 234:case 233:case 232:case 231:case 230:case 229:case 228:case 227:case 226:case 225:case 224:case 254:{if(!(ka<<16>>16)){if(!(ai(R)|0)){aa=0;ba=324;break a}da=j[T>>1]|0;if(!(da<<16>>16)){ba=27;break a}la=k[Y>>2]|0;ma=da}else{la=ja;ma=ka}da=i[la>>0]|0;ha=la+1|0;k[Y>>2]=ha;ga=ma+-1<<16>>16;j[T>>1]=ga;_=(da&255)<<8;if(!(ga<<16>>16)){if(!(ai(R)|0)){aa=0;ba=324;break a}da=j[T>>1]|0;if(!(da<<16>>16)){ba=32;break a}na=k[Y>>2]|0;oa=da}else{na=ha;oa=ga}ga=i[na>>0]|0;k[Y>>2]=na+1;ha=oa+-1<<16>>16;j[T>>1]=ha;da=ga&255|_;_=da&65535;if((_&65535)<2){ba=34;break a}if((_&65535)>2?(_=da+65534|0,da=_&65535,ga=((ha&65535)<(da&65535)?ha:da)&65535,k[Y>>2]=na+(ga+1),da=(ha&65535)-ga|0,j[T>>1]=da,ha=_-ga|0,ga=ha&65535,_=ha&65535,(_|0)!=0):0){if(da&65535){ba=39;break a}da=W;ha=k[da>>2]|0;pa=k[da+4>>2]|0;da=(0>pa>>>0|0==(pa|0)&_>>>0>ha>>>0?ha&65535:ga)&65535;ga=Z;_=sr(da|0,0,k[ga>>2]|0,k[ga+4>>2]|0)|0;ga=Z;k[ga>>2]=_;k[ga+4>>2]=L;ga=pr(ha|0,pa|0,da|0,0)|0;da=W;k[da>>2]=ga;k[da+4>>2]=L;i[U>>0]=0}break}case 221:{da=k[Q>>2]|0;ga=da+1256|0;pa=j[ga>>1]|0;if(!(pa<<16>>16)){if(!(ai(da)|0)){aa=0;ba=324;break a}ha=j[ga>>1]|0;if(!(ha<<16>>16)){ba=44;break a}else qa=ha}else qa=pa;pa=da+1260|0;ha=k[pa>>2]|0;_=i[ha>>0]|0;ra=ha+1|0;k[pa>>2]=ra;ha=qa+-1<<16>>16;j[ga>>1]=ha;sa=(_&255)<<8;if(!(ha<<16>>16)){if(!(ai(da)|0)){aa=0;ba=324;break a}_=j[ga>>1]|0;if(!(_<<16>>16)){ba=49;break a}ta=k[pa>>2]|0;ua=_}else{ta=ra;ua=ha}ha=i[ta>>0]|0;ra=ta+1|0;k[pa>>2]=ra;_=ua+-1<<16>>16;j[ga>>1]=_;if((ha&255|sa|0)!=4){ba=51;break a}if(!(_<<16>>16)){if(!(ai(da)|0)){aa=0;ba=324;break a}sa=j[ga>>1]|0;if(!(sa<<16>>16)){ba=56;break a}va=k[pa>>2]|0;wa=sa}else{va=ra;wa=_}_=i[va>>0]|0;ra=va+1|0;k[pa>>2]=ra;sa=wa+-1<<16>>16;j[ga>>1]=sa;ha=(_&255)<<8;if(!(sa<<16>>16)){if(!(ai(da)|0)){aa=0;ba=324;break a}_=j[ga>>1]|0;if(!(_<<16>>16)){ba=61;break a}xa=k[pa>>2]|0;ya=_}else{xa=ra;ya=sa}sa=i[xa>>0]|0;k[pa>>2]=xa+1;j[ga>>1]=ya+-1<<16>>16;j[da+360>>1]=sa&255|ha;break}case 219:{ha=k[Q>>2]|0;sa=ha+1256|0;da=j[sa>>1]|0;if(!(da<<16>>16)){if(!(ai(ha)|0)){aa=0;ba=324;break a}ga=j[sa>>1]|0;if(!(ga<<16>>16)){ba=66;break a}else za=ga}else za=da;da=ha+1260|0;ga=k[da>>2]|0;pa=i[ga>>0]|0;ra=ga+1|0;k[da>>2]=ra;ga=za+-1<<16>>16;j[sa>>1]=ga;_=(pa&255)<<8;if(!(ga<<16>>16)){if(!(ai(ha)|0)){aa=0;ba=324;break a}pa=j[sa>>1]|0;if(!(pa<<16>>16)){ba=71;break a}Aa=k[da>>2]|0;Ba=pa}else{Aa=ra;Ba=ga}ga=i[Aa>>0]|0;k[da>>2]=Aa+1;ra=Ba+-1<<16>>16;j[sa>>1]=ra;pa=ga&255|_;Ca=(i[ha+225>>0]|0)==0;if((pa&65535)<3){ba=73;break a}_=pa+65534|0;pa=_&65535;if(Ca)Da=pa;else{ga=((ra&65535)<(pa&65535)?ra:pa)&65535;k[da>>2]=Aa+(ga+1);pa=(ra&65535)-ga|0;j[sa>>1]=pa;ra=_-ga|0;ga=ra&65535;if(!ga)break b;if(pa&65535){ba=78;break a}pa=ha+1248|0;_=pa;Ea=k[_>>2]|0;Fa=k[_+4>>2]|0;_=(0>Fa>>>0|0==(Fa|0)&ga>>>0>Ea>>>0?Ea&65535:ra&65535)&65535;ra=ha+1232|0;ga=ra;Ga=sr(_|0,0,k[ga>>2]|0,k[ga+4>>2]|0)|0;ga=ra;k[ga>>2]=Ga;k[ga+4>>2]=L;ga=pr(Ea|0,Fa|0,_|0,0)|0;_=pa;k[_>>2]=ga;k[_+4>>2]=L;i[ha+1240>>0]=0;break b}while(1){if((Da&65535)<65){ba=81;break a}_=me(73)|0;if(!_){ba=83;break a}k[_>>2]=73;i[_+4>>0]=-1;i[_+5>>0]=-37;i[_+6>>0]=0;i[_+7>>0]=67;ga=_+8|0;pa=j[sa>>1]|0;Fa=65;Ea=ga;while(1){if(!(pa<<16>>16)){if(!(ai(ha)|0)){Ha=_;ba=90;break a}Ga=j[sa>>1]|0;if(!(Ga<<16>>16)){ba=88;break a}else Ia=Ga}else Ia=pa;Ga=((Fa&65535)>(Ia&65535)?Ia:Fa)&65535;qe(Ea,k[da>>2]|0,Ga);k[da>>2]=(k[da>>2]|0)+Ga;pa=(m[sa>>1]|0)-Ga&65535;j[sa>>1]=pa;ra=(Fa&65535)-Ga|0;if(!(ra&65535))break;else{Fa=ra&65535;Ea=Ea+Ga|0}}Ea=l[ga>>0]&15;if(Ea>>>0>3){Ka=_;ba=92;break a}Fa=ha+312+(Ea<<2)|0;Ea=k[Fa>>2]|0;if(Ea)ne(Ea);k[Fa>>2]=_;Fa=(Da&65535)+65471|0;if(!(Fa&65535))break;else Da=Fa&65535}break}case 196:{ha=k[Q>>2]|0;sa=ha+1256|0;da=j[sa>>1]|0;if(!(da<<16>>16)){if(!(ai(ha)|0)){aa=0;ba=324;break a}Fa=j[sa>>1]|0;if(!(Fa<<16>>16)){ba=99;break a}else La=Fa}else La=da;da=ha+1260|0;Fa=k[da>>2]|0;Ea=i[Fa>>0]|0;pa=Fa+1|0;k[da>>2]=pa;Fa=La+-1<<16>>16;j[sa>>1]=Fa;Ga=(Ea&255)<<8;if(!(Fa<<16>>16)){if(!(ai(ha)|0)){aa=0;ba=324;break a}Ea=j[sa>>1]|0;if(!(Ea<<16>>16)){ba=104;break a}Ma=k[da>>2]|0;Na=Ea}else{Ma=pa;Na=Fa}Fa=i[Ma>>0]|0;k[da>>2]=Ma+1;pa=Na+-1<<16>>16;j[sa>>1]=pa;Ea=Fa&255|Ga;Ga=Ea&65535;Oa=(i[ha+225>>0]|0)==0;if((Ga&65535)<3){ba=106;break a}if(!Oa){ra=Ea+65534|0;Pa=ra&65535;Qa=((pa&65535)<(Pa&65535)?pa:Pa)&65535;k[da>>2]=Ma+(Qa+1);Pa=(pa&65535)-Qa|0;j[sa>>1]=Pa;pa=ra-Qa|0;Qa=pa&65535;if(!Qa)break b;if(Pa&65535){ba=111;break a}Pa=ha+1248|0;ra=Pa;Ra=k[ra>>2]|0;Sa=k[ra+4>>2]|0;ra=(0>Sa>>>0|0==(Sa|0)&Qa>>>0>Ra>>>0?Ra&65535:pa&65535)&65535;pa=ha+1232|0;Qa=pa;Ta=sr(ra|0,0,k[Qa>>2]|0,k[Qa+4>>2]|0)|0;Qa=pa;k[Qa>>2]=Ta;k[Qa+4>>2]=L;Qa=pr(Ra|0,Sa|0,ra|0,0)|0;ra=Pa;k[ra>>2]=Qa;k[ra+4>>2]=L;i[ha+1240>>0]=0;break b}ra=Ea+6|0;Qa=me(ra)|0;if(!Qa){ba=114;break a}k[Qa>>2]=ra;i[Qa+4>>0]=-1;i[Qa+5>>0]=-60;i[Qa+6>>0]=(Ga&65535)>>>8;i[Qa+7>>0]=Fa;Fa=Ea+65534&65535;Ea=Qa+8|0;if(!(Fa<<16>>16)){ba=117;break a}Ga=j[sa>>1]|0;ra=Fa;Fa=Ea;while(1){if(!(Ga<<16>>16)){if(!(ai(ha)|0)){Ua=Qa;ba=123;break a}Pa=j[sa>>1]|0;if(!(Pa<<16>>16)){ba=121;break a}else Va=Pa}else Va=Ga;Pa=((ra&65535)>(Va&65535)?Va:ra)&65535;qe(Fa,k[da>>2]|0,Pa);k[da>>2]=(k[da>>2]|0)+Pa;Ga=(m[sa>>1]|0)-Pa&65535;j[sa>>1]=Ga;Sa=(ra&65535)-Pa|0;if(!(Sa&65535))break;else{ra=Sa&65535;Fa=Fa+Pa|0}}Fa=i[Ea>>0]|0;ra=Fa&255;switch(ra&240|0){case 0:{if((Fa&255)>3){Wa=Qa;ba=126;break a}Fa=ha+328+(ra<<2)|0;Ga=k[Fa>>2]|0;if(Ga)ne(Ga);k[Fa>>2]=Qa;break b;break}case 16:{Fa=ra&15;if(Fa>>>0>3){Xa=Qa;ba=132;break a}ra=ha+344+(Fa<<2)|0;Fa=k[ra>>2]|0;if(Fa)ne(Fa);k[ra>>2]=Qa;break b;break}default:{Ya=Qa;ba=130;break a}}break}case 195:case 193:case 192:{ra=k[Q>>2]|0;Fa=ra+363|0;if(i[Fa>>0]|0){ba=137;break a}Ga=ra+225|0;if(!(i[Ga>>0]|0))i[ra+364>>0]=ia;sa=ra+1256|0;da=j[sa>>1]|0;if(!(da<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Pa=j[sa>>1]|0;if(!(Pa<<16>>16)){ba=143;break a}else Za=Pa}else Za=da;da=ra+1260|0;Pa=k[da>>2]|0;Sa=i[Pa>>0]|0;Ra=Pa+1|0;k[da>>2]=Ra;Pa=Za+-1<<16>>16;j[sa>>1]=Pa;Ta=(Sa&255)<<8;if(!(Pa<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Sa=j[sa>>1]|0;if(!(Sa<<16>>16)){ba=148;break a}_a=k[da>>2]|0;$a=Sa}else{_a=Ra;$a=Pa}Pa=i[_a>>0]|0;Ra=_a+1|0;k[da>>2]=Ra;Sa=$a+-1<<16>>16;j[sa>>1]=Sa;pa=Pa&255|Ta;if((pa&65535)<11){ab=Ga;ba=150;break a}Ta=pa+65528&65535;if((Ta>>>0)%3|0){bb=Ga;ba=153;break a}pa=(Ta>>>0)/3|0;Pa=i[Ga>>0]|0;if(Pa<<24>>24==0?(pa|0)!=(l[ra+204>>0]|0):0){ba=157;break a}if(!(Sa<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}cb=j[sa>>1]|0;if(!(cb<<16>>16)){ba=162;break a}db=k[da>>2]|0;eb=cb;fb=i[Ga>>0]|0}else{db=Ra;eb=Sa;fb=Pa}Pa=i[db>>0]|0;Sa=db+1|0;k[da>>2]=Sa;Ra=eb+-1<<16>>16;j[sa>>1]=Ra;gb=fb<<24>>24==0;if(Pa<<24>>24!=8){ba=164;break a}if(!gb){Pa=Ra&65535;cb=(Ra&65535)<4?Pa:4;hb=db+(cb+1)|0;k[da>>2]=hb;ib=Pa-cb|0;Pa=ib&65535;j[sa>>1]=Pa;jb=4-cb|0;cb=jb&65535;kb=jb&65535;if(!kb){lb=hb;mb=Pa}else{if(ib&65535){ba=169;break a}ib=ra+1248|0;jb=ib;ob=k[jb>>2]|0;pb=k[jb+4>>2]|0;jb=(0>pb>>>0|0==(pb|0)&kb>>>0>ob>>>0?ob&65535:cb)&65535;cb=ra+1232|0;kb=cb;qb=sr(jb|0,0,k[kb>>2]|0,k[kb+4>>2]|0)|0;kb=cb;k[kb>>2]=qb;k[kb+4>>2]=L;kb=pr(ob|0,pb|0,jb|0,0)|0;jb=ib;k[jb>>2]=kb;k[jb+4>>2]=L;i[ra+1240>>0]=0;lb=hb;mb=Pa}}else{if(!(Ra<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Pa=j[sa>>1]|0;if(!(Pa<<16>>16)){ba=175;break a}rb=k[da>>2]|0;sb=Pa}else{rb=Sa;sb=Ra}Ra=i[rb>>0]|0;Sa=rb+1|0;k[da>>2]=Sa;Pa=sb+-1<<16>>16;j[sa>>1]=Pa;hb=(Ra&255)<<8;if(!(Pa<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Ra=j[sa>>1]|0;if(!(Ra<<16>>16)){ba=180;break a}tb=k[da>>2]|0;vb=Ra}else{tb=Sa;vb=Pa}Pa=i[tb>>0]|0;Sa=tb+1|0;k[da>>2]=Sa;Ra=vb+-1<<16>>16;j[sa>>1]=Ra;jb=Pa&255|hb;if(jb>>>0<(k[ra+188>>2]|0)>>>0?jb>>>0<(k[ra+200>>2]|0)>>>0:0){ba=183;break a}k[ra+372>>2]=jb;if(!(Ra<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}jb=j[sa>>1]|0;if(!(jb<<16>>16)){ba=188;break a}wb=k[da>>2]|0;yb=jb}else{wb=Sa;yb=Ra}Ra=i[wb>>0]|0;Sa=wb+1|0;k[da>>2]=Sa;jb=yb+-1<<16>>16;j[sa>>1]=jb;hb=(Ra&255)<<8;if(!(jb<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Ra=j[sa>>1]|0;if(!(Ra<<16>>16)){ba=193;break a}zb=k[da>>2]|0;Ab=Ra}else{zb=Sa;Ab=jb}jb=i[zb>>0]|0;Sa=zb+1|0;k[da>>2]=Sa;Ra=Ab+-1<<16>>16;j[sa>>1]=Ra;Pa=jb&255|hb;hb=k[ra+192>>2]|0;if(Pa>>>0<hb>>>0?Pa>>>0<(k[ra+184>>2]|0)>>>0:0){ba=195;break a}if(Pa>>>0>hb>>>0){ba=197;break a}k[ra+368>>2]=Pa;lb=Sa;mb=Ra}if(!(mb<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}Ra=j[sa>>1]|0;if(!(Ra<<16>>16)){ba=203;break a}Bb=k[da>>2]|0;Cb=Ra}else{Bb=lb;Cb=mb}Ra=i[Bb>>0]|0;k[da>>2]=Bb+1;Sa=Cb+-1<<16>>16;j[sa>>1]=Sa;if((Ra&255|0)!=(pa|0)){Db=Ga;ba=208;break a}c:do if(Ta>>>0>2){Ra=ra+230|0;Pa=ra+228|0;hb=ra+229|0;jb=Sa;kb=0;ib=0;while(1){if(!(jb<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}pb=j[sa>>1]|0;if(!(pb<<16>>16)){ba=213;break a}else Eb=pb}else Eb=jb;pb=k[da>>2]|0;ob=i[pb>>0]|0;k[da>>2]=pb+1;pb=Eb+-1<<16>>16;j[sa>>1]=pb;qb=i[Ga>>0]|0;if(!(qb<<24>>24)){i[ra+376+kb>>0]=ob;Fb=j[sa>>1]|0}else Fb=pb;if(!(Fb<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}pb=j[sa>>1]|0;if(!(pb<<16>>16)){ba=220;break a}Gb=pb;Hb=i[Ga>>0]|0}else{Gb=Fb;Hb=qb}qb=k[da>>2]|0;pb=i[qb>>0]|0;k[da>>2]=qb+1;j[sa>>1]=Gb+-1<<16>>16;d:do if(!(Hb<<24>>24)){i[ra+379+kb>>0]=pb;if(i[Ra>>0]|0)break;if(!(ib<<16>>16))if((pb&255|0)==(l[Pa>>0]<<4|l[hb>>0]|0))break;else{ba=231;break a}else if(pb<<24>>24==17)break;else{ba=233;break a}}else{if(ib<<16>>16){if(pb<<24>>24==17)break;i[Ra>>0]=1;break}qb=(pb&255)>>>4;i[Pa>>0]=qb;ob=pb&15;i[hb>>0]=ob;switch(qb<<24>>24){case 4:case 2:case 1:{switch(ob<<24>>24){case 4:case 2:case 1:{break d;break}default:{}}break}default:{}}i[Ra>>0]=1}while(0);pb=j[sa>>1]|0;if(!(pb<<16>>16)){if(!(ai(ra)|0)){aa=0;ba=324;break a}ob=j[sa>>1]|0;if(!(ob<<16>>16)){ba=238;break a}Ib=ob;Jb=i[Ga>>0]|0}else{Ib=pb;Jb=Hb}pb=k[da>>2]|0;ob=i[pb>>0]|0;k[da>>2]=pb+1;j[sa>>1]=Ib+-1<<16>>16;if(!(Jb<<24>>24))i[ra+382+kb>>0]=ob;ob=ib+1<<16>>16;pb=ob&65535;if(pb>>>0>=pa>>>0){Kb=Jb;break c}jb=j[sa>>1]|0;kb=pb;ib=ob}}else Kb=i[Ga>>0]|0;while(0);if(!(Kb<<24>>24))i[Fa>>0]=1;if(i[$>>0]|0){aa=1;ba=324;break a}break}case 218:{if(i[$>>0]|0){aa=1;ba=324;break a}if(i[X>>0]|0){ba=248;break a}if(!(bi(a)|0)){aa=0;ba=324;break a}break}default:{Lb=S;ba=250;break a}}while(0);if(ia<<24>>24==-38){ba=252;break}V=j[T>>1]|0}switch(ba|0){case 13:{Ja(149747,148429,2031,149768);break}case 20:{Ja(149747,148429,2016,149786);break}case 27:{Ja(149747,148429,2016,149786);break}case 32:{Ja(149747,148429,2016,149786);break}case 34:{if(i[$>>0]|0){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,149800,149823,O);aa=0;r=b;return aa|0}case 39:{Ja(149841,148429,2101,149863);break}case 44:{Ja(149747,148429,2016,149786);break}case 49:{Ja(149747,148429,2016,149786);break}case 51:{vc(k[a+628>>2]|0,149877,149909,N);aa=0;r=b;return aa|0}case 56:{Ja(149747,148429,2016,149786);break}case 61:{Ja(149747,148429,2016,149786);break}case 66:{Ja(149747,148429,2016,149786);break}case 71:{Ja(149747,148429,2016,149786);break}case 73:{if(!Ca){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,149941,149973,M);aa=0;r=b;return aa|0}case 78:{Ja(149841,148429,2101,149863);break}case 81:{vc(k[a+628>>2]|0,149941,149973,K);aa=0;r=b;return aa|0}case 83:{vc(k[a+628>>2]|0,149941,150005,J);aa=0;r=b;return aa|0}case 88:{Ja(149747,148429,2073,150019);break}case 90:{ne(Ha);aa=0;r=b;return aa|0}case 92:{vc(k[a+628>>2]|0,149941,149973,I);ne(Ka);aa=0;r=b;return aa|0}case 99:{Ja(149747,148429,2016,149786);break}case 104:{Ja(149747,148429,2016,149786);break}case 106:{if(!Oa){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,150034,150066,H);aa=0;r=b;return aa|0}case 111:{Ja(149841,148429,2101,149863);break}case 114:{vc(k[a+628>>2]|0,150034,150005,G);aa=0;r=b;return aa|0}case 117:{Ja(150098,148429,2064,150019);break}case 121:{Ja(149747,148429,2073,150019);break}case 123:{ne(Ua);aa=0;r=b;return aa|0}case 126:{vc(k[a+628>>2]|0,150034,150066,F);ne(Wa);aa=0;r=b;return aa|0}case 130:{vc(k[a+628>>2]|0,150034,150066,E);ne(Ya);aa=0;r=b;return aa|0}case 132:{vc(k[a+628>>2]|0,150034,150066,D);ne(Xa);aa=0;r=b;return aa|0}case 137:{vc(k[a+628>>2]|0,150104,149823,C);aa=0;r=b;return aa|0}case 143:{Ja(149747,148429,2016,149786);break}case 148:{Ja(149747,148429,2016,149786);break}case 150:{if(i[ab>>0]|0){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,150104,150136,B);aa=0;r=b;return aa|0}case 153:{if(i[bb>>0]|0){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,150104,150136,A);aa=0;r=b;return aa|0}case 157:{vc(k[a+628>>2]|0,150104,150168,z);aa=0;r=b;return aa|0}case 162:{Ja(149747,148429,2016,149786);break}case 164:{if(!gb){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,150104,150228,y);aa=0;r=b;return aa|0}case 169:{Ja(149841,148429,2101,149863);break}case 175:{Ja(149747,148429,2016,149786);break}case 180:{Ja(149747,148429,2016,149786);break}case 183:{vc(k[a+628>>2]|0,150104,150296,x);aa=0;r=b;return aa|0}case 188:{Ja(149747,148429,2016,149786);break}case 193:{Ja(149747,148429,2016,149786);break}case 195:{vc(k[a+628>>2]|0,150104,150345,w);aa=0;r=b;return aa|0}case 197:{vc(k[a+628>>2]|0,150104,150393,v);aa=0;r=b;return aa|0}case 203:{Ja(149747,148429,2016,149786);break}case 208:{if(i[Db>>0]|0){aa=0;r=b;return aa|0}vc(k[a+628>>2]|0,150104,150136,u);aa=0;r=b;return aa|0}case 213:{Ja(149747,148429,2016,149786);break}case 220:{Ja(149747,148429,2016,149786);break}case 231:{vc(k[a+628>>2]|0,150104,150455,t);aa=0;r=b;return aa|0}case 233:{vc(k[a+628>>2]|0,150104,150455,s);aa=0;r=b;return aa|0}case 238:{Ja(149747,148429,2016,149786);break}case 248:{Ja(150516,148429,1347,149800);break}case 250:{s=k[a+628>>2]|0;k[q>>2]=Lb;vc(s,149800,150543,q);aa=0;r=b;return aa|0}case 252:{if(i[$>>0]|0){aa=1;r=b;return aa|0}$=R+363|0;if(i[$>>0]|0){aa=1;r=b;return aa|0}q=k[Q>>2]|0;s=q+240|0;Lb=k[s>>2]|0;t=k[s+4>>2]|0;if((Lb|0)==0&(t|0)==0){vc(k[a+628>>2]|0,150579,150614,p);aa=0;r=b;return aa|0}i[q+1240>>0]=0;p=q+204|0;s=i[p>>0]|0;e:do if(s<<24>>24){u=a+640|0;Db=a+628|0;v=a+632|0;w=s;x=0;y=Lb;gb=t;z=0;f:while(1){A=q+240+(x<<3)|0;do if((y|0)==0&(gb|0)==0){Mb=x+-1|0;ba=270}else{bb=x+-1|0;if(z<<24>>24!=0?(B=q+240+(bb<<3)|0,(y|0)==(k[B>>2]|0)?(gb|0)==(k[B+4>>2]|0):0):0){Mb=bb;ba=270;break}if(x>>>0>1){B=0;ab=0;do{C=q+240+(B<<3)|0;ab=ab+1<<24>>24;if((y|0)==(k[C>>2]|0)?(gb|0)==(k[C+4>>2]|0):0){ba=265;break f}B=ab&255}while((B|0)<(bb|0))}bb=me(73)|0;if(!bb){ba=267;break f}k[bb>>2]=73;i[bb+4>>0]=-1;i[bb+5>>0]=-37;i[bb+6>>0]=0;i[bb+7>>0]=67;i[bb+8>>0]=z;B=A;xb[k[u>>2]&63](k[Db>>2]|0,k[B>>2]|0,k[B+4>>2]|0,0)|0;if((nb[k[v>>2]&63](k[Db>>2]|0,bb+9|0,64)|0)!=64){aa=0;ba=324;break f}k[q+312+(x<<2)>>2]=bb;i[q+382+x>>0]=z;Nb=i[p>>0]|0}while(0);if((ba|0)==270){ba=0;i[q+382+x>>0]=i[q+382+Mb>>0]|0;Nb=w}A=z+1<<24>>24;Fa=A&255;if((A&255)>=(Nb&255))break e;bb=q+240+(Fa<<3)|0;w=Nb;x=Fa;y=k[bb>>2]|0;gb=k[bb+4>>2]|0;z=A}if((ba|0)==265){vc(k[Db>>2]|0,150579,150634,o);aa=0;r=b;return aa|0}else if((ba|0)==267){vc(k[Db>>2]|0,150579,150005,n);aa=0;r=b;return aa|0}else if((ba|0)==324){r=b;return aa|0}}while(0);i[R+364>>0]=-64;n=R+204|0;o=i[n>>0]|0;if(!(o<<24>>24))Ob=0;else{Nb=o&255;o=0;do{i[R+376+o>>0]=o;o=o+1|0}while(o>>>0<Nb>>>0);Ob=i[n>>0]|0}i[R+379>>0]=l[R+228>>0]<<4|l[R+229>>0];if((Ob&255)>1){Nb=1;do{i[(Nb&255)+(R+379)>>0]=17;Nb=Nb+1<<24>>24}while((Nb&255)<(Ob&255))}k[R+368>>2]=k[R+192>>2];k[R+372>>2]=k[R+200>>2];i[$>>0]=1;$=k[Q>>2]|0;Ob=$+264|0;Nb=k[Ob>>2]|0;o=k[Ob+4>>2]|0;g:do if((Nb|0)==0&(o|0)==0)vc(k[a+628>>2]|0,150664,150614,h);else{i[$+1240>>0]=0;Ob=$+204|0;q=i[Ob>>0]|0;do if(q<<24>>24){Mb=a+640|0;p=a+628|0;t=a+632|0;Lb=P+1|0;s=P+2|0;z=P+3|0;gb=P+4|0;y=P+5|0;x=P+6|0;w=P+7|0;v=P+8|0;u=P+9|0;A=P+10|0;bb=P+11|0;Fa=P+12|0;B=P+13|0;ab=P+14|0;C=P+15|0;Xa=q;D=Nb;Ya=o;E=0;Wa=0;h:while(1){do if((D|0)==0&(Ya|0)==0){Pb=E+-1|0;ba=296}else{F=E+-1|0;if(Wa<<24>>24!=0?(Ua=$+264+(F<<3)|0,(D|0)==(k[Ua>>2]|0)?(Ya|0)==(k[Ua+4>>2]|0):0):0){Pb=F;ba=296;break}if(E>>>0>1){Ua=0;G=0;do{H=$+264+(Ua<<3)|0;G=G+1<<24>>24;if((D|0)==(k[H>>2]|0)?(Ya|0)==(k[H+4>>2]|0):0){ba=290;break h}Ua=G&255}while((Ua|0)<(F|0))}xb[k[Mb>>2]&63](k[p>>2]|0,D,Ya,0)|0;if((nb[k[t>>2]&63](k[p>>2]|0,P,16)|0)!=16)break g;F=(l[Lb>>0]|0)+(l[P>>0]|0)+(l[s>>0]|0)+(l[z>>0]|0)+(l[gb>>0]|0)+(l[y>>0]|0)+(l[x>>0]|0)+(l[w>>0]|0)+(l[v>>0]|0)+(l[u>>0]|0)+(l[A>>0]|0)+(l[bb>>0]|0)+(l[Fa>>0]|0)+(l[B>>0]|0)+(l[ab>>0]|0)+(l[C>>0]|0)|0;Ua=F+25|0;G=me(Ua)|0;if(!G){ba=293;break h}k[G>>2]=Ua;i[G+4>>0]=-1;i[G+5>>0]=-60;Ua=F+19|0;i[G+6>>0]=Ua>>>8;i[G+7>>0]=Ua;i[G+8>>0]=Wa;i[G+9>>0]=i[P>>0]|0;i[G+10>>0]=i[Lb>>0]|0;i[G+11>>0]=i[s>>0]|0;i[G+12>>0]=i[z>>0]|0;i[G+13>>0]=i[gb>>0]|0;i[G+14>>0]=i[y>>0]|0;i[G+15>>0]=i[x>>0]|0;i[G+16>>0]=i[w>>0]|0;i[G+17>>0]=i[v>>0]|0;i[G+18>>0]=i[u>>0]|0;i[G+19>>0]=i[A>>0]|0;i[G+20>>0]=i[bb>>0]|0;i[G+21>>0]=i[Fa>>0]|0;i[G+22>>0]=i[B>>0]|0;i[G+23>>0]=i[ab>>0]|0;i[G+24>>0]=i[C>>0]|0;if((nb[k[t>>2]&63](k[p>>2]|0,G+25|0,F)|0)!=(F|0))break g;k[$+328+(E<<2)>>2]=G;i[$+388+E>>0]=E<<4;Qb=i[Ob>>0]|0}while(0);if((ba|0)==296){ba=0;i[$+388+E>>0]=i[$+388+Pb>>0]|0;Qb=Xa}G=Wa+1<<24>>24;F=G&255;if((G&255)>=(Qb&255)){ba=300;break}Ua=$+264+(F<<3)|0;Xa=Qb;D=k[Ua>>2]|0;Ya=k[Ua+4>>2]|0;E=F;Wa=G}if((ba|0)==290){vc(k[p>>2]|0,150664,150700,g);break g}else if((ba|0)==293){vc(k[p>>2]|0,150664,150005,f);break g}else if((ba|0)==300){Rb=k[Q>>2]|0;break}}else Rb=$;while(0);Ob=Rb+288|0;q=k[Ob>>2]|0;Db=k[Ob+4>>2]|0;i:do if((q|0)==0&(Db|0)==0)vc(k[a+628>>2]|0,150731,150614,e);else{i[Rb+1240>>0]=0;Ob=Rb+204|0;Wa=i[Ob>>0]|0;j:do if(Wa<<24>>24){E=a+640|0;Ya=a+628|0;D=a+632|0;Xa=P+1|0;t=P+2|0;C=P+3|0;ab=P+4|0;B=P+5|0;Fa=P+6|0;bb=P+7|0;A=P+8|0;u=P+9|0;v=P+10|0;w=P+11|0;x=P+12|0;y=P+13|0;gb=P+14|0;z=P+15|0;s=q;Lb=Db;Mb=0;G=Wa;F=0;k:while(1){do if((s|0)==0&(Lb|0)==0){Sb=Mb+-1|0;ba=318}else{Ua=Mb+-1|0;if(F<<24>>24!=0?(H=Rb+288+(Ua<<3)|0,(s|0)==(k[H>>2]|0)?(Lb|0)==(k[H+4>>2]|0):0):0){Sb=Ua;ba=318;break}if(Mb>>>0>1){H=0;Oa=0;do{Ka=Rb+288+(H<<3)|0;Oa=Oa+1<<24>>24;if((s|0)==(k[Ka>>2]|0)?(Lb|0)==(k[Ka+4>>2]|0):0){ba=312;break k}H=Oa&255}while((H|0)<(Ua|0))}xb[k[E>>2]&63](k[Ya>>2]|0,s,Lb,0)|0;if((nb[k[D>>2]&63](k[Ya>>2]|0,P,16)|0)!=16)break i;Ua=(l[Xa>>0]|0)+(l[P>>0]|0)+(l[t>>0]|0)+(l[C>>0]|0)+(l[ab>>0]|0)+(l[B>>0]|0)+(l[Fa>>0]|0)+(l[bb>>0]|0)+(l[A>>0]|0)+(l[u>>0]|0)+(l[v>>0]|0)+(l[w>>0]|0)+(l[x>>0]|0)+(l[y>>0]|0)+(l[gb>>0]|0)+(l[z>>0]|0)|0;H=Ua+25|0;Oa=me(H)|0;if(!Oa){ba=315;break k}k[Oa>>2]=H;i[Oa+4>>0]=-1;i[Oa+5>>0]=-60;H=Ua+19|0;i[Oa+6>>0]=H>>>8;i[Oa+7>>0]=H;i[Oa+8>>0]=Mb|16;i[Oa+9>>0]=i[P>>0]|0;i[Oa+10>>0]=i[Xa>>0]|0;i[Oa+11>>0]=i[t>>0]|0;i[Oa+12>>0]=i[C>>0]|0;i[Oa+13>>0]=i[ab>>0]|0;i[Oa+14>>0]=i[B>>0]|0;i[Oa+15>>0]=i[Fa>>0]|0;i[Oa+16>>0]=i[bb>>0]|0;i[Oa+17>>0]=i[A>>0]|0;i[Oa+18>>0]=i[u>>0]|0;i[Oa+19>>0]=i[v>>0]|0;i[Oa+20>>0]=i[w>>0]|0;i[Oa+21>>0]=i[x>>0]|0;i[Oa+22>>0]=i[y>>0]|0;i[Oa+23>>0]=i[gb>>0]|0;i[Oa+24>>0]=i[z>>0]|0;if((nb[k[D>>2]&63](k[Ya>>2]|0,Oa+25|0,Ua)|0)!=(Ua|0))break i;k[Rb+344+(Mb<<2)>>2]=Oa;Oa=Rb+388+Mb|0;i[Oa>>0]=i[Oa>>0]|F;Tb=i[Ob>>0]|0}while(0);if((ba|0)==318){ba=0;Oa=Rb+388+Mb|0;i[Oa>>0]=l[Rb+388+Sb>>0]&15|l[Oa>>0];Tb=G}Oa=F+1<<24>>24;Ua=Oa&255;if((Oa&255)>=(Tb&255))break j;H=Rb+288+(Ua<<3)|0;s=k[H>>2]|0;Lb=k[H+4>>2]|0;Mb=Ua;G=Tb;F=Oa}if((ba|0)==312){vc(k[Ya>>2]|0,150731,150767,d);break i}else if((ba|0)==315){vc(k[Ya>>2]|0,150731,150005,c);break i}}while(0);Ob=i[n>>0]|0;if((Ob&255)>1)Ub=1;else{aa=1;r=b;return aa|0}do{i[(Ub&255)+(R+385)>>0]=Ub;Ub=Ub+1<<24>>24}while((Ub&255)<(Ob&255));aa=1;r=b;return aa|0}while(0);aa=0;r=b;return aa|0}while(0);aa=0;r=b;return aa|0}case 324:{r=b;return aa|0}}return 0}function ai(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;b=a+1248|0;c=b;d=k[c>>2]|0;e=k[c+4>>2]|0;c=a+1240|0;a:do if((d|0)==0&(e|0)==0){f=a+1220|0;g=a+208|0;h=a+1232|0;l=a+216|0;m=a+1224|0;n=a+1228|0;o=a+176|0;b:while(1){i[c>>0]=0;c:do switch(k[f>>2]|0){case 0:{p=g;q=k[p>>2]|0;r=k[p+4>>2]|0;if(!((q|0)==0&(r|0)==0)){p=h;k[p>>2]=q;k[p+4>>2]=r;r=l;p=k[r+4>>2]|0;q=b;k[q>>2]=k[r>>2];k[q+4>>2]=p}k[f>>2]=1;break}case 1:{k[f>>2]=2;break}case 2:{if(!(gc(k[a>>2]|0)|0)){s=0;t=32;break b}p=k[a>>2]|0;q=k[p+172>>2]|0;if(!q){s=0;t=32;break b}r=k[p+176>>2]|0;if(!r){s=0;t=32;break b}p=k[m>>2]|0;if((p|0)==(k[n>>2]|0)){k[f>>2]=3;break c}u=q+(p<<3)|0;q=k[u>>2]|0;v=k[u+4>>2]|0;u=h;k[u>>2]=q;k[u+4>>2]=v;do if(!((q|0)==0&(v|0)==0)){u=o;w=k[u>>2]|0;x=k[u+4>>2]|0;if(!(x>>>0>v>>>0|(x|0)==(v|0)&w>>>0>q>>>0)){u=h;k[u>>2]=0;k[u+4>>2]=0;break}u=r+(p<<3)|0;y=k[u>>2]|0;z=k[u+4>>2]|0;u=b;k[u>>2]=y;k[u+4>>2]=z;if((y|0)==0&(z|0)==0){u=h;k[u>>2]=0;k[u+4>>2]=0;break}u=sr(q|0,v|0,y|0,z|0)|0;z=L;if(z>>>0>x>>>0|(z|0)==(x|0)&u>>>0>w>>>0){u=pr(w|0,x|0,q|0,v|0)|0;x=b;k[x>>2]=u;k[x+4>>2]=L}}while(0);k[m>>2]=p+1;break}default:{s=0;t=32;break b}}while(0);v=b;q=k[v>>2]|0;r=k[v+4>>2]|0;if(!((q|0)==0&(r|0)==0)){A=q;B=r;break a}}if((t|0)==32)return s|0}else{A=d;B=e}while(0);if(!(i[c>>0]|0)){e=k[a>>2]|0;d=a+1232|0;xb[k[e+640>>2]&63](k[e+628>>2]|0,k[d>>2]|0,k[d+4>>2]|0,0)|0;i[c>>0]=1;c=b;C=k[c+4>>2]|0;D=k[c>>2]|0}else{C=B;D=A}A=k[a>>2]|0;B=a+1264|0;c=nb[k[A+632>>2]&63](k[A+628>>2]|0,B,C>>>0<0|(C|0)==0&D>>>0<2048?D&65535:2048)|0;if(!c){s=0;return s|0}if((c|0)<=0)Ja(150888,148429,1944,150892);if((c|0)>=2049)Ja(150912,148429,1945,150892);D=((c|0)<0)<<31>>31;C=b;A=k[C>>2]|0;d=k[C+4>>2]|0;if(D>>>0>d>>>0|(D|0)==(d|0)&c>>>0>A>>>0)Ja(150928,148429,1947,150892);j[a+1256>>1]=c;k[a+1260>>2]=B;B=c&65535;c=pr(A|0,d|0,B|0,0)|0;d=b;k[d>>2]=c;k[d+4>>2]=L;d=a+1232|0;a=d;c=sr(k[a>>2]|0,k[a+4>>2]|0,B|0,0)|0;B=d;k[B>>2]=c;k[B+4>>2]=L;s=1;return s|0}function bi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=k[a+576>>2]|0;if(i[e+225>>0]|0)Ja(150798,148429,1701,150824);if(!(i[e+363>>0]|0)){vc(k[a+628>>2]|0,150824,150856,b);f=0;r=b;return f|0}g=e+1256|0;h=j[g>>1]|0;if(!(h<<16>>16)){if(!(ai(e)|0)){f=0;r=b;return f|0}m=j[g>>1]|0;if(!(m<<16>>16))Ja(149747,148429,2016,149786);else n=m}else n=h;h=e+1260|0;m=k[h>>2]|0;o=i[m>>0]|0;p=m+1|0;k[h>>2]=p;m=n+-1<<16>>16;j[g>>1]=m;n=(o&255)<<8;do if(!(m<<16>>16)){if(!(ai(e)|0)){f=0;r=b;return f|0}o=j[g>>1]|0;if(!(o<<16>>16))Ja(149747,148429,2016,149786);else{q=k[h>>2]|0;s=o;break}}else{q=p;s=m}while(0);m=i[q>>0]|0;p=q+1|0;k[h>>2]=p;q=s+-1<<16>>16;j[g>>1]=q;s=e+206|0;o=i[s>>0]|0;if((m&255|n|0)!=(((o&255)<<1)+6|0)){vc(k[a+628>>2]|0,150824,150856,d);f=0;r=b;return f|0}do if(!(q<<16>>16)){if(!(ai(e)|0)){f=0;r=b;return f|0}d=j[g>>1]|0;if(!(d<<16>>16))Ja(149747,148429,2016,149786);else{t=k[h>>2]|0;u=d;v=i[s>>0]|0;break}}else{t=p;u=q;v=o}while(0);o=i[t>>0]|0;q=t+1|0;k[h>>2]=q;t=u+-1<<16>>16;j[g>>1]=t;if(o<<24>>24!=v<<24>>24){vc(k[a+628>>2]|0,150824,150856,c);f=0;r=b;return f|0}do if(v<<24>>24){c=e+205|0;a=t;o=0;u=0;while(1){if(!(a<<16>>16)){if(!(ai(e)|0)){f=0;w=40;break}p=j[g>>1]|0;if(!(p<<16>>16)){w=28;break}else x=p}else x=a;p=k[h>>2]|0;d=i[p>>0]|0;k[h>>2]=p+1;j[g>>1]=x+-1<<16>>16;p=i[c>>0]|0;i[(p&255)+o+(e+385)>>0]=d;d=j[g>>1]|0;if(!(d<<16>>16)){if(!(ai(e)|0)){f=0;w=40;break}n=j[g>>1]|0;if(!(n<<16>>16)){w=33;break}y=n;z=i[c>>0]|0}else{y=d;z=p}p=k[h>>2]|0;d=i[p>>0]|0;k[h>>2]=p+1;j[g>>1]=y+-1<<16>>16;i[(z&255)+o+(e+388)>>0]=d;d=u+1<<24>>24;p=j[g>>1]|0;if((d&255)<(l[s>>0]|0)){a=p;o=d&255;u=d}else{A=p;w=35;break}}if((w|0)==28)Ja(149747,148429,2016,149786);else if((w|0)==33)Ja(149747,148429,2016,149786);else if((w|0)==35){B=A;C=k[h>>2]|0;break}else if((w|0)==40){r=b;return f|0}}else{B=t;C=q}while(0);q=B&65535;t=(B&65535)<3?q:3;k[h>>2]=C+t;C=q-t|0;j[g>>1]=C;g=3-t|0;t=g&65535;if(!t){f=1;r=b;return f|0}if(C&65535)Ja(149841,148429,2101,149863);C=e+1248|0;q=C;h=k[q>>2]|0;B=k[q+4>>2]|0;q=(0>B>>>0|0==(B|0)&t>>>0>h>>>0?h&65535:g&65535)&65535;g=e+1232|0;t=g;w=sr(q|0,0,k[t>>2]|0,k[t+4>>2]|0)|0;t=g;k[t>>2]=w;k[t+4>>2]=L;t=pr(h|0,B|0,q|0,0)|0;q=C;k[q>>2]=t;k[q+4>>2]=L;i[e+1240>>0]=0;f=1;r=b;return f|0}function ci(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=4;f=jr(40)|0;k[f>>2]=0;f=tr(a+4|0,1,f|0,e|0)|0;e=L;w=0;a=w;w=0;if((a|0)!=0&(x|0)!=0){g=vr(k[a>>2]|0,f|0,e|0)|0;if(!g)La(a|0,x|0);L=x}else g=-1;if((g|0)==1)h=L;else h=0;while(1){if(h){i=0;j=6;break}w=0;ma(18,b|0,c|0,d|0)|0;g=w;w=0;if((g|0)!=0&(x|0)!=0){l=vr(k[g>>2]|0,f|0,e|0)|0;if(!l)La(g|0,x|0);L=x}else l=-1;if((l|0)==1)h=L;else break}if((j|0)==6){kr(f|0);return i|0}i=1;kr(f|0);return i|0}function di(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=4;e=jr(40)|0;k[e>>2]=0;e=tr(a+4|0,1,e|0,d|0)|0;d=L;w=0;a=w;w=0;if((a|0)!=0&(x|0)!=0){f=vr(k[a>>2]|0,e|0,d|0)|0;if(!f)La(a|0,x|0);L=x}else f=-1;if((f|0)==1)g=L;else g=0;while(1){if(g){h=0;i=6;break}w=0;ma(17,b|0,c|0,1)|0;f=w;w=0;if((f|0)!=0&(x|0)!=0){j=vr(k[f>>2]|0,e|0,d|0)|0;if(!j)La(f|0,x|0);L=x}else j=-1;if((j|0)==1)g=L;else break}if((i|0)==6){kr(e|0);return h|0}h=1;kr(e|0);return h|0}function ei(a){a=a|0;var b=0,c=0,d=0,e=0;b=r;r=r+208|0;c=b;d=b+8|0;rb[k[(k[a>>2]|0)+12>>2]&31](a,d);e=k[(k[a+12>>2]|0)+628>>2]|0;k[c>>2]=d;ie(e,151596,154321,c);r=b;return}function fi(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+208|0;c=b;d=b+8|0;rb[k[(k[a>>2]|0)+12>>2]&31](a,d);b=a+12|0;a=k[(k[b>>2]|0)+628>>2]|0;k[c>>2]=d;vc(a,151596,154321,c);oi(k[b>>2]|0)}function gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+4|0,1,d|0,c|0)|0;c=L;w=0;a=w;w=0;if((a|0)!=0&(x|0)!=0){e=vr(k[a>>2]|0,d|0,c|0)|0;if(!e)La(a|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;ua(14,b|0,90,488);e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,d|0,c|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(d|0);return g|0}g=1;kr(d|0);return g|0}function hi(a){a=a|0;return}function ii(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0;b=r;r=r+16|0;c=b;d=k[a+12>>2]|0;a=d+576|0;e=k[a>>2]|0;f=e+3312|0;g=0;h=0;a:while(1){m=k[f>>2]|0;if(m>>>0>=19){n=4;break}do switch(m|0){case 0:{n=5;break a;break}case 14:{n=45;break a;break}case 15:{n=51;break a;break}case 16:{n=57;break a;break}case 17:{n=67;break a;break}case 18:{n=68;break a;break}case 1:{o=k[a>>2]|0;p=k[o+312>>2]|0;if(!p){q=g;s=h;t=0}else{u=(k[p>>2]|0)+-4|0;q=p+4|0;s=u;t=u}u=o+3312|0;k[u>>2]=(k[u>>2]|0)+1;v=t;w=q;x=s;break}case 2:{u=k[a>>2]|0;o=k[u+316>>2]|0;if(!o){y=g;z=h;A=0}else{p=(k[o>>2]|0)+-4|0;y=o+4|0;z=p;A=p}p=u+3312|0;k[p>>2]=(k[p>>2]|0)+1;v=A;w=y;x=z;break}case 3:{p=k[a>>2]|0;u=k[p+320>>2]|0;if(!u){B=g;C=h;D=0}else{o=(k[u>>2]|0)+-4|0;B=u+4|0;C=o;D=o}o=p+3312|0;k[o>>2]=(k[o>>2]|0)+1;v=D;w=B;x=C;break}case 4:{o=k[a>>2]|0;p=k[o+324>>2]|0;if(!p){E=g;F=h;G=0}else{u=(k[p>>2]|0)+-4|0;E=p+4|0;F=u;G=u}u=o+3312|0;k[u>>2]=(k[u>>2]|0)+1;v=G;w=E;x=F;break}case 5:{u=k[a>>2]|0;o=k[u+328>>2]|0;if(!o){H=g;I=h;J=0}else{p=(k[o>>2]|0)+-4|0;H=o+4|0;I=p;J=p}p=u+3312|0;k[p>>2]=(k[p>>2]|0)+1;v=J;w=H;x=I;break}case 6:{p=k[a>>2]|0;u=k[p+332>>2]|0;if(!u){K=g;L=h;M=0}else{o=(k[u>>2]|0)+-4|0;K=u+4|0;L=o;M=o}o=p+3312|0;k[o>>2]=(k[o>>2]|0)+1;v=M;w=K;x=L;break}case 7:{o=k[a>>2]|0;p=k[o+336>>2]|0;if(!p){N=g;O=h;P=0}else{u=(k[p>>2]|0)+-4|0;N=p+4|0;O=u;P=u}u=o+3312|0;k[u>>2]=(k[u>>2]|0)+1;v=P;w=N;x=O;break}case 8:{u=k[a>>2]|0;o=k[u+340>>2]|0;if(!o){Q=g;R=h;S=0}else{p=(k[o>>2]|0)+-4|0;Q=o+4|0;R=p;S=p}p=u+3312|0;k[p>>2]=(k[p>>2]|0)+1;v=S;w=Q;x=R;break}case 9:{p=k[a>>2]|0;u=k[p+344>>2]|0;if(!u){T=g;U=h;V=0}else{o=(k[u>>2]|0)+-4|0;T=u+4|0;U=o;V=o}o=p+3312|0;k[o>>2]=(k[o>>2]|0)+1;v=V;w=T;x=U;break}case 10:{o=k[a>>2]|0;p=k[o+348>>2]|0;if(!p){W=g;X=h;Y=0}else{u=(k[p>>2]|0)+-4|0;W=p+4|0;X=u;Y=u}u=o+3312|0;k[u>>2]=(k[u>>2]|0)+1;v=Y;w=W;x=X;break}case 11:{u=k[a>>2]|0;o=k[u+352>>2]|0;if(!o){Z=g;_=h;$=0}else{p=(k[o>>2]|0)+-4|0;Z=o+4|0;_=p;$=p}p=u+3312|0;k[p>>2]=(k[p>>2]|0)+1;v=$;w=Z;x=_;break}case 12:{p=k[a>>2]|0;u=k[p+356>>2]|0;if(!u){aa=g;ba=h;ca=0}else{o=(k[u>>2]|0)+-4|0;aa=u+4|0;ba=o;ca=o}o=p+3312|0;k[o>>2]=(k[o>>2]|0)+1;v=ca;w=aa;x=ba;break}case 13:{o=k[a>>2]|0;p=j[o+360>>1]|0;if(!(p<<16>>16)){da=g;ea=h;fa=0}else{u=o+3316|0;i[u>>0]=-1;i[o+3317>>0]=-35;i[o+3318>>0]=0;i[o+3319>>0]=4;i[o+3320>>0]=(p&65535)>>>8;i[o+3321>>0]=p;da=u;ea=6;fa=6}u=o+3312|0;k[u>>2]=(k[u>>2]|0)+1;v=fa;w=da;x=ea;break}default:{n=72;break a}}while(0);if(!v){g=w;h=x}else{ga=w;ha=x;n=71;break}}if((n|0)==4)Ja(151621,148429,2124,151644);else if((n|0)==5){x=k[a>>2]|0;w=x+3316|0;i[w>>0]=-1;i[x+3317>>0]=-40;h=x+3312|0;k[h>>2]=(k[h>>2]|0)+1;ga=w;ha=2;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==45){w=k[a>>2]|0;h=i[w+206>>0]|0;x=((h&255)*3|0)+8|0;if(x>>>0>=256)Ja(151661,148429,2263,151702);g=w+3316|0;i[g>>0]=-1;i[w+3317>>0]=i[w+364>>0]|0;i[w+3318>>0]=0;i[w+3319>>0]=x;i[w+3320>>0]=8;x=k[w+372>>2]|0;i[w+3321>>0]=x>>>8;i[w+3322>>0]=x;x=k[w+368>>2]|0;i[w+3323>>0]=x>>>8;i[w+3324>>0]=x;i[w+3325>>0]=h;if(!(h<<24>>24))ka=0;else{x=l[w+205>>0]|0;v=0;do{ea=v+x|0;da=v*3|0;i[da+10+(w+3316)>>0]=i[w+376+ea>>0]|0;i[da+11+(w+3316)>>0]=i[w+379+ea>>0]|0;i[da+12+(w+3316)>>0]=i[w+382+ea>>0]|0;v=v+1|0}while((v&255)<<24>>24!=h<<24>>24);ka=h}h=w+3312|0;k[h>>2]=(k[h>>2]|0)+1;ga=g;ha=((ka&255)*3|0)+10|0;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==51){ka=k[a>>2]|0;g=i[ka+206>>0]|0;h=(g&255)<<1;w=h+6|0;if(w>>>0>=256)Ja(151722,148429,2299,151763);v=ka+3316|0;i[v>>0]=-1;i[ka+3317>>0]=-38;i[ka+3318>>0]=0;i[ka+3319>>0]=w;i[ka+3320>>0]=g;if(!(g<<24>>24))la=0;else{x=l[ka+205>>0]|0;ea=0;do{da=ea+x|0;fa=ea<<1;i[fa+5+(ka+3316)>>0]=i[ka+385+da>>0]|0;i[fa+6+(ka+3316)>>0]=i[ka+388+da>>0]|0;ea=ea+1|0}while((ea&255)<<24>>24!=g<<24>>24);la=g}i[((la&255)<<1)+5+(ka+3316)>>0]=0;i[ka+3316+w>>0]=63;i[h+7+(ka+3316)>>0]=0;w=ka+3312|0;k[w>>2]=(k[w>>2]|0)+1;ga=v;ha=h+8|0;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==57){h=k[a>>2]|0;v=h+1256|0;w=j[v>>1]|0;if(!(w<<16>>16)){if(!(ai(h)|0)){vc(k[d+628>>2]|0,151596,151810,c);oi(d)}d=j[v>>1]|0;if(!(d<<16>>16))Ja(149747,148429,2333,151783);else ma=d}else ma=w;w=ma&65535;ma=k[h+1260>>2]|0;j[v>>1]=0;v=h+1248|0;if(!((k[v>>2]|0)==0&(k[v+4>>2]|0)==0)){ga=ma;ha=w;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}switch(k[h+1220>>2]|0){case 2:{v=h+3312|0;if((k[h+1224>>2]|0)>>>0<(k[h+1228>>2]|0)>>>0){k[v>>2]=17;ga=ma;ha=w;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else{k[v>>2]=18;ga=ma;ha=w;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}break}case 3:{k[h+3312>>2]=18;ga=ma;ha=w;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}default:{ga=ma;ha=w;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}}}else if((n|0)==67){w=k[a>>2]|0;ma=w+3316|0;i[ma>>0]=-1;h=w+362|0;v=i[h>>0]|0;i[w+3317>>0]=(v&255)+208;d=v+1<<24>>24;i[h>>0]=d<<24>>24==8?0:d;k[w+3312>>2]=16;ga=ma;ha=2;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==68){ma=k[a>>2]|0;a=ma+3316|0;i[a>>0]=-1;i[ma+3317>>0]=-39;ga=a;ha=2;ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==71){ia=e+1120|0;ja=e+1124|0;k[ja>>2]=ha;k[ia>>2]=ga;r=b;return 1}else if((n|0)==72)while(1){n=0;n=72}return 0}function ji(a,b){a=a|0;b=b|0;var c=0;b=r;r=r+16|0;c=k[a+12>>2]|0;vc(k[c+628>>2]|0,151596,151604,b);oi(c)}function ki(a,b){a=a|0;b=b|0;var c=0;b=r;r=r+16|0;c=k[a+12>>2]|0;vc(k[c+628>>2]|0,151596,151604,b);oi(c);return 0}function li(a){a=a|0;return}function mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+4|0,1,d|0,c|0)|0;c=L;w=0;a=w;w=0;if((a|0)!=0&(x|0)!=0){e=vr(k[a>>2]|0,d|0,c|0)|0;if(!e)La(a|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;xa(30,b|0,1)|0;e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,d|0,c|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(d|0);return g|0}g=1;kr(d|0);return g|0}function ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=4;d=jr(40)|0;k[d>>2]=0;d=tr(a+4|0,1,d|0,c|0)|0;c=L;w=0;a=w;w=0;if((a|0)!=0&(x|0)!=0){e=vr(k[a>>2]|0,d|0,c|0)|0;if(!e)La(a|0,x|0);L=x}else e=-1;if((e|0)==1)f=L;else f=0;while(1){if(f){g=0;h=6;break}w=0;ta(21,b|0)|0;e=w;w=0;if((e|0)!=0&(x|0)!=0){i=vr(k[e>>2]|0,d|0,c|0)|0;if(!i)La(e|0,x|0);L=x}else i=-1;if((i|0)==1)f=L;else break}if((h|0)==6){kr(d|0);return g|0}g=1;kr(d|0);return g|0}function oi(a){a=a|0;La((k[a+576>>2]|0)+4|0,1)}function pi(a,b){a=a|0;b=b|0;k[a+532>>2]=41;k[a+540>>2]=41;k[a+548>>2]=41;k[a+524>>2]=37;k[a+528>>2]=34;k[a+536>>2]=42;k[a+544>>2]=43;k[a+552>>2]=43;return 1}function qi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;d=r;r=r+32|0;e=d+24|0;f=d+16|0;g=d+8|0;h=d;j=a+604|0;l=k[j>>2]|0;m=a+608|0;n=k[m>>2]|0;o=a+628|0;p=(c|0)>0;a:do if(p){q=b;s=c;t=p;u=l;v=n;b:while(1){w=u;x=v;while(1){if((x|0)<=0){y=w;z=x;A=5;break b}B=w+1|0;C=i[w>>0]|0;D=x+-1|0;if(C<<24>>24>=0){E=B;F=C;G=D;H=w;I=x;A=12;break}if(C<<24>>24==-128){w=B;x=D}else{J=B;K=C;L=w;M=x;A=8;break}}if((A|0)==8){A=0;x=1-(K<<24>>24)|0;if((x|0)>(s|0)){w=k[o>>2]|0;k[h>>2]=x-s;ie(w,152115,152130,h);N=s}else N=x;x=L+2|0;w=M+-2|0;if((N|0)>0){qr(q|0,i[J>>0]|0,N|0)|0;O=q+N|0;P=x;Q=w;R=N}else{O=q;P=x;Q=w;R=N}}else if((A|0)==12){A=0;w=F<<24>>24;if((s|0)<(w+1|0)){x=k[o>>2]|0;k[g>>2]=1-s+w;ie(x,152115,152130,g);S=s+-1|0}else S=w;w=S+1|0;if((I|0)<=(w|0)){A=17;break}qe(q,E,w);O=q+w|0;P=H+(S+2)|0;Q=G-w|0;R=w}s=s-R|0;w=(s|0)>0;if(!w){T=P;U=Q;break a}else{q=O;t=w;u=P;v=Q}}if((A|0)==5){k[j>>2]=y;k[m>>2]=z}else if((A|0)==17?(ie(k[o>>2]|0,152115,152175,f),k[j>>2]=E,k[m>>2]=G,!t):0){V=1;r=d;return V|0}v=k[o>>2]|0;k[e>>2]=k[a+444>>2];vc(v,152115,152223,e);V=0;r=d;return V|0}else{T=l;U=n}while(0);k[j>>2]=T;k[m>>2]=U;V=1;r=d;return V|0}function ri(a,b){a=a|0;b=b|0;var c=0,d=0;b=me(4)|0;c=a+576|0;k[c>>2]=b;if(!b){d=0;return d|0}if(!(k[a+12>>2]&1024)){b=Pd(a)|0;k[k[c>>2]>>2]=b;d=1;return d|0}else{b=de(a)|0;k[k[c>>2]>>2]=b;d=1;return d|0}return 0}function si(a){a=a|0;var b=0;b=k[a+576>>2]|0;if(!b)return 1;ne(b);return 1}function ti(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;d=a+604|0;e=k[d>>2]|0;f=(k[a+588>>2]|0)+(k[a+592>>2]|0)|0;g=a+608|0;do if((c|0)>0){h=c;j=b;l=0;m=e;n=0;a:while(1){o=i[j>>0]|0;p=h+-1|0;q=j+1|0;b:do if((h|0)>1){r=p;s=q;t=1;while(1){if(o<<24>>24!=(i[s>>0]|0)){u=r;v=s;w=t;break b}x=t+1|0;y=r+-1|0;z=s+1|0;if((r|0)>1){r=y;s=z;t=x}else{u=y;v=z;w=x;break}}}else{u=p;v=q;w=1}while(0);q=l;p=w;t=m;s=n;c:while(1){d:do if((p|0)==1){do if((t+2|0)>>>0>=f>>>0){if((s&-3|0)!=1){k[g>>2]=t-(k[d>>2]|0)+(k[g>>2]|0);if(!(je(a)|0)){A=-1;B=48;break a}C=q;D=k[d>>2]|0;break}r=q;k[g>>2]=r-(k[d>>2]|0)+(k[g>>2]|0);if(!(je(a)|0)){A=-1;B=48;break a}x=t;z=x-r|0;y=k[d>>2]|0;if((z|0)>0){E=r+-1-x|0;F=x+((E|0)>-2?E:-2)-r|0;r=q;E=y;x=z;while(1){i[E>>0]=i[r>>0]|0;if((x|0)>1){r=r+1|0;E=E+1|0;x=x+-1|0}else break}C=k[d>>2]|0;D=y+(F+2)|0}else{C=y;D=y}}else{C=q;D=t}while(0);switch(s|0){case 0:{G=C;H=D;B=16;break d;break}case 1:{I=C;J=D;B=21;break d;break}case 2:{K=C;L=D;B=26;break d;break}case 3:break;default:{M=C;N=D;O=s;break c}}if((i[D+-2>>0]|0)!=-1){q=C;p=1;t=D;s=2;continue c}x=i[C>>0]|0;if((x&255)>=126){q=C;p=1;t=D;s=2;continue c}E=(x&255)+2|0;i[C>>0]=E;i[D+-2>>0]=i[D+-1>>0]|0;q=C;p=1;t=D;s=(E&255|0)!=127&1;continue c}else{E=q;x=t;r=s;while(1){do if((x+2|0)>>>0>=f>>>0){if((r&-3|0)!=1){k[g>>2]=x-(k[d>>2]|0)+(k[g>>2]|0);if(!(je(a)|0)){A=-1;B=48;break a}P=E;Q=k[d>>2]|0;break}z=E;k[g>>2]=z-(k[d>>2]|0)+(k[g>>2]|0);if(!(je(a)|0)){A=-1;B=48;break a}R=x;S=R-z|0;T=k[d>>2]|0;if((S|0)>0){U=z+-1-R|0;V=R+((U|0)>-2?U:-2)-z|0;z=E;U=T;R=S;while(1){i[U>>0]=i[z>>0]|0;if((R|0)>1){z=z+1|0;U=U+1|0;R=R+-1|0}else break}P=k[d>>2]|0;Q=T+(V+2)|0}else{P=T;Q=T}}else{P=E;Q=x}while(0);switch(r|0){case 0:{G=P;H=Q;B=16;break d;break}case 1:{I=P;J=Q;B=21;break d;break}case 2:{K=P;L=Q;B=26;break d;break}case 3:{E=P;x=Q;r=2;break}default:{M=P;N=Q;O=r;break c}}}}while(0);if((B|0)==16){B=0;if((p|0)<=1){W=H;B=20;break}if((p|0)<=128){X=G;Y=p;Z=H;B=19;break}i[H>>0]=-127;i[H+1>>0]=o;q=G;p=p+-128|0;t=H+2|0;s=2;continue}else if((B|0)==21){B=0;if((p|0)<=1){_=I;$=J;B=25;break}if((p|0)<=128){aa=I;ba=p;ca=J;B=24;break}i[J>>0]=-127;i[J+1>>0]=o;q=I;p=p+-128|0;t=J+2|0;s=3;continue}else if((B|0)==26){B=0;if((p|0)<=1){da=L;B=31;break}if((p|0)<=128){ea=K;fa=p;ga=L;B=29;break}i[L>>0]=-127;i[L+1>>0]=o;q=K;p=p+-128|0;t=L+2|0;s=2;continue}}if((B|0)==19){B=0;i[Z>>0]=1-Y;i[Z+1>>0]=o;M=X;N=Z+2|0;O=2}else if((B|0)==20){B=0;i[W>>0]=0;i[W+1>>0]=o;M=W;N=W+2|0;O=1}else if((B|0)==24){B=0;i[ca>>0]=1-ba;i[ca+1>>0]=o;M=aa;N=ca+2|0;O=3}else if((B|0)==25){B=0;s=(i[_>>0]|0)+1<<24>>24;i[_>>0]=s;i[$>>0]=o;M=_;N=$+1|0;O=s<<24>>24!=127&1}else if((B|0)==29){B=0;i[ga>>0]=1-fa;i[ga+1>>0]=o;M=ea;N=ga+2|0;O=2}else if((B|0)==31){B=0;i[da>>0]=0;i[da+1>>0]=o;M=da;N=da+2|0;O=1}if((u|0)>0){h=u;j=v;l=M;m=N;n=O}else{ha=N;B=46;break}}if((B|0)==46){ia=k[d>>2]|0;ja=ha;break}else if((B|0)==48)return A|0}else{ia=e;ja=e}while(0);k[g>>2]=ja-ia+(k[g>>2]|0);k[d>>2]=ja;A=1;return A|0}function ui(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[k[a+576>>2]>>2]|0;if((c|0)>0){f=b;g=c}else{h=1;return h|0}while(1){c=(g|0)<(e|0)?g:e;if((ti(a,f,c,d)|0)<0){h=-1;i=4;break}g=g-c|0;if((g|0)<=0){h=1;i=4;break}else f=f+c|0}if((i|0)==4)return h|0;return 0}function vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0,F=0,G=0;c=r;r=r+16|0;if((b|0)!=32909)Ja(152256,152287,1366,152302);if(!(_b(a,109784,2)|0)){vc(k[a+628>>2]|0,152302,152319,c);d=0;r=c;return d|0}b=me(172)|0;k[a+576>>2]=b;if(!b){vc(k[a+628>>2]|0,152302,152363,c+8|0);d=0;r=c;return d|0}pe(b,0,172);k[b+108>>2]=0;k[b+132>>2]=-1;k[a+504>>2]=35;k[a+508>>2]=36;k[a+512>>2]=38;k[a+532>>2]=44;k[a+540>>2]=44;k[a+548>>2]=44;k[a+516>>2]=37;k[a+524>>2]=39;k[a+528>>2]=38;k[a+536>>2]=45;k[a+544>>2]=45;k[a+552>>2]=45;k[a+556>>2]=27;k[a+564>>2]=28;e=a+672|0;k[b+140>>2]=k[e>>2];k[e>>2]=23;e=a+668|0;k[b+144>>2]=k[e>>2];k[e>>2]=24;k[b+136>>2]=-1;k[b+128>>2]=0;Ii(a)|0;o[27464]=250.0;o[27465]=148.4131622314453;a=me(54600)|0;e=me(32768)|0;f=me(512)|0;g=me(8196)|0;h=me(4098)|0;l=me(2049)|0;m=(a|0)==0;n=(e|0)==0;p=(f|0)==0;q=(g|0)==0;s=(h|0)==0;t=(l|0)==0;if(!(m|n|p|q|s|t)){u=0;do{o[g+(u<<2)>>2]=+(u|0)*7.326255555493672e-05;u=u+1|0}while((u|0)!=250);v=250;do{w=+ea(+(+(v|0)*.004))*.006737946999085467;o[g+(v<<2)>>2]=w;v=v+1|0}while((v|0)!=2048);k[g+8192>>2]=k[g+8188>>2];v=0;do{w=+o[g+(v<<2)>>2];x=w*65535.0+.5;j[h+(v<<1)>>1]=x>65535.0?-1:~~x&65535;x=w*255.0+.5;i[l+v>>0]=x>255.0?-1:~~x&255;v=v+1|0}while((v|0)!=2049);y=0;z=0;do{x=+(y|0)*7.326255555493672e-05;v=z+1|0;z=x*x>+o[g+(z<<2)>>2]*+o[g+(v<<2)>>2]?v:z;j[a+(y<<1)>>1]=z;y=y+1|0}while((y|0)!=27300);A=0;B=0;while(1){x=+(A|0)/16383.0;w=x*x;x=+o[g+(B<<2)>>2];y=B;while(1){z=y+1|0;C=x;x=+o[g+(z<<2)>>2];if(!(w>C*x)){D=y;break}else y=z}j[e+(A<<1)>>1]=D;y=A+1|0;if((y|0)==16384){E=0;F=0;break}else{A=y;B=D}}while(1){x=+(E|0)/255.0;w=x*x;x=+o[g+(F<<2)>>2];D=F;while(1){B=D+1|0;C=x;x=+o[g+(B<<2)>>2];if(!(w>C*x)){G=D;break}else D=B}j[f+(E<<1)>>1]=G;D=E+1|0;if((D|0)==256)break;else{E=D;F=G}}o[27466]=13650.0;k[b+148>>2]=g;k[b+152>>2]=h;k[b+156>>2]=l;k[b+160>>2]=a;k[b+164>>2]=e;k[b+168>>2]=f;d=1;r=c;return d|0}if(!m)ne(a);if(!n)ne(e);if(!p)ne(f);if(!q)ne(g);if(!s)ne(h);if(!t)ne(l);l=b+148|0;k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;k[l+12>>2]=0;k[l+16>>2]=0;k[l+20>>2]=0;d=1;r=c;return d|0}function wi(a){a=a|0;return 1}function xi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0;b=r;r=r+16|0;c=b+8|0;d=b;e=k[a+576>>2]|0;if(!e)Ja(154187,152287,676,152768);k[a+652>>2]=3;if((j[a+126>>1]|0)==1)f=j[a+98>>1]|0;else f=1;j[e+124>>1]=f;g=f&65535;h=ha(k[a+56>>2]|0,g)|0;i=ha(h,k[a+100>>2]|0)|0;if(f<<16>>16==0|(i|0)==0){l=0;r=b;return l|0}f=i+g|0;if((i|0)<1|(f|0)==0){l=0;r=b;return l|0}i=me(f<<1)|0;k[e+120>>2]=i;if(!i){l=0;r=b;return l|0}i=e+132|0;do if((k[i>>2]|0)==-1){f=j[a+86>>1]|0;g=m[a+84>>1]|0;switch(g|0){case 32:{if(f<<16>>16==3){n=5;o=15}break}case 16:{switch(f<<16>>16){case 1:case 4:{n=4;o=15;break}default:{}}break}case 12:{switch(f<<16>>16){case 2:case 4:{n=3;o=15;break}default:{}}break}case 11:{switch(f<<16>>16){case 1:case 4:{n=2;o=15;break}default:{}}break}case 8:{switch(f<<16>>16){case 1:case 4:{n=0;o=15;break}default:{}}break}default:{}}if((o|0)==15){k[i>>2]=n;break}k[i>>2]=-1;f=k[a+628>>2]|0;k[d>>2]=g;vc(f,152768,152788,d);l=0;r=b;return l|0}while(0);if(!(Fj(e+64|0,154315,56)|0)){d=e+128|0;k[d>>2]=k[d>>2]|1;l=1;r=b;return l|0}else{d=k[a+628>>2]|0;k[c>>2]=k[e+88>>2];vc(d,152768,154321,c);l=0;r=b;return l|0}return 0}function yi(a,b){a=a|0;b=b|0;var c=0;b=k[a+576>>2]|0;if(!b)Ja(154187,152287,723,152750);else{c=b+64|0;k[c>>2]=k[a+588>>2];k[b+68>>2]=k[a+608>>2];return (Ej(c)|0)==0|0}return 0}function zi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0.0,ra=0.0,sa=0.0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0.0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0;d=r;r=r+48|0;e=d+40|0;f=d+32|0;g=d+24|0;h=d+16|0;l=d+8|0;n=d;p=k[a+576>>2]|0;q=p+132|0;switch(k[q>>2]|0){case 5:{s=c>>>2;break}case 2:case 3:case 4:{s=c>>>1;break}case 1:case 0:{s=c;break}default:{c=k[a+628>>2]|0;k[n>>2]=m[a+84>>1];vc(c,152640,152446,n);t=0;r=d;return t|0}}n=p+124|0;c=ha(m[n>>1]|0,k[a+56>>2]|0)|0;if(!p)Ja(154187,152287,772,152640);u=p+120|0;v=p+64|0;k[p+76>>2]=k[u>>2];w=p+80|0;k[w>>2]=s<<1;x=a+628|0;y=a+444|0;z=p+88|0;a:do switch(Gj(v,1)|0){case 1:{A=12;break a;break}case -3:{B=k[x>>2]|0;C=k[z>>2]|0;k[l>>2]=k[y>>2];k[l+4>>2]=C;vc(B,152640,154366,l);if(Ij(v)|0){t=0;A=103;break a}break}case 0:break;default:{A=10;break a}}while((k[w>>2]|0)!=0);if((A|0)==10){v=k[x>>2]|0;k[h>>2]=k[z>>2];vc(v,152640,154272,h);t=0;r=d;return t|0}else if((A|0)==12){h=k[w>>2]|0;if(h){w=k[x>>2]|0;k[g>>2]=k[y>>2];k[g+4>>2]=h;vc(w,152640,154401,g);t=0;r=d;return t|0}}else if((A|0)==103){r=d;return t|0}g=k[u>>2]|0;if(k[a+12>>2]&128)Td(g,s);u=(s|0)%(c|0)|0;if(!u)D=s;else{w=k[x>>2]|0;k[f>>2]=c;k[f+4>>2]=s;ie(w,152640,152655,f);D=s-u|0}if((D|0)<=0){t=1;r=d;return t|0}u=p+148|0;s=c<<2;f=(c|0)>3;w=(c|0)>4;h=p+152|0;y=c<<1;v=p+156|0;p=b;b=0;z=g;b:while(1){switch(k[q>>2]|0){case 5:{g=j[n>>1]|0;l=g&65535;B=k[u>>2]|0;c:do if((c|0)>=(l|0))switch(l|0){case 3:{C=(m[z>>1]|0)&2047;E=(m[z+2>>1]|0)&2047;F=k[B+(E<<2)>>2]|0;G=(m[z+4>>1]|0)&2047;H=k[B+(G<<2)>>2]|0;k[p>>2]=k[B+(C<<2)>>2];k[p+4>>2]=F;k[p+8>>2]=H;if(f){I=c;J=z;K=p;L=G;M=E;N=C}else break c;do{I=I+-3|0;C=J;J=J+6|0;E=K;K=K+12|0;N=(m[J>>1]|0)+N|0;M=(m[C+8>>1]|0)+M|0;G=k[B+((M&2047)<<2)>>2]|0;L=(m[C+10>>1]|0)+L|0;C=k[B+((L&2047)<<2)>>2]|0;k[K>>2]=k[B+((N&2047)<<2)>>2];k[E+16>>2]=G;k[E+20>>2]=C}while((I|0)>3);break}case 4:{C=(m[z>>1]|0)&2047;E=(m[z+2>>1]|0)&2047;G=k[B+(E<<2)>>2]|0;H=(m[z+4>>1]|0)&2047;F=k[B+(H<<2)>>2]|0;O=(m[z+6>>1]|0)&2047;P=k[B+(O<<2)>>2]|0;k[p>>2]=k[B+(C<<2)>>2];k[p+4>>2]=G;k[p+8>>2]=F;k[p+12>>2]=P;if(w){Q=c;R=z;S=p;T=O;U=H;V=E;W=C}else break c;do{Q=Q+-4|0;C=R;R=R+8|0;E=S;S=S+16|0;W=(m[R>>1]|0)+W|0;V=(m[C+10>>1]|0)+V|0;H=k[B+((V&2047)<<2)>>2]|0;U=(m[C+12>>1]|0)+U|0;O=k[B+((U&2047)<<2)>>2]|0;T=(m[C+14>>1]|0)+T|0;C=k[B+((T&2047)<<2)>>2]|0;k[S>>2]=k[B+((W&2047)<<2)>>2];k[E+20>>2]=H;k[E+24>>2]=O;k[E+28>>2]=C}while((Q|0)>4);break}default:{C=~l;E=l+2|0;O=z;H=p;P=l;while(1){k[H>>2]=k[B+(((m[O>>1]|0)&2047)<<2)>>2];if((P|0)>1){O=O+2|0;H=H+4|0;P=P+-1|0}else break}P=E+(g<<16>>16==0?C:-2)|0;H=c-l|0;if((H|0)>0){X=H;Y=p;Z=z}else break c;do{Y=Y+(P<<2)|0;Z=Z+(P<<1)|0;H=Z;O=Y;F=l;while(1){G=H+(l<<1)|0;j[G>>1]=(m[G>>1]|0)+(m[H>>1]|0);k[O>>2]=k[B+(((m[H>>1]|0)&2047)<<2)>>2];if((F|0)>1){H=H+2|0;O=O+4|0;F=F+-1|0}else break}X=X-l|0}while((X|0)>0)}}while(0);_=p+s|0;break}case 4:{l=j[n>>1]|0;B=l&65535;g=k[h>>2]|0;d:do if((c|0)>=(B|0))switch(B|0){case 3:{P=(m[z>>1]|0)&2047;j[p>>1]=j[g+(P<<1)>>1]|0;C=(m[z+2>>1]|0)&2047;j[p+2>>1]=j[g+(C<<1)>>1]|0;E=(m[z+4>>1]|0)&2047;j[p+4>>1]=j[g+(E<<1)>>1]|0;if(f){$=c;aa=z;ba=p;ca=E;da=C;ea=P}else break d;do{$=$+-3|0;P=aa;aa=aa+6|0;C=ba;ba=ba+6|0;ea=(m[aa>>1]|0)+ea|0;j[ba>>1]=j[g+((ea&2047)<<1)>>1]|0;da=(m[P+8>>1]|0)+da|0;j[C+8>>1]=j[g+((da&2047)<<1)>>1]|0;ca=(m[P+10>>1]|0)+ca|0;j[C+10>>1]=j[g+((ca&2047)<<1)>>1]|0}while(($|0)>3);break}case 4:{C=(m[z>>1]|0)&2047;j[p>>1]=j[g+(C<<1)>>1]|0;P=(m[z+2>>1]|0)&2047;j[p+2>>1]=j[g+(P<<1)>>1]|0;E=(m[z+4>>1]|0)&2047;j[p+4>>1]=j[g+(E<<1)>>1]|0;F=(m[z+6>>1]|0)&2047;j[p+6>>1]=j[g+(F<<1)>>1]|0;if(w){fa=c;ga=z;ia=p;ja=F;ka=E;la=P;ma=C}else break d;do{fa=fa+-4|0;C=ga;ga=ga+8|0;P=ia;ia=ia+8|0;ma=(m[ga>>1]|0)+ma|0;j[ia>>1]=j[g+((ma&2047)<<1)>>1]|0;la=(m[C+10>>1]|0)+la|0;j[P+10>>1]=j[g+((la&2047)<<1)>>1]|0;ka=(m[C+12>>1]|0)+ka|0;j[P+12>>1]=j[g+((ka&2047)<<1)>>1]|0;ja=(m[C+14>>1]|0)+ja|0;j[P+14>>1]=j[g+((ja&2047)<<1)>>1]|0}while((fa|0)>4);break}default:{P=~B;C=B+2|0;E=z;F=p;O=B;while(1){j[F>>1]=j[g+(((m[E>>1]|0)&2047)<<1)>>1]|0;if((O|0)>1){E=E+2|0;F=F+2|0;O=O+-1|0}else break}O=C+(l<<16>>16==0?P:-2)|0;F=c-B|0;if((F|0)>0){na=F;oa=p;pa=z}else break d;do{oa=oa+(O<<1)|0;pa=pa+(O<<1)|0;F=pa;E=oa;H=B;while(1){G=F+(B<<1)|0;j[G>>1]=(m[G>>1]|0)+(m[F>>1]|0);j[E>>1]=j[g+(((m[F>>1]|0)&2047)<<1)>>1]|0;if((H|0)>1){F=F+2|0;E=E+2|0;H=H+-1|0}else break}na=na-B|0}while((na|0)>0)}}while(0);_=p+y|0;break}case 3:{B=j[n>>1]|0;g=B&65535;l=k[u>>2]|0;e:do if((c|0)>=(g|0))switch(g|0){case 3:{O=(m[z>>1]|0)&2047;qa=+o[l+(O<<2)>>2]*2048.0;P=(m[z+2>>1]|0)&2047;ra=+o[l+(P<<2)>>2]*2048.0;C=(m[z+4>>1]|0)&2047;sa=+o[l+(C<<2)>>2]*2048.0;j[p>>1]=qa<3071.0?~~qa&65535:3071;j[p+2>>1]=ra<3071.0?~~ra&65535:3071;j[p+4>>1]=sa<3071.0?~~sa&65535:3071;if(f){ta=c;ua=z;va=p;wa=C;xa=P;ya=O}else break e;do{ta=ta+-3|0;O=ua;ua=ua+6|0;P=va;va=va+6|0;ya=(m[ua>>1]|0)+ya|0;sa=+o[l+((ya&2047)<<2)>>2]*2048.0;xa=(m[O+8>>1]|0)+xa|0;ra=+o[l+((xa&2047)<<2)>>2]*2048.0;wa=(m[O+10>>1]|0)+wa|0;qa=+o[l+((wa&2047)<<2)>>2]*2048.0;j[va>>1]=sa<3071.0?~~sa&65535:3071;j[P+8>>1]=ra<3071.0?~~ra&65535:3071;j[P+10>>1]=qa<3071.0?~~qa&65535:3071}while((ta|0)>3);break}case 4:{P=(m[z>>1]|0)&2047;qa=+o[l+(P<<2)>>2]*2048.0;O=(m[z+2>>1]|0)&2047;ra=+o[l+(O<<2)>>2]*2048.0;C=(m[z+4>>1]|0)&2047;sa=+o[l+(C<<2)>>2]*2048.0;H=(m[z+6>>1]|0)&2047;za=+o[l+(H<<2)>>2]*2048.0;j[p>>1]=qa<3071.0?~~qa&65535:3071;j[p+2>>1]=ra<3071.0?~~ra&65535:3071;j[p+4>>1]=sa<3071.0?~~sa&65535:3071;j[p+6>>1]=za<3071.0?~~za&65535:3071;if(w){Aa=c;Ba=z;Ca=p;Da=H;Ea=C;Fa=O;Ga=P}else break e;do{Aa=Aa+-4|0;P=Ba;Ba=Ba+8|0;O=Ca;Ca=Ca+8|0;Ga=(m[Ba>>1]|0)+Ga|0;za=+o[l+((Ga&2047)<<2)>>2]*2048.0;Fa=(m[P+10>>1]|0)+Fa|0;sa=+o[l+((Fa&2047)<<2)>>2]*2048.0;Ea=(m[P+12>>1]|0)+Ea|0;ra=+o[l+((Ea&2047)<<2)>>2]*2048.0;Da=(m[P+14>>1]|0)+Da|0;qa=+o[l+((Da&2047)<<2)>>2]*2048.0;j[Ca>>1]=za<3071.0?~~za&65535:3071;j[O+10>>1]=sa<3071.0?~~sa&65535:3071;j[O+12>>1]=ra<3071.0?~~ra&65535:3071;j[O+14>>1]=qa<3071.0?~~qa&65535:3071}while((Aa|0)>4);break}default:{O=~g;P=g+2|0;C=z;H=p;E=g;while(1){qa=+o[l+(((m[C>>1]|0)&2047)<<2)>>2]*2048.0;j[H>>1]=qa<3071.0?~~qa&65535:3071;if((E|0)>1){C=C+2|0;H=H+2|0;E=E+-1|0}else break}E=P+(B<<16>>16==0?O:-2)|0;H=c-g|0;if((H|0)>0){Ha=H;Ia=p;Ka=z}else break e;do{Ia=Ia+(E<<1)|0;Ka=Ka+(E<<1)|0;H=Ka;C=Ia;F=g;while(1){G=H+(g<<1)|0;La=(m[G>>1]|0)+(m[H>>1]|0)|0;j[G>>1]=La;qa=+o[l+((La&2047)<<2)>>2]*2048.0;j[C>>1]=qa<3071.0?~~qa&65535:3071;if((F|0)>1){H=H+2|0;C=C+2|0;F=F+-1|0}else break}Ha=Ha-g|0}while((Ha|0)>0)}}while(0);_=p+y|0;break}case 2:{g=j[n>>1]|0;l=g&65535;f:do if((c|0)>=(l|0))switch(l|0){case 3:{B=j[z>>1]|0;j[p>>1]=B;E=j[z+2>>1]|0;j[p+2>>1]=E;O=j[z+4>>1]|0;j[p+4>>1]=O;if(!f)break f;P=p;F=z;C=c;H=O&65535;O=E&65535;E=B&65535;do{C=C+-3|0;B=F;F=F+6|0;La=P;P=P+6|0;E=(m[F>>1]|0)+E|0;j[P>>1]=E&2047;O=(m[B+8>>1]|0)+O|0;j[La+8>>1]=O&2047;H=(m[B+10>>1]|0)+H|0;j[La+10>>1]=H&2047}while((C|0)>3);break}case 4:{C=j[z>>1]|0;j[p>>1]=C;H=j[z+2>>1]|0;j[p+2>>1]=H;O=j[z+4>>1]|0;j[p+4>>1]=O;E=j[z+6>>1]|0;j[p+6>>1]=E;if(!w)break f;P=p;F=z;La=c;B=E&65535;E=O&65535;O=H&65535;H=C&65535;do{La=La+-4|0;C=F;F=F+8|0;G=P;P=P+8|0;H=(m[F>>1]|0)+H|0;j[P>>1]=H&2047;O=(m[C+10>>1]|0)+O|0;j[G+10>>1]=O&2047;E=(m[C+12>>1]|0)+E|0;j[G+12>>1]=E&2047;B=(m[C+14>>1]|0)+B|0;j[G+14>>1]=B&2047}while((La|0)>4);break}default:{La=~l;B=l+2|0;E=z;O=p;H=l;while(1){j[O>>1]=(m[E>>1]|0)&2047;if((H|0)>1){E=E+2|0;O=O+2|0;H=H+-1|0}else break}H=B+(g<<16>>16==0?La:-2)|0;O=c-l|0;if((O|0)>0){Ma=O;Na=p;Oa=z}else break f;do{Na=Na+(H<<1)|0;Oa=Oa+(H<<1)|0;O=Oa;E=Na;P=l;while(1){F=O+(l<<1)|0;j[F>>1]=(m[F>>1]|0)+(m[O>>1]|0);j[E>>1]=(m[O>>1]|0)&2047;if((P|0)>1){O=O+2|0;E=E+2|0;P=P+-1|0}else break}Ma=Ma-l|0}while((Ma|0)>0)}}while(0);_=p+y|0;break}case 0:{l=j[n>>1]|0;g=l&65535;H=k[v>>2]|0;g:do if((c|0)>=(g|0))switch(g|0){case 3:{La=(m[z>>1]|0)&2047;i[p>>0]=i[H+La>>0]|0;B=(m[z+2>>1]|0)&2047;i[p+1>>0]=i[H+B>>0]|0;P=(m[z+4>>1]|0)&2047;i[p+2>>0]=i[H+P>>0]|0;if(f){Pa=c;Qa=z;Ra=p;Sa=P;Ta=B;Ua=La}else break g;do{Pa=Pa+-3|0;La=Qa;Qa=Qa+6|0;B=Ra;Ra=Ra+3|0;Ua=(m[Qa>>1]|0)+Ua|0;i[Ra>>0]=i[H+(Ua&2047)>>0]|0;Ta=(m[La+8>>1]|0)+Ta|0;i[B+4>>0]=i[H+(Ta&2047)>>0]|0;Sa=(m[La+10>>1]|0)+Sa|0;i[B+5>>0]=i[H+(Sa&2047)>>0]|0}while((Pa|0)>3);break}case 4:{B=(m[z>>1]|0)&2047;i[p>>0]=i[H+B>>0]|0;La=(m[z+2>>1]|0)&2047;i[p+1>>0]=i[H+La>>0]|0;P=(m[z+4>>1]|0)&2047;i[p+2>>0]=i[H+P>>0]|0;E=(m[z+6>>1]|0)&2047;i[p+3>>0]=i[H+E>>0]|0;if(w){Va=c;Wa=z;Xa=p;Ya=E;Za=P;_a=La;$a=B}else break g;do{Va=Va+-4|0;B=Wa;Wa=Wa+8|0;La=Xa;Xa=Xa+4|0;$a=(m[Wa>>1]|0)+$a|0;i[Xa>>0]=i[H+($a&2047)>>0]|0;_a=(m[B+10>>1]|0)+_a|0;i[La+5>>0]=i[H+(_a&2047)>>0]|0;Za=(m[B+12>>1]|0)+Za|0;i[La+6>>0]=i[H+(Za&2047)>>0]|0;Ya=(m[B+14>>1]|0)+Ya|0;i[La+7>>0]=i[H+(Ya&2047)>>0]|0}while((Va|0)>4);break}default:{La=~g;B=g+2|0;P=z;E=p;O=g;while(1){i[E>>0]=i[H+((m[P>>1]|0)&2047)>>0]|0;if((O|0)>1){P=P+2|0;E=E+1|0;O=O+-1|0}else break}O=B+(l<<16>>16==0?La:-2)|0;E=c-g|0;if((E|0)>0){ab=E;bb=p;cb=z}else break g;do{bb=bb+O|0;cb=cb+(O<<1)|0;E=cb;P=bb;F=g;while(1){G=E+(g<<1)|0;j[G>>1]=(m[G>>1]|0)+(m[E>>1]|0);i[P>>0]=i[H+((m[E>>1]|0)&2047)>>0]|0;if((F|0)>1){E=E+2|0;P=P+1|0;F=F+-1|0}else break}ab=ab-g|0}while((ab|0)>0)}}while(0);_=p+c|0;break}case 1:{g=j[n>>1]|0;H=g&65535;l=k[v>>2]|0;h:do if((c|0)>=(H|0))switch(H|0){case 3:{i[p>>0]=0;O=(m[z+4>>1]|0)&2047;La=(m[z+2>>1]|0)&2047;B=i[l+La>>0]|0;F=(m[z>>1]|0)&2047;P=i[l+F>>0]|0;i[p+1>>0]=i[l+O>>0]|0;i[p+2>>0]=B;i[p+3>>0]=P;if(f){db=c;eb=z;fb=p;gb=O;hb=La;ib=F}else break h;do{db=db+-3|0;F=eb;eb=eb+6|0;La=fb;fb=fb+4|0;i[fb>>0]=0;gb=(m[F+10>>1]|0)+gb|0;hb=(m[F+8>>1]|0)+hb|0;F=i[l+(hb&2047)>>0]|0;ib=(m[eb>>1]|0)+ib|0;O=i[l+(ib&2047)>>0]|0;i[La+5>>0]=i[l+(gb&2047)>>0]|0;i[La+6>>0]=F;i[La+7>>0]=O}while((db|0)>3);break}case 4:{O=(m[z+6>>1]|0)&2047;La=(m[z+4>>1]|0)&2047;F=i[l+La>>0]|0;P=(m[z+2>>1]|0)&2047;B=i[l+P>>0]|0;E=(m[z>>1]|0)&2047;G=i[l+E>>0]|0;i[p>>0]=i[l+O>>0]|0;i[p+1>>0]=F;i[p+2>>0]=B;i[p+3>>0]=G;if(w){jb=c;kb=z;lb=p;mb=O;nb=La;ob=P;pb=E}else break h;do{jb=jb+-4|0;E=kb;kb=kb+8|0;P=lb;lb=lb+4|0;mb=(m[E+14>>1]|0)+mb|0;nb=(m[E+12>>1]|0)+nb|0;La=i[l+(nb&2047)>>0]|0;ob=(m[E+10>>1]|0)+ob|0;E=i[l+(ob&2047)>>0]|0;pb=(m[kb>>1]|0)+pb|0;O=i[l+(pb&2047)>>0]|0;i[lb>>0]=i[l+(mb&2047)>>0]|0;i[P+5>>0]=La;i[P+6>>0]=E;i[P+7>>0]=O}while((jb|0)>4);break}default:{O=~H;P=H+2|0;E=z;La=p;G=H;while(1){i[La>>0]=i[l+((m[E>>1]|0)&2047)>>0]|0;if((G|0)>1){E=E+2|0;La=La+1|0;G=G+-1|0}else break}G=P+(g<<16>>16==0?O:-2)|0;La=c-H|0;if((La|0)>0){qb=La;rb=p;sb=z}else break h;do{rb=rb+G|0;sb=sb+(G<<1)|0;La=sb;E=rb;B=H;while(1){F=La+(H<<1)|0;j[F>>1]=(m[F>>1]|0)+(m[La>>1]|0);i[E>>0]=i[l+((m[La>>1]|0)&2047)>>0]|0;if((B|0)>1){La=La+2|0;E=E+1|0;B=B+-1|0}else break}qb=qb-H|0}while((qb|0)>0)}}while(0);_=p+c|0;break}default:break b}b=b+c|0;if((b|0)>=(D|0)){t=1;A=103;break}else{p=_;z=z+(c<<1)|0}}if((A|0)==103){r=d;return t|0}A=k[x>>2]|0;k[e>>2]=m[a+84>>1];vc(A,152640,152722,e);t=0;r=d;return t|0}function Ai(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0;b=r;r=r+16|0;c=b+8|0;d=b;e=k[a+576>>2]|0;if(!e)Ja(154187,152287,880,152562);if((j[a+126>>1]|0)==1)f=j[a+98>>1]|0;else f=1;j[e+124>>1]=f;g=ha(k[a+56>>2]|0,f&65535)|0;f=ha(g,k[a+100>>2]|0)|0;if(!f){h=0;r=b;return h|0}g=me(f<<1)|0;k[e+120>>2]=g;if(!g){h=0;r=b;return h|0}g=e+132|0;do if((k[g>>2]|0)==-1){f=j[a+86>>1]|0;i=m[a+84>>1]|0;switch(i|0){case 32:{if(f<<16>>16==3){l=5;n=14}break}case 16:{switch(f<<16>>16){case 1:case 4:{l=4;n=14;break}default:{}}break}case 12:{switch(f<<16>>16){case 2:case 4:{l=3;n=14;break}default:{}}break}case 11:{switch(f<<16>>16){case 1:case 4:{l=2;n=14;break}default:{}}break}case 8:{switch(f<<16>>16){case 1:case 4:{l=0;n=14;break}default:{}}break}default:{}}if((n|0)==14){k[g>>2]=l;break}k[g>>2]=-1;f=k[a+628>>2]|0;k[d>>2]=i;vc(f,152562,152582,d);h=0;r=b;return h|0}while(0);if(!(tj(e+64|0,k[e+136>>2]|0,154315,56)|0)){d=e+128|0;k[d>>2]=k[d>>2]|1;h=1;r=b;return h|0}else{d=k[a+628>>2]|0;k[c>>2]=k[e+88>>2];vc(d,152562,154321,c);h=0;r=b;return h|0}return 0}function Bi(a,b){a=a|0;b=b|0;b=k[a+576>>2]|0;if(!b)Ja(154187,152287,919,152544);else{k[b+76>>2]=k[a+588>>2];k[b+80>>2]=k[a+592>>2];return (wj(b+64|0)|0)==0|0}return 0}function Ci(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;e=d+64|0;k[d+68>>2]=0;f=d+80|0;g=a+592|0;h=a+608|0;i=a+588|0;j=d+76|0;while(1){l=yj(e,4)|0;if(l>>>0>=2)break;m=k[f>>2]|0;n=k[g>>2]|0;if((n|0)!=(m|0)){k[h>>2]=n-m;je(a)|0;k[j>>2]=k[i>>2];k[f>>2]=k[g>>2]}if((l|0)==1){o=1;p=7;break}}if((p|0)==7){r=b;return o|0}p=k[a+628>>2]|0;k[c>>2]=k[d+88>>2];vc(p,152525,154272,c);o=0;r=b;return o|0}function Di(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0,M=0,N=0.0,O=0,P=0.0,Q=0.0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0.0,_=0,$=0.0,aa=0.0,ba=0.0,ca=0.0,da=0.0,ea=0.0,ga=0,ia=0,ja=0.0,ka=0.0,la=0.0,ma=0.0,na=0.0,oa=0.0,pa=0,qa=0,ra=0.0,sa=0.0,ta=0.0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0;d=r;r=r+32|0;e=d+24|0;f=d+16|0;g=d+8|0;h=d;i=k[a+576>>2]|0;n=k[i+132>>2]|0;switch(n|0){case 5:{p=c>>>2;break}case 2:case 3:case 4:{p=c>>>1;break}case 1:case 0:{p=c;break}default:{c=k[a+628>>2]|0;k[h>>2]=m[a+84>>1];vc(c,152431,152446,h);q=0;r=d;return q|0}}h=i+124|0;c=ha(m[h>>1]|0,k[a+56>>2]|0)|0;s=i+120|0;a:do if((p|0)>0){t=k[s>>2]|0;u=i+160|0;v=c<<2;w=c+-1|0;x=(c|0)>3;y=(c|0)>4;z=i+164|0;A=c<<1;B=i+168|0;C=t;D=b;E=0;F=t;b:while(1){switch(n|0){case 5:{t=j[h>>1]|0;G=t&65535;H=k[u>>2]|0;I=+o[27466];c:do if((c|0)>=(G|0))switch(G|0){case 3:{J=+o[D>>2];do if(!(J<0.0)){if(J<2.0){K=+(m[H+(~~(I*J)<<1)>>1]|0|0);break}if(J>24.200000762939453)K=2047.0;else K=+o[27464]*+fa(+(J*+o[27465]))+.5}else K=0.0;while(0);L=~~K&65535;j[F>>1]=L;M=L&65535;J=+o[D+4>>2];do if(!(J<0.0)){if(J<2.0){N=+(m[H+(~~(I*J)<<1)>>1]|0|0);break}if(J>24.200000762939453)N=2047.0;else N=+o[27464]*+fa(+(J*+o[27465]))+.5}else N=0.0;while(0);L=~~N&65535;j[F+2>>1]=L;O=L&65535;J=+o[D+8>>2];do if(!(J<0.0)){if(J<2.0){P=+(m[H+(~~(I*J)<<1)>>1]|0|0);break}if(J>24.200000762939453)P=2047.0;else P=+o[27464]*+fa(+(J*+o[27465]))+.5}else P=0.0;while(0);L=~~P&65535;j[F+4>>1]=L;if(!x)break c;J=+o[27464];Q=+o[27465];R=c;S=D;T=F;U=L&65535;L=O;V=M;do{R=R+-3|0;W=T;T=T+6|0;X=S;S=S+12|0;Y=+o[S>>2];do if(!(Y<0.0)){if(Y<2.0){Z=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)Z=2047.0;else Z=J*+fa(+(Q*Y))+.5}else Z=0.0;while(0);_=V;V=~~Z;j[T>>1]=V-_&2047;Y=+o[X+16>>2];do if(!(Y<0.0)){if(Y<2.0){$=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)$=2047.0;else $=J*+fa(+(Q*Y))+.5}else $=0.0;while(0);_=L;L=~~$;j[W+8>>1]=L-_&2047;Y=+o[X+20>>2];do if(!(Y<0.0)){if(Y<2.0){aa=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)aa=2047.0;else aa=J*+fa(+(Q*Y))+.5}else aa=0.0;while(0);X=U;U=~~aa;j[W+10>>1]=U-X&2047}while((R|0)>3);break}case 4:{Q=+o[D>>2];do if(!(Q<0.0)){if(Q<2.0){ba=+(m[H+(~~(I*Q)<<1)>>1]|0|0);break}if(Q>24.200000762939453)ba=2047.0;else ba=+o[27464]*+fa(+(Q*+o[27465]))+.5}else ba=0.0;while(0);R=~~ba&65535;j[F>>1]=R;U=R&65535;Q=+o[D+4>>2];do if(!(Q<0.0)){if(Q<2.0){ca=+(m[H+(~~(I*Q)<<1)>>1]|0|0);break}if(Q>24.200000762939453)ca=2047.0;else ca=+o[27464]*+fa(+(Q*+o[27465]))+.5}else ca=0.0;while(0);R=~~ca&65535;j[F+2>>1]=R;L=R&65535;Q=+o[D+8>>2];do if(!(Q<0.0)){if(Q<2.0){da=+(m[H+(~~(I*Q)<<1)>>1]|0|0);break}if(Q>24.200000762939453)da=2047.0;else da=+o[27464]*+fa(+(Q*+o[27465]))+.5}else da=0.0;while(0);R=~~da&65535;j[F+4>>1]=R;V=R&65535;Q=+o[D+12>>2];do if(!(Q<0.0)){if(Q<2.0){ea=+(m[H+(~~(I*Q)<<1)>>1]|0|0);break}if(Q>24.200000762939453)ea=2047.0;else ea=+o[27464]*+fa(+(Q*+o[27465]))+.5}else ea=0.0;while(0);R=~~ea&65535;j[F+6>>1]=R;if(!y)break c;Q=+o[27464];J=+o[27465];T=c;S=D;M=F;O=R&65535;R=V;X=L;_=U;do{T=T+-4|0;ga=M;M=M+8|0;ia=S;S=S+16|0;Y=+o[S>>2];do if(!(Y<0.0)){if(Y<2.0){ja=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)ja=2047.0;else ja=Q*+fa(+(J*Y))+.5}else ja=0.0;while(0);W=_;_=~~ja;j[M>>1]=_-W&2047;Y=+o[ia+20>>2];do if(!(Y<0.0)){if(Y<2.0){ka=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)ka=2047.0;else ka=Q*+fa(+(J*Y))+.5}else ka=0.0;while(0);W=X;X=~~ka;j[ga+10>>1]=X-W&2047;Y=+o[ia+24>>2];do if(!(Y<0.0)){if(Y<2.0){la=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)la=2047.0;else la=Q*+fa(+(J*Y))+.5}else la=0.0;while(0);W=R;R=~~la;j[ga+12>>1]=R-W&2047;Y=+o[ia+28>>2];do if(!(Y<0.0)){if(Y<2.0){ma=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)ma=2047.0;else ma=Q*+fa(+(J*Y))+.5}else ma=0.0;while(0);ia=O;O=~~ma;j[ga+14>>1]=O-ia&2047}while((T|0)>4);break}default:{T=D+(w<<2)|0;O=F+(w<<1)|0;R=c-G|0;J=+o[27464];if((R|0)>0){Q=J;Y=+o[27465];X=-2-G+(t<<16>>16==0?G+1|0:2)|0;_=T;M=R;R=O;while(1){S=_;U=R;L=G;while(1){V=L;L=L+-1|0;na=+o[S>>2];do if(!(na<0.0)){if(na<2.0){oa=+(m[H+(~~(I*na)<<1)>>1]|0|0);break}if(na>24.200000762939453)oa=2047.0;else oa=Q*+fa(+(Y*na))+.5}else oa=0.0;while(0);ia=~~oa&65535;j[U>>1]=ia;W=U+(G<<1)|0;j[W>>1]=(m[W>>1]|0)-(ia&65535)&2047;if((V|0)<=1)break;else{S=S+-4|0;U=U+-2|0}}U=_+(X<<2)|0;S=R+(X<<1)|0;M=M-G|0;if((M|0)<=0){pa=U;qa=S;ra=Q;sa=Y;break}else{_=U;R=S}}}else{pa=T;qa=O;ra=J;sa=+o[27465]}R=pa;_=qa;M=G;while(1){X=M;M=M+-1|0;Y=+o[R>>2];do if(!(Y<0.0)){if(Y<2.0){ta=+(m[H+(~~(I*Y)<<1)>>1]|0|0);break}if(Y>24.200000762939453)ta=2047.0;else ta=ra*+fa(+(sa*Y))+.5}else ta=0.0;while(0);j[_>>1]=~~ta;if((X|0)<=1)break;else{R=R+-4|0;_=_+-2|0}}}}while(0);ua=D+v|0;break}case 4:{H=j[h>>1]|0;G=H&65535;t=k[z>>2]|0;d:do if((c|0)>=(G|0))switch(G|0){case 3:{_=j[t+((m[D>>1]|0)>>>2<<1)>>1]|0;j[F>>1]=_;R=j[t+((m[D+2>>1]|0)>>>2<<1)>>1]|0;j[F+2>>1]=R;M=j[t+((m[D+4>>1]|0)>>>2<<1)>>1]|0;j[F+4>>1]=M;if(!x)break d;O=c;T=D;S=F;U=M&65535;M=R&65535;R=_&65535;do{O=O+-3|0;_=S;S=S+6|0;L=T;T=T+6|0;ga=R;R=m[t+((m[T>>1]|0)>>>2<<1)>>1]|0;j[S>>1]=R-ga&2047;ga=M;M=m[t+((m[L+8>>1]|0)>>>2<<1)>>1]|0;j[_+8>>1]=M-ga&2047;ga=U;U=m[t+((m[L+10>>1]|0)>>>2<<1)>>1]|0;j[_+10>>1]=U-ga&2047}while((O|0)>3);break}case 4:{O=j[t+((m[D>>1]|0)>>>2<<1)>>1]|0;j[F>>1]=O;U=j[t+((m[D+2>>1]|0)>>>2<<1)>>1]|0;j[F+2>>1]=U;M=j[t+((m[D+4>>1]|0)>>>2<<1)>>1]|0;j[F+4>>1]=M;R=j[t+((m[D+6>>1]|0)>>>2<<1)>>1]|0;j[F+6>>1]=R;if(!y)break d;S=c;T=D;ga=F;_=R&65535;R=M&65535;M=U&65535;U=O&65535;do{S=S+-4|0;O=ga;ga=ga+8|0;L=T;T=T+8|0;ia=U;U=m[t+((m[T>>1]|0)>>>2<<1)>>1]|0;j[ga>>1]=U-ia&2047;ia=M;M=m[t+((m[L+10>>1]|0)>>>2<<1)>>1]|0;j[O+10>>1]=M-ia&2047;ia=R;R=m[t+((m[L+12>>1]|0)>>>2<<1)>>1]|0;j[O+12>>1]=R-ia&2047;ia=_;_=m[t+((m[L+14>>1]|0)>>>2<<1)>>1]|0;j[O+14>>1]=_-ia&2047}while((S|0)>4);break}default:{S=D+(w<<1)|0;_=F+(w<<1)|0;R=c-G|0;if((R|0)>0){M=-2-G+(H<<16>>16==0?G+1|0:2)|0;U=S;ga=R;R=_;while(1){T=U;ia=R;O=G;while(1){L=j[t+((m[T>>1]|0)>>>2<<1)>>1]|0;j[ia>>1]=L;W=ia+(G<<1)|0;j[W>>1]=(m[W>>1]|0)-(L&65535)&2047;if((O|0)>1){T=T+-2|0;ia=ia+-2|0;O=O+-1|0}else break}O=U+(M<<1)|0;ia=R+(M<<1)|0;ga=ga-G|0;if((ga|0)<=0){va=O;wa=ia;xa=G;break}else{U=O;R=ia}}}else{va=S;wa=_;xa=G}while(1){j[wa>>1]=j[t+((m[va>>1]|0)>>>2<<1)>>1]|0;if((xa|0)>1){va=va+-2|0;wa=wa+-2|0;xa=xa+-1|0}else break}}}while(0);ua=D+A|0;break}case 0:{t=j[h>>1]|0;G=t&65535;H=k[B>>2]|0;e:do if((c|0)>=(G|0))switch(G|0){case 3:{_=j[H+((l[D>>0]|0)<<1)>>1]|0;j[F>>1]=_;S=j[H+((l[D+1>>0]|0)<<1)>>1]|0;j[F+2>>1]=S;R=j[H+((l[D+2>>0]|0)<<1)>>1]|0;j[F+4>>1]=R;if(!x)break e;U=c;ga=D;M=F;ia=R&65535;R=S&65535;S=_&65535;do{U=U+-3|0;_=ga;ga=ga+3|0;O=S;S=m[H+((l[ga>>0]|0)<<1)>>1]|0;T=M;M=M+6|0;j[M>>1]=S-O&2047;O=R;R=m[H+((l[_+4>>0]|0)<<1)>>1]|0;j[T+8>>1]=R-O&2047;O=ia;ia=m[H+((l[_+5>>0]|0)<<1)>>1]|0;j[T+10>>1]=ia-O&2047}while((U|0)>3);break}case 4:{U=j[H+((l[D>>0]|0)<<1)>>1]|0;j[F>>1]=U;ia=j[H+((l[D+1>>0]|0)<<1)>>1]|0;j[F+2>>1]=ia;R=j[H+((l[D+2>>0]|0)<<1)>>1]|0;j[F+4>>1]=R;S=j[H+((l[D+3>>0]|0)<<1)>>1]|0;j[F+6>>1]=S;if(!y)break e;M=c;ga=D;O=F;T=S&65535;S=R&65535;R=ia&65535;ia=U&65535;do{M=M+-4|0;U=ga;ga=ga+4|0;_=ia;ia=m[H+((l[ga>>0]|0)<<1)>>1]|0;X=O;O=O+8|0;j[O>>1]=ia-_&2047;_=R;R=m[H+((l[U+5>>0]|0)<<1)>>1]|0;j[X+10>>1]=R-_&2047;_=S;S=m[H+((l[U+6>>0]|0)<<1)>>1]|0;j[X+12>>1]=S-_&2047;_=T;T=m[H+((l[U+7>>0]|0)<<1)>>1]|0;j[X+14>>1]=T-_&2047}while((M|0)>4);break}default:{M=w+G|0;T=F+(M<<1)|0;S=D+M|0;M=c-G|0;if((M|0)>0){R=-2-G+(t<<16>>16==0?G+1|0:2)|0;ia=S;O=M;M=T;while(1){ga=ia;_=M;X=G;while(1){U=j[H+((l[ga>>0]|0)<<1)>>1]|0;j[_>>1]=U;L=_+(G<<1)|0;j[L>>1]=(m[L>>1]|0)-(U&65535)&2047;if((X|0)>1){ga=ga+-1|0;_=_+-2|0;X=X+-1|0}else break}X=ia+R|0;_=M+(R<<1)|0;O=O-G|0;if((O|0)<=0){ya=X;za=_;Aa=G;break}else{ia=X;M=_}}}else{ya=S;za=T;Aa=G}while(1){j[za>>1]=j[H+((l[ya>>0]|0)<<1)>>1]|0;if((Aa|0)>1){ya=ya+-1|0;za=za+-2|0;Aa=Aa+-1|0}else break}}}while(0);ua=D+c|0;break}default:break b}E=E+c|0;if((E|0)>=(p|0)){Ba=C;break a}else{D=ua;F=F+(c<<1)|0}}F=k[a+628>>2]|0;k[g>>2]=m[a+84>>1];vc(F,152431,152446,g);q=0;r=d;return q|0}else Ba=k[s>>2]|0;while(0);s=i+64|0;k[s>>2]=Ba;Ba=i+68|0;k[Ba>>2]=p<<1;if((p&2147483647|0)!=(p|0)){vc(k[a+628>>2]|0,152431,152485,f);q=0;r=d;return q|0}f=i+80|0;p=a+592|0;g=a+608|0;c=a+588|0;ua=i+76|0;while(1){if(yj(s,0)|0)break;if(!(k[f>>2]|0)){k[g>>2]=k[p>>2];je(a)|0;k[ua>>2]=k[c>>2];k[f>>2]=k[p>>2]}if(!(k[Ba>>2]|0)){q=1;Ca=146;break}}if((Ca|0)==146){r=d;return q|0}Ca=k[a+628>>2]|0;k[e>>2]=k[i+88>>2];vc(Ca,152431,154240,e);q=0;r=d;return q|0}function Ei(a){a=a|0;j[a+84>>1]=8;j[a+86>>1]=1;return}function Fi(a){a=a|0;var b=0,c=0,d=0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(154168,152287,1247,152415);Ji(a)|0;k[a+672>>2]=k[c+140>>2];k[a+668>>2]=k[c+144>>2];d=k[c+160>>2]|0;if(d)ne(d);d=k[c+164>>2]|0;if(d)ne(d);d=k[c+168>>2]|0;if(d)ne(d);d=k[c+148>>2]|0;if(d)ne(d);d=k[c+152>>2]|0;if(d)ne(d);d=k[c+156>>2]|0;if(d)ne(d);do if(k[c+128>>2]&1){d=c+64|0;if(!(k[a+8>>2]|0)){Hj(d)|0;break}else{vj(d)|0;break}}while(0);d=k[c+120>>2]|0;if(!d){ne(c);k[b>>2]=0;Ve(a);return}ne(d);ne(c);k[b>>2]=0;Ve(a);return}function Gi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;switch(b|0){case 65558:{e=k[d+136>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}case 65549:{e=k[d+132>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}default:{h=nb[k[d+140>>2]&63](a,b,c)|0;return h|0}}return 0}function Hi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+96|0;e=d+80|0;f=d+72|0;g=d+64|0;h=d+56|0;i=d+48|0;j=d+40|0;l=d+32|0;m=d+24|0;n=d+16|0;o=d+8|0;p=d;q=k[a+576>>2]|0;switch(b|0){case 65558:{s=(k[c>>2]|0)+(4-1)&~(4-1);t=k[s>>2]|0;k[c>>2]=s+4;k[q+136>>2]=t;if(!(k[a+8>>2]|0)){u=1;r=d;return u|0}if(!(k[q+128>>2]&1)){u=1;r=d;return u|0}if(!(xj(q+64|0,t,0)|0)){u=1;r=d;return u|0}t=k[a+628>>2]|0;k[p>>2]=k[q+88>>2];vc(t,152397,154272,p);u=0;r=d;return u|0}case 65549:{p=(k[c>>2]|0)+(4-1)&~(4-1);t=k[p>>2]|0;k[c>>2]=p+4;k[q+132>>2]=t;switch(t|0){case 1:case 0:{k[o>>2]=8;Ob(a,258,o)|0;k[n>>2]=1;Ob(a,339,n)|0;break}case 2:{k[m>>2]=16;Ob(a,258,m)|0;k[l>>2]=1;Ob(a,339,l)|0;break}case 3:{k[j>>2]=16;Ob(a,258,j)|0;k[i>>2]=2;Ob(a,339,i)|0;break}case 4:{k[h>>2]=16;Ob(a,258,h)|0;k[g>>2]=1;Ob(a,339,g)|0;break}case 5:{k[f>>2]=32;Ob(a,258,f)|0;k[e>>2]=3;Ob(a,339,e)|0;break}default:{}}if(!(k[a+12>>2]&1024))v=-1;else v=ge(a)|0;k[a+496>>2]=v;v=Pd(a)|0;k[a+580>>2]=v;u=1;r=d;return u|0}default:{u=nb[k[q+144>>2]&63](a,b,c)|0;r=d;return u|0}}return 0}function Ii(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=k[a+576>>2]|0;if(!c)Ja(154168,152869,735,152883);if(!(_b(a,109868,1)|0)){vc(k[a+628>>2]|0,152883,152901,b);d=0;r=b;return d|0}else{e=a+668|0;f=a+672|0;k[c+44>>2]=k[f>>2];k[f>>2]=25;k[c+48>>2]=k[e>>2];k[e>>2]=26;e=a+676|0;k[c+52>>2]=k[e>>2];k[e>>2]=31;e=a+508|0;k[c+56>>2]=k[e>>2];k[e>>2]=39;e=a+516|0;k[c+60>>2]=k[e>>2];k[e>>2]=40;k[c>>2]=1;k[c+24>>2]=0;k[c+40>>2]=0;d=1;r=b;return d|0}return 0}function Ji(a){a=a|0;var b=0;b=k[a+576>>2]|0;if(!b)Ja(154168,152869,776,152946);else{k[a+672>>2]=k[b+44>>2];k[a+668>>2]=k[b+48>>2];k[a+676>>2]=k[b+52>>2];k[a+508>>2]=k[b+56>>2];k[a+516>>2]=k[b+60>>2];return 1}return 0}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if(!d)Ja(154187,152869,698,153724);e=k[d+44>>2]|0;if(!e)Ja(153743,152869,699,153724);if((b|0)==317){f=k[d>>2]&65535;d=(k[c>>2]|0)+(4-1)&~(4-1);g=k[d>>2]|0;k[c>>2]=d+4;j[g>>1]=f;h=1;return h|0}else{h=nb[e&63](a,b,c)|0;return h|0}return 0}function Li(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if(!d)Ja(154187,152869,678,153682);e=k[d+48>>2]|0;if(!e)Ja(153701,152869,679,153682);if((b|0)==317){f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[d>>2]=g&65535;g=a+48|0;k[g>>2]=k[g>>2]|4;g=a+12|0;k[g>>2]=k[g>>2]|8;h=1;return h|0}else{h=nb[e&63](a,b,c)|0;return h|0}return 0}function Mi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+16|0;e=d;f=k[a+576>>2]|0;if(k[a+48>>2]&4){zq(153600,13,1,b)|0;switch(k[f>>2]|0){case 1:{zq(153614,5,1,b)|0;break}case 2:{zq(153620,24,1,b)|0;break}case 3:{zq(153645,25,1,b)|0;break}default:{}}g=k[f>>2]|0;k[e>>2]=g;k[e+4>>2]=g;wq(b,153671,e)|0}e=k[f+52>>2]|0;if(!e){r=d;return}vb[e&127](a,b,c);r=d;return}function Ni(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+576>>2]|0;if(!(ub[k[b+56>>2]&63](a)|0)){c=0;return c|0}if(!(Pi(a)|0)){c=0;return c|0}switch(k[b>>2]|0){case 2:{switch(m[a+84>>1]|0|0){case 8:{k[b+40>>2]=32;break}case 16:{k[b+40>>2]=33;break}case 32:{k[b+40>>2]=34;break}default:{}}d=a+532|0;e=k[d>>2]|0;if((e|0)!=46){k[b+28>>2]=e;k[d>>2]=46;d=a+540|0;k[b+32>>2]=k[d>>2];k[d>>2]=47;d=a+548|0;k[b+36>>2]=k[d>>2];k[d>>2]=47}if(!(k[a+12>>2]&128)){c=1;return c|0}d=b+40|0;e=k[d>>2]|0;if((e|0)==33){k[d>>2]=35;k[a+652>>2]=3;c=1;return c|0}if((e|0)!=34){c=1;return c|0}k[d>>2]=36;k[a+652>>2]=3;c=1;return c|0}case 3:{k[b+40>>2]=37;d=a+532|0;e=k[d>>2]|0;if((e|0)!=46){k[b+28>>2]=e;k[d>>2]=46;d=a+540|0;k[b+32>>2]=k[d>>2];k[d>>2]=47;d=a+548|0;k[b+36>>2]=k[d>>2];k[d>>2]=47}if(!(k[a+12>>2]&128)){c=1;return c|0}k[a+652>>2]=3;c=1;return c|0}default:{c=1;return c|0}}return 0}function Oi(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+576>>2]|0;if(!(ub[k[b+60>>2]&63](a)|0)){c=0;return c|0}if(!(Pi(a)|0)){c=0;return c|0}switch(k[b>>2]|0){case 2:{switch(m[a+84>>1]|0|0){case 8:{k[b+24>>2]=38;break}case 16:{k[b+24>>2]=39;break}case 32:{k[b+24>>2]=40;break}default:{}}d=a+536|0;e=k[d>>2]|0;if((e|0)!=48){k[b+12>>2]=e;k[d>>2]=48;d=a+544|0;k[b+16>>2]=k[d>>2];k[d>>2]=49;d=a+552|0;k[b+20>>2]=k[d>>2];k[d>>2]=49}if(!(k[a+12>>2]&128)){c=1;return c|0}d=b+24|0;e=k[d>>2]|0;if((e|0)==39){k[d>>2]=41;k[a+652>>2]=3;c=1;return c|0}if((e|0)!=40){c=1;return c|0}k[d>>2]=42;k[a+652>>2]=3;c=1;return c|0}case 3:{k[b+24>>2]=43;d=a+536|0;e=k[d>>2]|0;if((e|0)==48){c=1;return c|0}k[b+12>>2]=e;k[d>>2]=48;d=a+544|0;k[b+16>>2]=k[d>>2];k[d>>2]=49;d=a+552|0;k[b+20>>2]=k[d>>2];k[d>>2]=49;c=1;return c|0}default:{c=1;return c|0}}return 0}function Pi(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=b;f=k[a+576>>2]|0;g=k[f>>2]|0;a:do switch(g|0){case 2:{h=j[a+84>>1]|0;switch(h<<16>>16){case 32:case 16:case 8:{break a;break}default:{}}i=k[a+628>>2]|0;k[e>>2]=h&65535;vc(i,153261,153276,e);l=0;r=b;return l|0}case 3:{i=j[a+86>>1]|0;if(i<<16>>16!=3){h=k[a+628>>2]|0;k[d>>2]=i&65535;vc(h,153261,153346,d);l=0;r=b;return l|0}break}case 1:{l=1;r=b;return l|0}default:{h=k[a+628>>2]|0;k[c>>2]=g;vc(h,153261,153407,c);l=0;r=b;return l|0}}while(0);if((j[a+126>>1]|0)==1)n=m[a+98>>1]|0;else n=1;k[f+4>>2]=n;if(!(k[a+12>>2]&1024))o=Pd(a)|0;else o=de(a)|0;k[f+8>>2]=o;l=(o|0)!=0&1;r=b;return l|0}function Qi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=k[(k[a+576>>2]|0)+4>>2]|0;if((c|0)%(d|0)|0)Ja(153237,152869,469,153252);if((d|0)>=(c|0))return;a=c-d|0;switch(d|0){case 3:{c=a;e=l[b+2>>0]|0;f=b;g=l[b+1>>0]|0;h=l[b>>0]|0;while(1){j=f;f=f+3|0;m=h;h=l[f>>0]|0;i[f>>0]=h-m;m=j+4|0;n=g;g=l[m>>0]|0;i[m>>0]=g-n;n=j+5|0;j=e;e=l[n>>0]|0;i[n>>0]=e-j;if((c|0)<=3)break;else c=c+-3|0}return}case 4:{c=a;e=l[b+3>>0]|0;g=l[b+2>>0]|0;h=b;f=l[b+1>>0]|0;j=l[b>>0]|0;while(1){n=h;h=h+4|0;m=j;j=l[h>>0]|0;i[h>>0]=j-m;m=n+5|0;o=f;f=l[m>>0]|0;i[m>>0]=f-o;o=n+6|0;m=g;g=l[o>>0]|0;i[o>>0]=g-m;m=n+7|0;n=e;e=l[m>>0]|0;i[m>>0]=e-n;if((c|0)<=4)break;else c=c+-4|0}return}default:{c=d+-4|0;e=(d|0)>4;g=4-d|0;f=a;j=b+(a+-1)|0;while(1){switch(d|0){case 4:{p=j;q=14;break}case 3:{r=j;q=15;break}case 2:{s=j;q=16;break}case 1:{t=j;q=17;break}case 0:{u=j;break}default:if(e){a=j;b=c;while(1){h=a+d|0;i[h>>0]=(l[h>>0]|0)-(l[a>>0]|0);if((b|0)>1){a=a+-1|0;b=b+-1|0}else break}p=j+g|0;q=14}else{p=j;q=14}}if((q|0)==14){q=0;b=p+d|0;i[b>>0]=(l[b>>0]|0)-(l[p>>0]|0);r=p+-1|0;q=15}if((q|0)==15){q=0;b=r+d|0;i[b>>0]=(l[b>>0]|0)-(l[r>>0]|0);s=r+-1|0;q=16}if((q|0)==16){q=0;b=s+d|0;i[b>>0]=(l[b>>0]|0)-(l[s>>0]|0);t=s+-1|0;q=17}if((q|0)==17){q=0;b=t+d|0;i[b>>0]=(l[b>>0]|0)-(l[t>>0]|0);u=t+-1|0}f=f-d|0;if((f|0)<=0)break;else j=u}return}}}function Ri(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,r=0;d=k[(k[a+576>>2]|0)+4>>2]|0;a=(c|0)/2|0;if((c|0)%(d<<1|0)|0)Ja(153208,152869,517,153227);if((a|0)<=(d|0))return;c=a-d|0;a=d+-4|0;e=(d|0)>4;f=4-d|0;g=c;h=b+(c+-1<<1)|0;while(1){switch(d|0){case 4:{i=h;l=9;break}case 3:{n=h;l=10;break}case 2:{o=h;l=11;break}case 1:{p=h;l=12;break}case 0:{q=h;break}default:if(e){c=a;b=h;while(1){r=b+(d<<1)|0;j[r>>1]=(m[r>>1]|0)-(m[b>>1]|0);if((c|0)>1){c=c+-1|0;b=b+-2|0}else break}i=h+(f<<1)|0;l=9}else{i=h;l=9}}if((l|0)==9){l=0;b=i+(d<<1)|0;j[b>>1]=(m[b>>1]|0)-(m[i>>1]|0);n=i+-2|0;l=10}if((l|0)==10){l=0;b=n+(d<<1)|0;j[b>>1]=(m[b>>1]|0)-(m[n>>1]|0);o=n+-2|0;l=11}if((l|0)==11){l=0;b=o+(d<<1)|0;j[b>>1]=(m[b>>1]|0)-(m[o>>1]|0);p=o+-2|0;l=12}if((l|0)==12){l=0;b=p+(d<<1)|0;j[b>>1]=(m[b>>1]|0)-(m[p>>1]|0);q=p+-2|0}g=g-d|0;if((g|0)<=0)break;else h=q}return}function Si(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=k[(k[a+576>>2]|0)+4>>2]|0;a=(c|0)/4|0;if((c|0)%(d<<2|0)|0)Ja(153179,152869,548,153198);if((a|0)<=(d|0))return;c=a-d|0;a=d+-4|0;e=(d|0)>4;f=4-d|0;g=c;h=b+(c+-1<<2)|0;while(1){switch(d|0){case 4:{i=h;j=9;break}case 3:{l=h;j=10;break}case 2:{m=h;j=11;break}case 1:{n=h;j=12;break}case 0:{o=h;break}default:if(e){c=a;b=h;while(1){p=b+(d<<2)|0;k[p>>2]=(k[p>>2]|0)-(k[b>>2]|0);if((c|0)>1){c=c+-1|0;b=b+-4|0}else break}i=h+(f<<2)|0;j=9}else{i=h;j=9}}if((j|0)==9){j=0;b=i+(d<<2)|0;k[b>>2]=(k[b>>2]|0)-(k[i>>2]|0);l=i+-4|0;j=10}if((j|0)==10){j=0;b=l+(d<<2)|0;k[b>>2]=(k[b>>2]|0)-(k[l>>2]|0);m=l+-4|0;j=11}if((j|0)==11){j=0;b=m+(d<<2)|0;k[b>>2]=(k[b>>2]|0)-(k[m>>2]|0);n=m+-4|0;j=12}if((j|0)==12){j=0;b=n+(d<<2)|0;k[b>>2]=(k[b>>2]|0)-(k[n>>2]|0);o=n+-4|0}g=g-d|0;if((g|0)<=0)break;else h=o}return}function Ti(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=k[a+576>>2]|0;if(!e)Ja(154187,152869,614,153138);f=k[e+24>>2]|0;if(!f)Ja(153015,152869,615,153138);g=e+12|0;if(!(k[g>>2]|0))Ja(153157,152869,616,153138);else{vb[f&127](a,b,c);return xb[k[g>>2]&63](a,b,c,d)|0}return 0}function Ui(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;e=r;r=r+16|0;f=e;g=k[a+576>>2]|0;if(!g)Ja(154187,152869,633,152995);h=g+24|0;if(!(k[h>>2]|0))Ja(153015,152869,634,152995);i=g+20|0;if(!(k[i>>2]|0))Ja(153039,152869,635,152995);j=me(c)|0;if(!j){l=k[a+628>>2]|0;k[f>>2]=c;vc(l,152995,153062,f);m=0;r=e;return m|0}wr(j|0,b|0,c|0)|0;b=k[g+8>>2]|0;if((b|0)<=0)Ja(153109,152869,653,152995);if((c|0)%(b|0)|0)Ja(153121,152869,654,152995);if((c|0)>0){g=j;f=c;while(1){vb[k[h>>2]&127](a,g,b);f=f-b|0;if((f|0)<=0)break;else g=g+b|0}}b=xb[k[i>>2]&63](a,j,c,d)|0;ne(j);m=b;r=e;return m|0}function Vi(a,b,c){a=a|0;b=b|0;c=c|0;Ri(a,b,c);Td(b,(c|0)/2|0);return}function Wi(a,b,c){a=a|0;b=b|0;c=c|0;Si(a,b,c);Vd(b,(c|0)/4|0);return}function Xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;d=k[(k[a+576>>2]|0)+4>>2]|0;e=(m[a+84>>1]|0)>>>3;a=e&65535;f=(c>>>0)/(a>>>0)|0;g=me(c)|0;if((c>>>0)%((ha(a,d)|0)>>>0)|0)Ja(152967,152869,584,152988);if(!g)return;qe(g,b,c);if((f|0)>0){h=e<<16>>16==0;e=a+-1|0;j=0;do{if(!h){n=ha(j,a)|0;o=0;do{p=b+((ha(e-o|0,f)|0)+j)|0;i[p>>0]=i[g+(o+n)>>0]|0;o=o+1|0}while((o|0)!=(a|0))}j=j+1|0}while((j|0)<(f|0))}ne(g);if((d|0)>=(c|0))return;g=d+-4|0;f=(d|0)>4;j=4-d|0;a=c;e=b+(c+-1-d)|0;while(1){switch(d|0){case 4:{q=e;r=16;break}case 3:{s=e;r=17;break}case 2:{t=e;r=18;break}case 1:{u=e;r=19;break}case 0:{v=e;break}default:if(f){c=e;b=g;while(1){h=c+d|0;i[h>>0]=(l[h>>0]|0)-(l[c>>0]|0);if((b|0)>1){c=c+-1|0;b=b+-1|0}else break}q=e+j|0;r=16}else{q=e;r=16}}if((r|0)==16){r=0;b=q+d|0;i[b>>0]=(l[b>>0]|0)-(l[q>>0]|0);s=q+-1|0;r=17}if((r|0)==17){r=0;b=s+d|0;i[b>>0]=(l[b>>0]|0)-(l[s>>0]|0);t=s+-1|0;r=18}if((r|0)==18){r=0;b=t+d|0;i[b>>0]=(l[b>>0]|0)-(l[t>>0]|0);u=t+-1|0;r=19}if((r|0)==19){r=0;b=u+d|0;i[b>>0]=(l[b>>0]|0)-(l[u>>0]|0);v=u+-1|0}a=a-d|0;if((a|0)<=(d|0))break;else e=v}return}function Yi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=k[(k[a+576>>2]|0)+4>>2]|0;if((c|0)%(d|0)|0)Ja(153237,152869,273,153592);if((d|0)>=(c|0))return;switch(d|0){case 3:{if((c|0)<=3)return;a=c;e=l[b+2>>0]|0;f=l[b+1>>0]|0;g=b;h=l[b>>0]|0;do{j=g;g=g+3|0;a=a+-3|0;h=(l[g>>0]|0)+h|0;i[g>>0]=h;m=j+4|0;f=(l[m>>0]|0)+f|0;i[m>>0]=f;m=j+5|0;e=(l[m>>0]|0)+e|0;i[m>>0]=e}while((a|0)>3);return}case 4:{if((c|0)<=4)return;a=c;e=l[b+3>>0]|0;f=l[b+2>>0]|0;h=l[b+1>>0]|0;g=b;m=l[b>>0]|0;do{j=g;g=g+4|0;a=a+-4|0;m=(l[g>>0]|0)+m|0;i[g>>0]=m;n=j+5|0;h=(l[n>>0]|0)+h|0;i[n>>0]=h;n=j+6|0;f=(l[n>>0]|0)+f|0;i[n>>0]=f;n=j+7|0;e=(l[n>>0]|0)+e|0;i[n>>0]=e}while((a|0)>4);return}default:{a=d+-4|0;e=(d|0)>4;f=c-d|0;c=b;while(1){switch(d|0){case 0:{o=c;break}case 3:{p=c;q=17;break}case 2:{r=c;q=18;break}case 1:{s=c;q=19;break}default:{if(e){b=c;h=a;while(1){m=b+d|0;i[m>>0]=(l[b>>0]|0)+(l[m>>0]|0);if((h|0)>1){b=b+1|0;h=h+-1|0}else break}t=c+a|0}else t=c;h=t+d|0;i[h>>0]=(l[t>>0]|0)+(l[h>>0]|0);p=t+1|0;q=17}}if((q|0)==17){q=0;h=p+d|0;i[h>>0]=(l[p>>0]|0)+(l[h>>0]|0);r=p+1|0;q=18}if((q|0)==18){q=0;h=r+d|0;i[h>>0]=(l[r>>0]|0)+(l[h>>0]|0);s=r+1|0;q=19}if((q|0)==19){q=0;h=s+d|0;i[h>>0]=(l[s>>0]|0)+(l[h>>0]|0);o=s+1|0}f=f-d|0;if((f|0)<=0)break;else c=o}return}}}function Zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0;d=k[(k[a+576>>2]|0)+4>>2]|0;a=(c|0)/2|0;if((c|0)%(d<<1|0)|0)Ja(153208,152869,334,153583);if((a|0)<=(d|0))return;c=d+-4|0;e=(d|0)>4;f=a-d|0;a=b;while(1){switch(d|0){case 4:{g=a;h=9;break}case 3:{i=a;h=10;break}case 2:{l=a;h=11;break}case 1:{n=a;h=12;break}case 0:{o=a;break}default:if(e){b=c;p=a;while(1){q=p+(d<<1)|0;j[q>>1]=(m[p>>1]|0)+(m[q>>1]|0);if((b|0)>1){b=b+-1|0;p=p+2|0}else break}g=a+(c<<1)|0;h=9}else{g=a;h=9}}if((h|0)==9){h=0;p=g+(d<<1)|0;j[p>>1]=(m[g>>1]|0)+(m[p>>1]|0);i=g+2|0;h=10}if((h|0)==10){h=0;p=i+(d<<1)|0;j[p>>1]=(m[i>>1]|0)+(m[p>>1]|0);l=i+2|0;h=11}if((h|0)==11){h=0;p=l+(d<<1)|0;j[p>>1]=(m[l>>1]|0)+(m[p>>1]|0);n=l+2|0;h=12}if((h|0)==12){h=0;p=n+(d<<1)|0;j[p>>1]=(m[n>>1]|0)+(m[p>>1]|0);o=n+2|0}f=f-d|0;if((f|0)<=0)break;else a=o}return}function _i(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k[(k[a+576>>2]|0)+4>>2]|0;a=(c|0)/4|0;if((c|0)%(d<<2|0)|0)Ja(153179,152869,362,153574);if((a|0)<=(d|0))return;c=a-d|0;a=d+-4|0;e=(d|0)>4;if((d|0)==4){f=c;g=b;while(1){h=g+16|0;k[h>>2]=(k[h>>2]|0)+(k[g>>2]|0);h=g+20|0;k[h>>2]=(k[h>>2]|0)+(k[g+4>>2]|0);h=g+24|0;k[h>>2]=(k[h>>2]|0)+(k[g+8>>2]|0);h=g+28|0;k[h>>2]=(k[h>>2]|0)+(k[g+12>>2]|0);if((f|0)>4){f=f+-4|0;g=g+16|0}else break}return}else{i=c;j=b}while(1){switch(d|0){case 0:{l=j;break}case 3:{m=j;n=11;break}case 2:{o=j;n=12;break}case 1:{p=j;n=13;break}default:{if(e){b=a;c=j;while(1){g=c+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[c>>2]|0);if((b|0)>1){b=b+-1|0;c=c+4|0}else break}q=j+(a<<2)|0}else q=j;c=q+(d<<2)|0;k[c>>2]=(k[c>>2]|0)+(k[q>>2]|0);m=q+4|0;n=11}}if((n|0)==11){n=0;c=m+(d<<2)|0;k[c>>2]=(k[c>>2]|0)+(k[m>>2]|0);o=m+4|0;n=12}if((n|0)==12){n=0;c=o+(d<<2)|0;k[c>>2]=(k[c>>2]|0)+(k[o>>2]|0);p=o+4|0;n=13}if((n|0)==13){n=0;c=p+(d<<2)|0;k[c>>2]=(k[c>>2]|0)+(k[p>>2]|0);l=p+4|0}i=i-d|0;if((i|0)<=0)break;else j=l}return}function $i(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=k[a+576>>2]|0;if(!e)Ja(154187,152869,421,153533);f=k[e+28>>2]|0;if(!f)Ja(153552,152869,422,153533);g=e+40|0;if(!(k[g>>2]|0))Ja(153509,152869,423,153533);if(!(xb[f&63](a,b,c,d)|0)){h=0;return h|0}vb[k[g>>2]&127](a,b,c);h=1;return h|0}function aj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[a+576>>2]|0;if(!e)Ja(154187,152869,444,153448);f=k[e+36>>2]|0;if(!f)Ja(153468,152869,445,153448);if(!(xb[f&63](a,b,c,d)|0)){g=0;return g|0}d=k[e+8>>2]|0;if((d|0)<=0)Ja(153109,152869,449,153448);if((c|0)%(d|0)|0)Ja(153491,152869,450,153448);f=e+40|0;e=k[f>>2]|0;if(!e)Ja(153509,152869,451,153448);if((c|0)<=0){g=1;return g|0}vb[e&127](a,b,d);e=c-d|0;if((e|0)>0){h=b;i=e}else{g=1;return g|0}do{h=h+d|0;vb[k[f>>2]&127](a,h,d);i=i-d|0}while((i|0)>0);g=1;return g|0}function bj(a,b,c){a=a|0;b=b|0;c=c|0;Td(b,(c|0)/2|0);Zi(a,b,c);return}function cj(a,b,c){a=a|0;b=b|0;c=c|0;Vd(b,(c|0)/4|0);_i(a,b,c);return}function dj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;d=k[(k[a+576>>2]|0)+4>>2]|0;e=(m[a+84>>1]|0)>>>3;a=e&65535;f=(c>>>0)/(a>>>0)|0;g=me(c)|0;if((c>>>0)%((ha(a,d)|0)>>>0)|0)Ja(152967,152869,386,153442);if(!g)return;a:do if((d|0)<(c|0)){h=d+-4|0;j=(d|0)>4;n=c;o=b;while(1){switch(d|0){case 4:{p=o;q=10;break}case 3:{r=o;q=11;break}case 2:{s=o;q=12;break}case 1:{t=o;q=13;break}case 0:{u=o;break}default:if(j){v=o;w=h;while(1){x=v+d|0;i[x>>0]=(l[v>>0]|0)+(l[x>>0]|0);if((w|0)>1){v=v+1|0;w=w+-1|0}else break}p=o+h|0;q=10}else{p=o;q=10}}if((q|0)==10){q=0;w=p+d|0;i[w>>0]=(l[p>>0]|0)+(l[w>>0]|0);r=p+1|0;q=11}if((q|0)==11){q=0;w=r+d|0;i[w>>0]=(l[r>>0]|0)+(l[w>>0]|0);s=r+1|0;q=12}if((q|0)==12){q=0;w=s+d|0;i[w>>0]=(l[s>>0]|0)+(l[w>>0]|0);t=s+1|0;q=13}if((q|0)==13){q=0;w=t+d|0;i[w>>0]=(l[t>>0]|0)+(l[w>>0]|0);u=t+1|0}n=n-d|0;if((n|0)<=(d|0))break a;else o=u}}while(0);qe(g,b,c);if((f|0)>0){c=e<<16>>16==0;e=a+-1|0;u=0;do{if(!c){d=ha(u,a)|0;t=0;do{q=g+((ha(e-t|0,f)|0)+u)|0;i[b+(t+d)>>0]=i[q>>0]|0;t=t+1|0}while((t|0)!=(a|0))}u=u+1|0}while((u|0)<(f|0))}ne(g);return}function ej(a,b){a=a|0;b=b|0;k[a+508>>2]=41;k[a+532>>2]=50;k[a+540>>2]=50;return 1}function fj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=r;r=r+16|0;c=b;d=j[a+84>>1]|0;if(d<<16>>16==4){e=1;r=b;return e|0}f=k[a+628>>2]|0;k[c>>2]=d&65535;vc(f,153902,153921,c);e=0;r=b;return e|0}function gj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0;d=r;r=r+32|0;e=d+8|0;f=a+580|0;if((c|0)%(k[f>>2]|0)|0){vc(k[a+628>>2]|0,153776,153793,d);g=0;r=d;return g|0}if((c|0)<=0){g=1;r=d;return g|0}h=a+56|0;j=a+604|0;m=a+608|0;n=c;c=k[m>>2]|0;o=k[j>>2]|0;p=b;while(1){b=k[h>>2]|0;q=(b|0)>0;a:do if(q&(c|0)>0){s=p;t=o;u=c;v=0;w=0;while(1){x=t+1|0;y=l[t>>0]|0;z=u+-1|0;b:do switch(y&192|0){case 0:{if(!(w&1)){A=s;B=v<<4|v;C=y;D=w}else{E=l[s>>0]|0|v;i[s>>0]=E;A=s+1|0;B=E&255;C=y+-1|0;D=w+1|0}E=C+D|0;if((C|0)>0&(E|0)<(b|0)){F=(C+2+((C|0)<2?~C:-3)|0)>>>1;G=F+1|0;qr(A|0,B&255|0,G|0)|0;H=A+G|0;I=C+-2-(F<<1)|0}else{H=A;I=C}if((I|0)==-1){F=H+-1|0;i[F>>0]=(l[F>>0]|0)&240;J=F}else J=H;K=J;L=B&15;M=E;break}case 64:{E=y>>>4&3;do if((E|0)!=2){F=(k[109904+(E<<2)>>2]|0)+v&15;G=w+1|0;if(!(w&1)){i[s>>0]=F<<4;N=s;O=F;P=G;break}else{i[s>>0]=l[s>>0]|0|F;N=s+1|0;O=F;P=G;break}}else{N=s;O=v;P=w}while(0);E=y>>>2&3;do if((E|0)!=2){G=(k[109904+(E<<2)>>2]|0)+O&15;if((P|0)<(b|0)){F=P+1|0;if(!(P&1)){i[N>>0]=G<<4;Q=N;R=G;S=F;break}else{i[N>>0]=l[N>>0]|0|G;Q=N+1|0;R=G;S=F;break}}else{Q=N;R=G;S=P}}else{Q=N;R=O;S=P}while(0);E=y&3;if((E|0)!=2){G=(k[109904+(E<<2)>>2]|0)+R&15;if((S|0)<(b|0)){E=S+1|0;if(!(S&1)){i[Q>>0]=G<<4;K=Q;L=G;M=E;break b}else{i[Q>>0]=l[Q>>0]|0|G;K=Q+1|0;L=G;M=E;break b}}else{K=Q;L=G;M=S}}else{K=Q;L=R;M=S}break}case 128:{G=y>>>3&7;do if((G|0)!=4){E=(k[109920+(G<<2)>>2]|0)+v&15;F=w+1|0;if(!(w&1)){i[s>>0]=E<<4;T=s;U=E;V=F;break}else{i[s>>0]=l[s>>0]|0|E;T=s+1|0;U=E;V=F;break}}else{T=s;U=v;V=w}while(0);G=y&7;if((G|0)!=4){F=(k[109920+(G<<2)>>2]|0)+U&15;if((V|0)<(b|0)){G=V+1|0;if(!(V&1)){i[T>>0]=F<<4;K=T;L=F;M=G;break b}else{i[T>>0]=l[T>>0]|0|F;K=T+1|0;L=F;M=G;break b}}else{K=T;L=F;M=V}}else{K=T;L=U;M=V}break}case 192:{F=y&15;G=w+1|0;if(!(w&1)){i[s>>0]=y<<4;K=s;L=F;M=G;break b}else{i[s>>0]=l[s>>0]|0|F;K=s+1|0;L=F;M=G;break b}break}default:{K=s;L=v;M=w}}while(0);y=(M|0)<(b|0);if((u|0)>1&y){s=K;t=x;u=z;v=L;w=M}else{W=y;X=x;Y=z;Z=M;break a}}}else{W=q;X=o;Y=c;Z=0}while(0);k[j>>2]=X;k[m>>2]=Y;if((Z|0)!=(b|0)){_=b;$=W;aa=Z;break}q=k[f>>2]|0;n=n-q|0;if((n|0)<=0){g=1;ba=45;break}else{c=Y;o=X;p=p+q|0}}if((ba|0)==45){r=d;return g|0}ba=k[a+628>>2]|0;p=k[a+444>>2]|0;k[e>>2]=$?153829:153840;k[e+4>>2]=p;p=e+8|0;k[p>>2]=aa;k[p+4>>2]=((aa|0)<0)<<31>>31;aa=e+16|0;k[aa>>2]=_;k[aa+4>>2]=((_|0)<0)<<31>>31;vc(ba,153849,153863,e);g=0;r=d;return g|0}function hj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=r;r=r+16|0;d=c+8|0;e=c;a:do if((b|0)<32946){switch(b|0){case 8:{break a;break}default:{}}Ja(154001,154074,402,154084)}else{switch(b|0){case 32946:{break a;break}default:{}}Ja(154001,154074,402,154084)}while(0);if(!(_b(a,109952,1)|0)){vc(k[a+628>>2]|0,154084,154096,e);f=0;r=c;return f|0}e=me(136)|0;k[a+576>>2]=e;if(!e){vc(k[a+628>>2]|0,154084,154139,d);f=0;r=c;return f|0}else{d=e+96|0;b=a+672|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[e+128>>2]=k[b>>2];k[b>>2]=27;b=a+668|0;k[e+132>>2]=k[b>>2];k[b>>2]=28;k[e+120>>2]=-1;k[e+124>>2]=0;k[a+504>>2]=42;k[a+508>>2]=43;k[a+512>>2]=40;k[a+532>>2]=51;k[a+540>>2]=51;k[a+548>>2]=51;k[a+516>>2]=44;k[a+524>>2]=41;k[a+528>>2]=45;k[a+536>>2]=52;k[a+544>>2]=52;k[a+552>>2]=52;k[a+564>>2]=29;Ii(a)|0;f=1;r=c;return f|0}return 0}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if((b|0)==65557){e=k[d+120>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}else{h=nb[k[d+128>>2]&63](a,b,c)|0;return h|0}return 0}function jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;e=d;f=k[a+576>>2]|0;if((b|0)!=65557){g=nb[k[f+132>>2]&63](a,b,c)|0;r=d;return g|0}b=(k[c>>2]|0)+(4-1)&~(4-1);h=k[b>>2]|0;k[c>>2]=b+4;k[f+120>>2]=h;if(!(k[f+124>>2]&2)){g=1;r=d;return g|0}if(!(xj(f+64|0,h,0)|0)){g=1;r=d;return g|0}h=k[a+628>>2]|0;a=k[f+88>>2]|0;k[e>>2]=(a|0)==0?155687:a;vc(h,154479,154272,e);g=0;r=d;return g|0}function kj(a){a=a|0;return 1}function lj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;if(!d)Ja(154187,154074,102,154464);e=d+124|0;f=d+64|0;if(k[e>>2]&2){vj(f)|0;k[e>>2]=0}if(!(Fj(f,154315,56)|0)){k[e>>2]=k[e>>2]|1;g=1;r=b;return g|0}else{e=k[a+628>>2]|0;a=k[d+88>>2]|0;k[c>>2]=(a|0)==0?155687:a;vc(e,154464,154321,c);g=0;r=b;return g|0}return 0}function mj(a,b){a=a|0;b=b|0;var c=0;b=k[a+576>>2]|0;if(!b)Ja(154187,154074,129,154451);if(!(k[b+124>>2]&1))ub[k[a+508>>2]&63](a)|0;c=b+64|0;k[c>>2]=k[a+588>>2];k[b+68>>2]=k[a+608>>2];return (Ej(c)|0)==0|0}function nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=r;r=r+32|0;e=d+16|0;f=d+8|0;g=d;h=k[a+576>>2]|0;if(!h)Ja(154187,154074,155,154324);if((k[h+124>>2]|0)!=1)Ja(154334,154074,156,154324);i=a+604|0;j=h+64|0;k[j>>2]=k[i>>2];l=a+608|0;m=h+68|0;k[m>>2]=k[l>>2];k[h+76>>2]=b;b=h+80|0;k[b>>2]=c;c=a+628|0;n=a+444|0;a=h+88|0;a:do switch(Gj(j,1)|0){case 1:{o=10;break a;break}case -3:{h=k[c>>2]|0;p=k[a>>2]|0;k[g>>2]=k[n>>2];k[g+4>>2]=(p|0)==0?155687:p;vc(h,154324,154366,g);if(Ij(j)|0){q=0;o=13;break a}break}case 0:break;default:{o=8;break a}}while((k[b>>2]|0)!=0);if((o|0)==8){g=k[c>>2]|0;h=k[a>>2]|0;k[f>>2]=(h|0)==0?155687:h;vc(g,154324,154272,f);q=0;r=d;return q|0}else if((o|0)==10){f=k[b>>2]|0;if(f){b=k[c>>2]|0;k[e>>2]=k[n>>2];k[e+4>>2]=f;vc(b,154324,154401,e);q=0;r=d;return q|0}}else if((o|0)==13){r=d;return q|0}k[i>>2]=k[j>>2];k[l>>2]=k[m>>2];q=1;r=d;return q|0}function oj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;if(!d)Ja(154187,154074,209,154300);e=d+124|0;f=d+64|0;if(k[e>>2]&1){Hj(f)|0;k[e>>2]=0}if(!(tj(f,k[d+120>>2]|0,154315,56)|0)){k[e>>2]=k[e>>2]|2;g=1;r=b;return g|0}else{e=k[a+628>>2]|0;a=k[d+88>>2]|0;k[c>>2]=(a|0)==0?155687:a;vc(e,154300,154321,c);g=0;r=b;return g|0}return 0}function pj(a,b){a=a|0;b=b|0;b=k[a+576>>2]|0;if(!b)Ja(154187,154074,234,154287);if((k[b+124>>2]|0)!=2)ub[k[a+516>>2]&63](a)|0;k[b+76>>2]=k[a+588>>2];k[b+80>>2]=k[a+592>>2];return (wj(b+64|0)|0)==0|0}function qj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;b=r;r=r+16|0;c=b;d=k[a+576>>2]|0;e=d+64|0;k[d+68>>2]=0;f=d+80|0;g=a+592|0;h=a+608|0;i=a+588|0;j=d+76|0;while(1){l=yj(e,4)|0;if(l>>>0>=2)break;m=k[f>>2]|0;n=k[g>>2]|0;if((n|0)!=(m|0)){k[h>>2]=n-m;je(a)|0;k[j>>2]=k[i>>2];k[f>>2]=k[g>>2]}if((l|0)==1){o=1;p=7;break}}if((p|0)==7){r=b;return o|0}p=k[a+628>>2]|0;a=k[d+88>>2]|0;k[c>>2]=(a|0)==0?155687:a;vc(p,154258,154272,c);o=0;r=b;return o|0}function rj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;d=r;r=r+16|0;e=d;f=k[a+576>>2]|0;if(!f)Ja(154187,154074,261,154198);if((k[f+124>>2]|0)!=2)Ja(154208,154074,262,154198);g=f+64|0;k[g>>2]=b;b=f+68|0;k[b>>2]=c;c=f+80|0;h=a+592|0;i=a+608|0;j=a+588|0;l=f+76|0;while(1){if(yj(g,0)|0)break;if(!(k[c>>2]|0)){k[i>>2]=k[h>>2];je(a)|0;k[l>>2]=k[j>>2];k[c>>2]=k[h>>2]}if(!(k[b>>2]|0)){m=1;n=11;break}}if((n|0)==11){r=d;return m|0}n=k[a+628>>2]|0;a=k[f+88>>2]|0;k[e>>2]=(a|0)==0?155687:a;vc(n,154198,154240,e);m=0;r=d;return m|0}function sj(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(154168,154074,332,154176);Ji(a)|0;k[a+672>>2]=k[c+128>>2];k[a+668>>2]=k[c+132>>2];d=c+124|0;e=k[d>>2]|0;if(!(e&2)){if(e&1){Hj(c+64|0)|0;k[d>>2]=0}}else{vj(c+64|0)|0;k[d>>2]=0}ne(c);k[b>>2]=0;Ve(a);return}function tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return uj(a,b,8,15,8,0,c,d)|0}function uj(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;if(!g){j=-6;return j|0}if((h|0)!=56|(i[g>>0]|0)!=49){j=-6;return j|0}if(!a){j=-2;return j|0}g=a+24|0;k[g>>2]=0;h=a+32|0;l=k[h>>2]|0;if(!l){k[h>>2]=29;k[a+40>>2]=0;m=29}else m=l;l=a+36|0;if(!(k[l>>2]|0))k[l>>2]=6;n=(b|0)==-1?6:b;if((d|0)<0){o=0-d|0;p=0}else{b=(d|0)>15;o=b?d+-16|0:d;p=b?2:1}if(f>>>0>4|(n>>>0>9|((c|0)!=8|(e+-1|0)>>>0>8|(o&-8|0)!=8))){j=-2;return j|0}c=(o|0)==8?9:o;o=a+40|0;b=nb[m&63](k[o>>2]|0,1,5828)|0;if(!b){j=-4;return j|0}m=a+28|0;k[m>>2]=b;k[b>>2]=a;k[b+24>>2]=p;k[b+28>>2]=0;k[b+48>>2]=c;p=1<<c;c=b+44|0;k[c>>2]=p;k[b+52>>2]=p+-1;d=e+7|0;k[b+80>>2]=d;q=1<<d;d=b+76|0;k[d>>2]=q;k[b+84>>2]=q+-1;k[b+88>>2]=((e+9|0)>>>0)/3|0;q=nb[k[h>>2]&63](k[o>>2]|0,p,2)|0;p=b+56|0;k[p>>2]=q;q=nb[k[h>>2]&63](k[o>>2]|0,k[c>>2]|0,2)|0;c=b+64|0;k[c>>2]=q;q=nb[k[h>>2]&63](k[o>>2]|0,k[d>>2]|0,2)|0;d=b+68|0;k[d>>2]=q;k[b+5824>>2]=0;q=1<<e+6;e=b+5788|0;k[e>>2]=q;r=nb[k[h>>2]&63](k[o>>2]|0,q,4)|0;k[b+8>>2]=r;q=k[e>>2]|0;k[b+12>>2]=q<<2;if(((k[p>>2]|0)!=0?(k[c>>2]|0)!=0:0)?!((k[d>>2]|0)==0|(r|0)==0):0){k[b+5796>>2]=r+(q>>>1<<1);k[b+5784>>2]=r+(q*3|0);k[b+132>>2]=n;k[b+136>>2]=f;i[b+36>>0]=8;j=wj(a)|0;return j|0}k[b+4>>2]=666;k[g>>2]=k[27685];g=k[m>>2]|0;if(!g){j=-4;return j|0}switch(k[g+4>>2]|0){case 42:case 69:case 73:case 91:case 103:case 113:case 666:break;default:{j=-4;return j|0}}b=k[g+8>>2]|0;if(!b)s=g;else{rb[k[l>>2]&31](k[o>>2]|0,b);s=k[m>>2]|0}b=k[s+68>>2]|0;if(!b)t=s;else{rb[k[l>>2]&31](k[o>>2]|0,b);t=k[m>>2]|0}b=k[t+64>>2]|0;if(!b)u=t;else{rb[k[l>>2]&31](k[o>>2]|0,b);u=k[m>>2]|0}b=k[u+56>>2]|0;if(!b)v=u;else{rb[k[l>>2]&31](k[o>>2]|0,b);v=k[m>>2]|0}rb[k[l>>2]&31](k[o>>2]|0,v);k[m>>2]=0;j=-4;return j|0}function vj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;if(!a){b=-2;return b|0}c=a+28|0;d=k[c>>2]|0;if(!d){b=-2;return b|0}e=k[d+4>>2]|0;switch(e|0){case 42:case 69:case 73:case 91:case 103:case 113:case 666:break;default:{b=-2;return b|0}}f=k[d+8>>2]|0;if(!f)g=d;else{rb[k[a+36>>2]&31](k[a+40>>2]|0,f);g=k[c>>2]|0}f=k[g+68>>2]|0;if(!f)h=g;else{rb[k[a+36>>2]&31](k[a+40>>2]|0,f);h=k[c>>2]|0}f=k[h+64>>2]|0;if(!f)i=h;else{rb[k[a+36>>2]&31](k[a+40>>2]|0,f);i=k[c>>2]|0}f=k[i+56>>2]|0;if(!f){j=a+40|0;l=a+36|0;m=i}else{i=a+36|0;h=a+40|0;rb[k[i>>2]&31](k[h>>2]|0,f);j=h;l=i;m=k[c>>2]|0}rb[k[l>>2]&31](k[j>>2]|0,m);k[c>>2]=0;b=(e|0)==113?-3:0;return b|0}function wj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;if(!a){b=-2;return b|0}c=a+28|0;d=k[c>>2]|0;if(!d){b=-2;return b|0}if(!(k[a+32>>2]|0)){b=-2;return b|0}if(!(k[a+36>>2]|0)){b=-2;return b|0}k[a+20>>2]=0;k[a+8>>2]=0;k[a+24>>2]=0;k[a+44>>2]=2;k[d+20>>2]=0;k[d+16>>2]=k[d+8>>2];e=d+24|0;f=k[e>>2]|0;if((f|0)<0){g=0-f|0;k[e>>2]=g;h=g}else h=f;k[d+4>>2]=(h|0)!=0?42:113;if((h|0)==2)i=Xj(0,0,0)|0;else i=Wj(0,0,0)|0;k[a+48>>2]=i;k[d+40>>2]=0;Lj(d);d=k[c>>2]|0;k[d+60>>2]=k[d+44>>2]<<1;c=k[d+76>>2]|0;i=k[d+68>>2]|0;j[i+(c+-1<<1)>>1]=0;qr(i|0,0,(c<<1)+-2|0)|0;c=k[d+132>>2]|0;k[d+128>>2]=m[109988+(c*12|0)+2>>1];k[d+140>>2]=m[109988+(c*12|0)>>1];k[d+144>>2]=m[109988+(c*12|0)+4>>1];k[d+124>>2]=m[109988+(c*12|0)+6>>1];k[d+108>>2]=0;k[d+92>>2]=0;k[d+116>>2]=0;k[d+5812>>2]=0;k[d+120>>2]=2;k[d+96>>2]=2;k[d+104>>2]=0;k[d+72>>2]=0;b=0;return b|0}function xj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;if(!a){d=-2;return d|0}e=k[a+28>>2]|0;if(!e){d=-2;return d|0}f=(b|0)==-1?6:b;if(c>>>0>4|f>>>0>9){d=-2;return d|0}b=e+132|0;g=e+136|0;if((k[g>>2]|0)==(c|0)?(k[109988+((k[b>>2]|0)*12|0)+8>>2]|0)==(k[109988+(f*12|0)+8>>2]|0):0)h=0;else if(k[a+8>>2]|0){i=yj(a,5)|0;if((i|0)==-5)h=(k[e+20>>2]|0)==0?0:-5;else h=i}else h=0;if((k[b>>2]|0)!=(f|0)){k[b>>2]=f;k[e+128>>2]=m[109988+(f*12|0)+2>>1];k[e+140>>2]=m[109988+(f*12|0)>>1];k[e+144>>2]=m[109988+(f*12|0)+4>>1];k[e+124>>2]=m[109988+(f*12|0)+6>>1]}k[g>>2]=c;d=h;return d|0}function yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;if(!a){c=-2;return c|0}d=a+28|0;e=k[d>>2]|0;if(b>>>0>5|(e|0)==0){c=-2;return c|0}f=a+12|0;do if(k[f>>2]|0){if((k[a>>2]|0)==0?(k[a+4>>2]|0)!=0:0)break;g=e+4|0;h=k[g>>2]|0;m=(b|0)!=4;if(!(m&(h|0)==666)){n=a+16|0;if(!(k[n>>2]|0)){k[a+24>>2]=k[27686];c=-5;return c|0}k[e>>2]=a;o=e+40|0;p=k[o>>2]|0;k[o>>2]=b;do if((h|0)==42){if((k[e+24>>2]|0)!=2){q=(k[e+48>>2]<<12)+-30720|0;if((k[e+136>>2]|0)<=1?(r=k[e+132>>2]|0,(r|0)>=2):0)if((r|0)<6)s=64;else s=(r|0)==6?128:192;else s=0;r=s|q;q=e+108|0;t=(k[q>>2]|0)==0?r:r|32;k[g>>2]=113;r=e+20|0;u=k[r>>2]|0;k[r>>2]=u+1;v=e+8|0;i[(k[v>>2]|0)+u>>0]=t>>>8;u=k[r>>2]|0;k[r>>2]=u+1;i[(k[v>>2]|0)+u>>0]=(t|((t>>>0)%31|0))^31;t=a+48|0;if(k[q>>2]|0){q=k[t>>2]|0;u=k[r>>2]|0;k[r>>2]=u+1;i[(k[v>>2]|0)+u>>0]=q>>>24;u=k[r>>2]|0;k[r>>2]=u+1;i[(k[v>>2]|0)+u>>0]=q>>>16;q=k[t>>2]|0;u=k[r>>2]|0;k[r>>2]=u+1;i[(k[v>>2]|0)+u>>0]=q>>>8;u=k[r>>2]|0;k[r>>2]=u+1;i[(k[v>>2]|0)+u>>0]=q}q=Wj(0,0,0)|0;k[t>>2]=q;w=k[g>>2]|0;x=30;break}q=Xj(0,0,0)|0;t=a+48|0;k[t>>2]=q;q=e+20|0;u=k[q>>2]|0;k[q>>2]=u+1;v=e+8|0;i[(k[v>>2]|0)+u>>0]=31;u=k[q>>2]|0;k[q>>2]=u+1;i[(k[v>>2]|0)+u>>0]=-117;u=k[q>>2]|0;k[q>>2]=u+1;i[(k[v>>2]|0)+u>>0]=8;u=e+28|0;r=k[u>>2]|0;if(!r){y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=0;y=k[e+132>>2]|0;if((y|0)==9)z=2;else z=((y|0)<2?1:(k[e+136>>2]|0)>1)?4:0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=z;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=3;k[g>>2]=113;break}y=(((k[r+44>>2]|0)!=0?2:0)|(k[r>>2]|0)!=0|((k[r+16>>2]|0)==0?0:4)|((k[r+28>>2]|0)==0?0:8)|((k[r+36>>2]|0)==0?0:16))&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=k[(k[u>>2]|0)+4>>2]&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=(k[(k[u>>2]|0)+4>>2]|0)>>>8&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=(k[(k[u>>2]|0)+4>>2]|0)>>>16&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=(k[(k[u>>2]|0)+4>>2]|0)>>>24&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=k[e+132>>2]|0;if((y|0)==9)A=2;else A=((y|0)<2?1:(k[e+136>>2]|0)>1)?4:0;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=A;y=k[(k[u>>2]|0)+12>>2]&255;r=k[q>>2]|0;k[q>>2]=r+1;i[(k[v>>2]|0)+r>>0]=y;y=k[u>>2]|0;if(!(k[y+16>>2]|0))B=y;else{r=k[y+20>>2]&255;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=r;r=(k[(k[u>>2]|0)+20>>2]|0)>>>8&255;y=k[q>>2]|0;k[q>>2]=y+1;i[(k[v>>2]|0)+y>>0]=r;B=k[u>>2]|0}if(k[B+44>>2]|0){r=Xj(k[t>>2]|0,k[v>>2]|0,k[q>>2]|0)|0;k[t>>2]=r}k[e+32>>2]=0;k[g>>2]=69;C=u;x=32}else{w=h;x=30}while(0);if((x|0)==30)if((w|0)==69){C=e+28|0;x=32}else{D=w;x=53}do if((x|0)==32){h=k[C>>2]|0;if(!(k[h+16>>2]|0)){k[g>>2]=73;E=C;F=h;x=55;break}u=e+20|0;r=k[u>>2]|0;t=e+32|0;q=k[t>>2]|0;a:do if(q>>>0<(k[h+20>>2]&65535)>>>0){v=e+12|0;y=a+48|0;G=e+8|0;H=a+20|0;I=q;J=r;K=h;L=r;while(1){if((J|0)==(k[v>>2]|0)){if(J>>>0>L>>>0&(k[K+44>>2]|0)!=0){M=Xj(k[y>>2]|0,(k[G>>2]|0)+L|0,J-L|0)|0;k[y>>2]=M}M=k[d>>2]|0;Nj(M);N=M+20|0;O=k[N>>2]|0;P=k[n>>2]|0;Q=O>>>0>P>>>0?P:O;if((Q|0)!=0?(O=M+16|0,wr(k[f>>2]|0,k[O>>2]|0,Q|0)|0,k[f>>2]=(k[f>>2]|0)+Q,k[O>>2]=(k[O>>2]|0)+Q,k[H>>2]=(k[H>>2]|0)+Q,k[n>>2]=(k[n>>2]|0)-Q,P=k[N>>2]|0,k[N>>2]=P-Q,(P|0)==(Q|0)):0)k[O>>2]=k[M+8>>2];M=k[u>>2]|0;if((M|0)==(k[v>>2]|0)){R=M;break}S=k[C>>2]|0;T=k[t>>2]|0;U=M;V=M}else{S=K;T=I;U=J;V=L}M=i[(k[S+16>>2]|0)+T>>0]|0;k[u>>2]=U+1;i[(k[G>>2]|0)+U>>0]=M;M=(k[t>>2]|0)+1|0;k[t>>2]=M;O=k[C>>2]|0;if(M>>>0>=(k[O+20>>2]&65535)>>>0){W=O;X=V;break a}I=M;J=k[u>>2]|0;K=O;L=V}W=k[C>>2]|0;X=R}else{W=h;X=r}while(0);if((k[W+44>>2]|0)!=0?(r=k[u>>2]|0,r>>>0>X>>>0):0){h=a+48|0;q=Xj(k[h>>2]|0,(k[e+8>>2]|0)+X|0,r-X|0)|0;k[h>>2]=q;Y=k[C>>2]|0}else Y=W;if((k[t>>2]|0)==(k[Y+20>>2]|0)){k[t>>2]=0;k[g>>2]=73;E=C;F=Y;x=55;break}else{D=k[g>>2]|0;x=53;break}}while(0);if((x|0)==53)if((D|0)==73){q=e+28|0;E=q;F=k[q>>2]|0;x=55}else{Z=D;x=73}do if((x|0)==55){if(!(k[F+28>>2]|0)){k[g>>2]=91;_=E;x=75;break}q=e+20|0;h=k[q>>2]|0;r=e+12|0;L=a+48|0;K=e+8|0;J=a+20|0;I=e+32|0;G=h;v=h;while(1){if((G|0)==(k[r>>2]|0)){if(G>>>0>v>>>0?(k[(k[E>>2]|0)+44>>2]|0)!=0:0){h=Xj(k[L>>2]|0,(k[K>>2]|0)+v|0,G-v|0)|0;k[L>>2]=h}h=k[d>>2]|0;Nj(h);H=h+20|0;y=k[H>>2]|0;O=k[n>>2]|0;M=y>>>0>O>>>0?O:y;if((M|0)!=0?(y=h+16|0,wr(k[f>>2]|0,k[y>>2]|0,M|0)|0,k[f>>2]=(k[f>>2]|0)+M,k[y>>2]=(k[y>>2]|0)+M,k[J>>2]=(k[J>>2]|0)+M,k[n>>2]=(k[n>>2]|0)-M,O=k[H>>2]|0,k[H>>2]=O-M,(O|0)==(M|0)):0)k[y>>2]=k[h+8>>2];h=k[q>>2]|0;if((h|0)==(k[r>>2]|0)){$=h;aa=1;break}else{ba=h;ca=h}}else{ba=G;ca=v}h=k[I>>2]|0;k[I>>2]=h+1;y=i[(k[(k[E>>2]|0)+28>>2]|0)+h>>0]|0;k[q>>2]=ba+1;i[(k[K>>2]|0)+ba>>0]=y;if(!(y<<24>>24)){$=ca;aa=y&255;break}G=k[q>>2]|0;v=ca}if((k[(k[E>>2]|0)+44>>2]|0)!=0?(v=k[q>>2]|0,v>>>0>$>>>0):0){G=Xj(k[L>>2]|0,(k[K>>2]|0)+$|0,v-$|0)|0;k[L>>2]=G}if(!aa){k[I>>2]=0;k[g>>2]=91;_=E;x=75;break}else{Z=k[g>>2]|0;x=73;break}}while(0);if((x|0)==73)if((Z|0)==91){_=e+28|0;x=75}else{da=Z;x=93}do if((x|0)==75){if(!(k[(k[_>>2]|0)+36>>2]|0)){k[g>>2]=103;ea=_;x=95;break}G=e+20|0;v=k[G>>2]|0;r=e+12|0;J=a+48|0;t=e+8|0;u=a+20|0;y=e+32|0;h=v;M=v;while(1){if((h|0)==(k[r>>2]|0)){if(h>>>0>M>>>0?(k[(k[_>>2]|0)+44>>2]|0)!=0:0){v=Xj(k[J>>2]|0,(k[t>>2]|0)+M|0,h-M|0)|0;k[J>>2]=v}v=k[d>>2]|0;Nj(v);O=v+20|0;H=k[O>>2]|0;Q=k[n>>2]|0;P=H>>>0>Q>>>0?Q:H;if((P|0)!=0?(H=v+16|0,wr(k[f>>2]|0,k[H>>2]|0,P|0)|0,k[f>>2]=(k[f>>2]|0)+P,k[H>>2]=(k[H>>2]|0)+P,k[u>>2]=(k[u>>2]|0)+P,k[n>>2]=(k[n>>2]|0)-P,Q=k[O>>2]|0,k[O>>2]=Q-P,(Q|0)==(P|0)):0)k[H>>2]=k[v+8>>2];v=k[G>>2]|0;if((v|0)==(k[r>>2]|0)){fa=v;ga=1;break}else{ha=v;ia=v}}else{ha=h;ia=M}v=k[y>>2]|0;k[y>>2]=v+1;H=i[(k[(k[_>>2]|0)+36>>2]|0)+v>>0]|0;k[G>>2]=ha+1;i[(k[t>>2]|0)+ha>>0]=H;if(!(H<<24>>24)){fa=ia;ga=H&255;break}h=k[G>>2]|0;M=ia}if((k[(k[_>>2]|0)+44>>2]|0)!=0?(M=k[G>>2]|0,M>>>0>fa>>>0):0){h=Xj(k[J>>2]|0,(k[t>>2]|0)+fa|0,M-fa|0)|0;k[J>>2]=h}if(!ga){k[g>>2]=103;ea=_;x=95;break}else{da=k[g>>2]|0;x=93;break}}while(0);if((x|0)==93?(da|0)==103:0){ea=e+28|0;x=95}do if((x|0)==95){if(!(k[(k[ea>>2]|0)+44>>2]|0)){k[g>>2]=113;break}h=e+20|0;M=e+12|0;if((((k[h>>2]|0)+2|0)>>>0>(k[M>>2]|0)>>>0?(y=k[d>>2]|0,Nj(y),r=y+20|0,u=k[r>>2]|0,I=k[n>>2]|0,L=u>>>0>I>>>0?I:u,(L|0)!=0):0)?(u=y+16|0,wr(k[f>>2]|0,k[u>>2]|0,L|0)|0,k[f>>2]=(k[f>>2]|0)+L,k[u>>2]=(k[u>>2]|0)+L,I=a+20|0,k[I>>2]=(k[I>>2]|0)+L,k[n>>2]=(k[n>>2]|0)-L,I=k[r>>2]|0,k[r>>2]=I-L,(I|0)==(L|0)):0)k[u>>2]=k[y+8>>2];y=k[h>>2]|0;if((y+2|0)>>>0<=(k[M>>2]|0)>>>0){M=a+48|0;u=k[M>>2]&255;k[h>>2]=y+1;L=e+8|0;i[(k[L>>2]|0)+y>>0]=u;u=(k[M>>2]|0)>>>8&255;y=k[h>>2]|0;k[h>>2]=y+1;i[(k[L>>2]|0)+y>>0]=u;u=Xj(0,0,0)|0;k[M>>2]=u;k[g>>2]=113}}while(0);u=e+20|0;if(!(k[u>>2]|0)){if((k[a+4>>2]|0)==0?m&((b<<1)-((b|0)>4?9:0)|0)<=((p<<1)-((p|0)>4?9:0)|0):0){k[a+24>>2]=k[27686];c=-5;return c|0}}else{M=k[d>>2]|0;Nj(M);y=M+20|0;L=k[y>>2]|0;h=k[n>>2]|0;I=L>>>0>h>>>0?h:L;if(I){L=M+16|0;wr(k[f>>2]|0,k[L>>2]|0,I|0)|0;k[f>>2]=(k[f>>2]|0)+I;k[L>>2]=(k[L>>2]|0)+I;r=a+20|0;k[r>>2]=(k[r>>2]|0)+I;r=(k[n>>2]|0)-I|0;k[n>>2]=r;K=k[y>>2]|0;k[y>>2]=K-I;if((K|0)==(I|0)){k[L>>2]=k[M+8>>2];ja=r}else ja=r}else ja=h;if(!ja){k[o>>2]=-1;c=0;return c|0}}h=(k[g>>2]|0)==666;r=(k[a+4>>2]|0)==0;if(h)if(r)x=116;else{k[a+24>>2]=k[27686];c=-5;return c|0}else if(r)x=116;else x=117;if((x|0)==116?!((k[e+116>>2]|0)==0&((b|0)==0|h)):0)x=117;do if((x|0)==117){b:do switch(k[e+136>>2]|0){case 2:{h=e+116|0;r=e+96|0;M=e+108|0;L=e+56|0;I=e+5792|0;K=e+5796|0;y=e+5784|0;q=e+5788|0;H=e+92|0;while(1){if((k[h>>2]|0)==0?(zj(e),(k[h>>2]|0)==0):0)break;k[r>>2]=0;v=i[(k[L>>2]|0)+(k[M>>2]|0)>>0]|0;P=k[I>>2]|0;j[(k[K>>2]|0)+(P<<1)>>1]=0;k[I>>2]=P+1;i[(k[y>>2]|0)+P>>0]=v;P=e+148+((v&255)<<2)|0;j[P>>1]=(j[P>>1]|0)+1<<16>>16;P=(k[I>>2]|0)==((k[q>>2]|0)+-1|0);k[h>>2]=(k[h>>2]|0)+-1;v=(k[M>>2]|0)+1|0;k[M>>2]=v;if(!P)continue;P=k[H>>2]|0;if((P|0)>-1)ka=(k[L>>2]|0)+P|0;else ka=0;Pj(e,ka,v-P|0,0);k[H>>2]=k[M>>2];P=k[e>>2]|0;v=k[P+28>>2]|0;Nj(v);Q=v+20|0;O=k[Q>>2]|0;N=P+16|0;la=k[N>>2]|0;ma=O>>>0>la>>>0?la:O;if((ma|0)!=0?(O=P+12|0,la=v+16|0,wr(k[O>>2]|0,k[la>>2]|0,ma|0)|0,k[O>>2]=(k[O>>2]|0)+ma,k[la>>2]=(k[la>>2]|0)+ma,O=P+20|0,k[O>>2]=(k[O>>2]|0)+ma,k[N>>2]=(k[N>>2]|0)-ma,N=k[Q>>2]|0,k[Q>>2]=N-ma,(N|0)==(ma|0)):0)k[la>>2]=k[v+8>>2];if(!(k[(k[e>>2]|0)+16>>2]|0)){x=191;break b}}if(b){k[e+5812>>2]=0;if((b|0)==4){h=k[H>>2]|0;if((h|0)>-1)na=(k[L>>2]|0)+h|0;else na=0;Pj(e,na,(k[M>>2]|0)-h|0,1);k[H>>2]=k[M>>2];h=k[e>>2]|0;q=k[h+28>>2]|0;Nj(q);y=q+20|0;K=k[y>>2]|0;r=h+16|0;v=k[r>>2]|0;la=K>>>0>v>>>0?v:K;if((la|0)!=0?(K=h+12|0,v=q+16|0,wr(k[K>>2]|0,k[v>>2]|0,la|0)|0,k[K>>2]=(k[K>>2]|0)+la,k[v>>2]=(k[v>>2]|0)+la,K=h+20|0,k[K>>2]=(k[K>>2]|0)+la,k[r>>2]=(k[r>>2]|0)-la,r=k[y>>2]|0,k[y>>2]=r-la,(r|0)==(la|0)):0)k[v>>2]=k[q+8>>2];oa=(k[(k[e>>2]|0)+16>>2]|0)==0?2:3;x=188;break b}if(k[I>>2]|0){q=k[H>>2]|0;if((q|0)>-1)pa=(k[L>>2]|0)+q|0;else pa=0;Pj(e,pa,(k[M>>2]|0)-q|0,0);k[H>>2]=k[M>>2];q=k[e>>2]|0;v=k[q+28>>2]|0;Nj(v);la=v+20|0;r=k[la>>2]|0;y=q+16|0;K=k[y>>2]|0;h=r>>>0>K>>>0?K:r;if((h|0)!=0?(r=q+12|0,K=v+16|0,wr(k[r>>2]|0,k[K>>2]|0,h|0)|0,k[r>>2]=(k[r>>2]|0)+h,k[K>>2]=(k[K>>2]|0)+h,r=q+20|0,k[r>>2]=(k[r>>2]|0)+h,k[y>>2]=(k[y>>2]|0)-h,y=k[la>>2]|0,k[la>>2]=y-h,(y|0)==(h|0)):0)k[K>>2]=k[v+8>>2];if(!(k[(k[e>>2]|0)+16>>2]|0))x=191}}else x=191;break}case 3:{v=e+116|0;K=(b|0)==0;h=e+96|0;y=e+108|0;la=e+5792|0;r=e+5796|0;q=e+5784|0;ma=e+2440+(l[154873]<<2)|0;N=e+5788|0;Q=e+56|0;O=e+92|0;while(1){P=k[v>>2]|0;if(P>>>0<259){zj(e);qa=k[v>>2]|0;if(K&qa>>>0<259){x=191;break b}if(!qa)break;k[h>>2]=0;if(qa>>>0>2){ra=qa;x=150}else{sa=k[y>>2]|0;x=165}}else{k[h>>2]=0;ra=P;x=150}if((x|0)==150){x=0;P=k[y>>2]|0;if(P){qa=k[Q>>2]|0;ta=i[qa+(P+-1)>>0]|0;if((ta<<24>>24==(i[qa+P>>0]|0)?ta<<24>>24==(i[qa+(P+1)>>0]|0):0)?(ua=qa+(P+2)|0,ta<<24>>24==(i[ua>>0]|0)):0){va=qa+(P+258)|0;qa=ua;while(1){ua=qa+1|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+2|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+3|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+4|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+5|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+6|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+7|0;if(ta<<24>>24!=(i[ua>>0]|0)){wa=ua;break}ua=qa+8|0;if(ua>>>0<va>>>0?ta<<24>>24==(i[ua>>0]|0):0)qa=ua;else{wa=ua;break}}qa=wa-va+258|0;ta=qa>>>0>ra>>>0?ra:qa;k[h>>2]=ta;if(ta>>>0>2){qa=ta+253|0;ta=k[la>>2]|0;j[(k[r>>2]|0)+(ta<<1)>>1]=1;k[la>>2]=ta+1;i[(k[q>>2]|0)+ta>>0]=qa;ta=e+148+((l[155385+(qa&255)>>0]|256)+1<<2)|0;j[ta>>1]=(j[ta>>1]|0)+1<<16>>16;j[ma>>1]=(j[ma>>1]|0)+1<<16>>16;ta=(k[la>>2]|0)==((k[N>>2]|0)+-1|0)&1;qa=k[h>>2]|0;k[v>>2]=(k[v>>2]|0)-qa;ua=(k[y>>2]|0)+qa|0;k[y>>2]=ua;k[h>>2]=0;xa=ua;ya=ta}else{sa=P;x=165}}else{sa=P;x=165}}else{sa=0;x=165}}if((x|0)==165){x=0;ta=i[(k[Q>>2]|0)+sa>>0]|0;ua=k[la>>2]|0;j[(k[r>>2]|0)+(ua<<1)>>1]=0;k[la>>2]=ua+1;i[(k[q>>2]|0)+ua>>0]=ta;ua=e+148+((ta&255)<<2)|0;j[ua>>1]=(j[ua>>1]|0)+1<<16>>16;ua=(k[la>>2]|0)==((k[N>>2]|0)+-1|0)&1;k[v>>2]=(k[v>>2]|0)+-1;ta=(k[y>>2]|0)+1|0;k[y>>2]=ta;xa=ta;ya=ua}if(!ya)continue;ua=k[O>>2]|0;if((ua|0)>-1)za=(k[Q>>2]|0)+ua|0;else za=0;Pj(e,za,xa-ua|0,0);k[O>>2]=k[y>>2];ua=k[e>>2]|0;ta=k[ua+28>>2]|0;Nj(ta);qa=ta+20|0;Aa=k[qa>>2]|0;Ba=ua+16|0;Ca=k[Ba>>2]|0;Da=Aa>>>0>Ca>>>0?Ca:Aa;if((Da|0)!=0?(Aa=ua+12|0,Ca=ta+16|0,wr(k[Aa>>2]|0,k[Ca>>2]|0,Da|0)|0,k[Aa>>2]=(k[Aa>>2]|0)+Da,k[Ca>>2]=(k[Ca>>2]|0)+Da,Aa=ua+20|0,k[Aa>>2]=(k[Aa>>2]|0)+Da,k[Ba>>2]=(k[Ba>>2]|0)-Da,Ba=k[qa>>2]|0,k[qa>>2]=Ba-Da,(Ba|0)==(Da|0)):0)k[Ca>>2]=k[ta+8>>2];if(!(k[(k[e>>2]|0)+16>>2]|0)){x=191;break b}}k[e+5812>>2]=0;if((b|0)==4){v=k[O>>2]|0;if((v|0)>-1)Ea=(k[Q>>2]|0)+v|0;else Ea=0;Pj(e,Ea,(k[y>>2]|0)-v|0,1);k[O>>2]=k[y>>2];v=k[e>>2]|0;N=k[v+28>>2]|0;Nj(N);q=N+20|0;r=k[q>>2]|0;h=v+16|0;ma=k[h>>2]|0;K=r>>>0>ma>>>0?ma:r;if((K|0)!=0?(r=v+12|0,ma=N+16|0,wr(k[r>>2]|0,k[ma>>2]|0,K|0)|0,k[r>>2]=(k[r>>2]|0)+K,k[ma>>2]=(k[ma>>2]|0)+K,r=v+20|0,k[r>>2]=(k[r>>2]|0)+K,k[h>>2]=(k[h>>2]|0)-K,h=k[q>>2]|0,k[q>>2]=h-K,(h|0)==(K|0)):0)k[ma>>2]=k[N+8>>2];oa=(k[(k[e>>2]|0)+16>>2]|0)==0?2:3;x=188;break b}if(k[la>>2]|0){N=k[O>>2]|0;if((N|0)>-1)Fa=(k[Q>>2]|0)+N|0;else Fa=0;Pj(e,Fa,(k[y>>2]|0)-N|0,0);k[O>>2]=k[y>>2];N=k[e>>2]|0;ma=k[N+28>>2]|0;Nj(ma);K=ma+20|0;h=k[K>>2]|0;q=N+16|0;r=k[q>>2]|0;v=h>>>0>r>>>0?r:h;if((v|0)!=0?(h=N+12|0,r=ma+16|0,wr(k[h>>2]|0,k[r>>2]|0,v|0)|0,k[h>>2]=(k[h>>2]|0)+v,k[r>>2]=(k[r>>2]|0)+v,h=N+20|0,k[h>>2]=(k[h>>2]|0)+v,k[q>>2]=(k[q>>2]|0)-v,q=k[K>>2]|0,k[K>>2]=q-v,(q|0)==(v|0)):0)k[r>>2]=k[ma+8>>2];if(!(k[(k[e>>2]|0)+16>>2]|0))x=191}break}default:{oa=yb[k[109988+((k[e+132>>2]|0)*12|0)+8>>2]&127](e,b)|0;x=188}}while(0);if((x|0)==188){if((oa&-2|0)==2)k[g>>2]=666;if(oa&-3){if((oa|0)!=1)break}else x=191}if((x|0)==191){if(k[n>>2]|0){c=0;return c|0}k[o>>2]=-1;c=0;return c|0}switch(b|0){case 1:{Oj(e);break}case 5:break;default:{Mj(e,0,0,0);if((b|0)==3?(J=k[e+76>>2]|0,t=k[e+68>>2]|0,j[t+(J+-1<<1)>>1]=0,qr(t|0,0,(J<<1)+-2|0)|0,(k[e+116>>2]|0)==0):0){k[e+108>>2]=0;k[e+92>>2]=0;k[e+5812>>2]=0}}}J=k[d>>2]|0;Nj(J);t=J+20|0;G=k[t>>2]|0;ma=k[n>>2]|0;r=G>>>0>ma>>>0?ma:G;if(r){G=J+16|0;wr(k[f>>2]|0,k[G>>2]|0,r|0)|0;k[f>>2]=(k[f>>2]|0)+r;k[G>>2]=(k[G>>2]|0)+r;v=a+20|0;k[v>>2]=(k[v>>2]|0)+r;v=(k[n>>2]|0)-r|0;k[n>>2]=v;q=k[t>>2]|0;k[t>>2]=q-r;if((q|0)==(r|0)){k[G>>2]=k[J+8>>2];Ga=v}else Ga=v}else Ga=ma;if(!Ga){k[o>>2]=-1;c=0;return c|0}}while(0);if(m){c=0;return c|0}o=e+24|0;g=k[o>>2]|0;if((g|0)<1){c=1;return c|0}p=a+48|0;ma=k[p>>2]|0;if((g|0)==2){g=k[u>>2]|0;k[u>>2]=g+1;v=e+8|0;i[(k[v>>2]|0)+g>>0]=ma;g=(k[p>>2]|0)>>>8&255;J=k[u>>2]|0;k[u>>2]=J+1;i[(k[v>>2]|0)+J>>0]=g;g=(k[p>>2]|0)>>>16&255;J=k[u>>2]|0;k[u>>2]=J+1;i[(k[v>>2]|0)+J>>0]=g;g=(k[p>>2]|0)>>>24&255;J=k[u>>2]|0;k[u>>2]=J+1;i[(k[v>>2]|0)+J>>0]=g;g=a+8|0;J=k[g>>2]&255;G=k[u>>2]|0;k[u>>2]=G+1;i[(k[v>>2]|0)+G>>0]=J;J=(k[g>>2]|0)>>>8&255;G=k[u>>2]|0;k[u>>2]=G+1;i[(k[v>>2]|0)+G>>0]=J;J=(k[g>>2]|0)>>>16&255;G=k[u>>2]|0;k[u>>2]=G+1;i[(k[v>>2]|0)+G>>0]=J;J=(k[g>>2]|0)>>>24&255;g=k[u>>2]|0;k[u>>2]=g+1;i[(k[v>>2]|0)+g>>0]=J}else{J=k[u>>2]|0;k[u>>2]=J+1;g=e+8|0;i[(k[g>>2]|0)+J>>0]=ma>>>24;J=k[u>>2]|0;k[u>>2]=J+1;i[(k[g>>2]|0)+J>>0]=ma>>>16;ma=k[p>>2]|0;p=k[u>>2]|0;k[u>>2]=p+1;i[(k[g>>2]|0)+p>>0]=ma>>>8;p=k[u>>2]|0;k[u>>2]=p+1;i[(k[g>>2]|0)+p>>0]=ma}ma=k[d>>2]|0;Nj(ma);p=ma+20|0;g=k[p>>2]|0;J=k[n>>2]|0;v=g>>>0>J>>>0?J:g;if((v|0)!=0?(g=ma+16|0,wr(k[f>>2]|0,k[g>>2]|0,v|0)|0,k[f>>2]=(k[f>>2]|0)+v,k[g>>2]=(k[g>>2]|0)+v,J=a+20|0,k[J>>2]=(k[J>>2]|0)+v,k[n>>2]=(k[n>>2]|0)-v,J=k[p>>2]|0,k[p>>2]=J-v,(J|0)==(v|0)):0)k[g>>2]=k[ma+8>>2];ma=k[o>>2]|0;if((ma|0)>0)k[o>>2]=0-ma;c=(k[u>>2]|0)==0&1;return c|0}}while(0);k[a+24>>2]=k[27683];c=-2;return c|0}function zj(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;b=a+44|0;c=k[b>>2]|0;d=a+60|0;e=a+116|0;f=a+108|0;g=c+-262|0;h=a+56|0;i=a+5812|0;n=a+72|0;o=a+88|0;p=a+84|0;q=a+68|0;r=a+52|0;s=a+64|0;t=a+112|0;u=a+92|0;v=a+76|0;w=k[e>>2]|0;x=c;while(1){y=k[f>>2]|0;z=(k[d>>2]|0)-w-y|0;if(y>>>0<(g+x|0)>>>0){A=y;B=z}else{y=k[h>>2]|0;wr(y|0,y+c|0,c|0)|0;k[t>>2]=(k[t>>2]|0)-c;y=(k[f>>2]|0)-c|0;k[f>>2]=y;k[u>>2]=(k[u>>2]|0)-c;C=k[v>>2]|0;D=C;E=(k[q>>2]|0)+(C<<1)|0;do{E=E+-2|0;C=m[E>>1]|0;j[E>>1]=C>>>0<c>>>0?0:C-c&65535;D=D+-1|0}while((D|0)!=0);D=c;E=(k[s>>2]|0)+(c<<1)|0;do{E=E+-2|0;C=m[E>>1]|0;j[E>>1]=C>>>0<c>>>0?0:C-c&65535;D=D+-1|0}while((D|0)!=0);A=y;B=z+c|0}D=k[a>>2]|0;E=D+4|0;C=k[E>>2]|0;if(!C)break;F=k[e>>2]|0;G=(k[h>>2]|0)+(F+A)|0;H=C>>>0>B>>>0?B:C;if(!H){I=0;J=F}else{k[E>>2]=C-H;wr(G|0,k[D>>2]|0,H|0)|0;switch(k[(k[D+28>>2]|0)+24>>2]|0){case 1:{C=D+48|0;E=Wj(k[C>>2]|0,G,H)|0;k[C>>2]=E;break}case 2:{E=D+48|0;C=Xj(k[E>>2]|0,G,H)|0;k[E>>2]=C;break}default:{}}k[D>>2]=(k[D>>2]|0)+H;C=D+8|0;k[C>>2]=(k[C>>2]|0)+H;I=H;J=k[e>>2]|0}H=J+I|0;k[e>>2]=H;C=k[i>>2]|0;a:do if((H+C|0)>>>0>2){D=(k[f>>2]|0)-C|0;E=k[h>>2]|0;G=l[E+D>>0]|0;k[n>>2]=G;F=k[o>>2]|0;K=k[p>>2]|0;L=((l[E+(D+1)>>0]|0)^G<<F)&K;k[n>>2]=L;G=C;M=L;L=D;while(1){if(!G)break a;M=((l[E+(L+2)>>0]|0)^M<<F)&K;k[n>>2]=M;D=(k[q>>2]|0)+(M<<1)|0;j[(k[s>>2]|0)+((k[r>>2]&L)<<1)>>1]=j[D>>1]|0;j[D>>1]=L;G=G+-1|0;k[i>>2]=G;if((H+G|0)>>>0<3)break;else L=L+1|0}}while(0);if(H>>>0>=262)break;if(!(k[(k[a>>2]|0)+4>>2]|0))break;w=H;x=k[b>>2]|0}b=a+5824|0;a=k[b>>2]|0;x=k[d>>2]|0;if(x>>>0<=a>>>0)return;d=(k[e>>2]|0)+(k[f>>2]|0)|0;if(a>>>0<d>>>0){f=x-d|0;e=f>>>0>258?258:f;qr((k[h>>2]|0)+d|0,0,e|0)|0;k[b>>2]=e+d;return}e=d+258|0;if(e>>>0<=a>>>0)return;d=e-a|0;e=x-a|0;x=d>>>0>e>>>0?e:d;qr((k[h>>2]|0)+a|0,0,x|0)|0;k[b>>2]=(k[b>>2]|0)+x;return}function Aj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;c=(k[a+12>>2]|0)+-5|0;d=c>>>0<65535?c:65535;c=a+116|0;e=a+108|0;f=a+92|0;g=a+44|0;h=a+56|0;while(1){i=k[c>>2]|0;if(i>>>0<2){zj(a);j=k[c>>2]|0;if(!(j|b)){l=0;m=35;break}if(!j){m=20;break}else n=j}else n=i;i=(k[e>>2]|0)+n|0;k[e>>2]=i;k[c>>2]=0;j=k[f>>2]|0;o=j+d|0;if((i|0)!=0&i>>>0<o>>>0){p=i;q=j}else{k[c>>2]=i-o;k[e>>2]=o;if((j|0)>-1)r=(k[h>>2]|0)+j|0;else r=0;Pj(a,r,d,0);k[f>>2]=k[e>>2];j=k[a>>2]|0;o=k[j+28>>2]|0;Nj(o);i=o+20|0;s=k[i>>2]|0;t=j+16|0;u=k[t>>2]|0;v=s>>>0>u>>>0?u:s;if((v|0)!=0?(s=j+12|0,u=o+16|0,wr(k[s>>2]|0,k[u>>2]|0,v|0)|0,k[s>>2]=(k[s>>2]|0)+v,k[u>>2]=(k[u>>2]|0)+v,s=j+20|0,k[s>>2]=(k[s>>2]|0)+v,k[t>>2]=(k[t>>2]|0)-v,t=k[i>>2]|0,k[i>>2]=t-v,(t|0)==(v|0)):0)k[u>>2]=k[o+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){l=0;m=35;break}p=k[e>>2]|0;q=k[f>>2]|0}o=p-q|0;if(o>>>0<((k[g>>2]|0)+-262|0)>>>0)continue;if((q|0)>-1)w=(k[h>>2]|0)+q|0;else w=0;Pj(a,w,o,0);k[f>>2]=k[e>>2];o=k[a>>2]|0;u=k[o+28>>2]|0;Nj(u);v=u+20|0;t=k[v>>2]|0;i=o+16|0;s=k[i>>2]|0;j=t>>>0>s>>>0?s:t;if((j|0)!=0?(t=o+12|0,s=u+16|0,wr(k[t>>2]|0,k[s>>2]|0,j|0)|0,k[t>>2]=(k[t>>2]|0)+j,k[s>>2]=(k[s>>2]|0)+j,t=o+20|0,k[t>>2]=(k[t>>2]|0)+j,k[i>>2]=(k[i>>2]|0)-j,i=k[v>>2]|0,k[v>>2]=i-j,(i|0)==(j|0)):0)k[s>>2]=k[u+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){l=0;m=35;break}}if((m|0)==20){k[a+5812>>2]=0;if((b|0)==4){b=k[f>>2]|0;if((b|0)>-1)x=(k[h>>2]|0)+b|0;else x=0;Pj(a,x,(k[e>>2]|0)-b|0,1);k[f>>2]=k[e>>2];b=k[a>>2]|0;x=k[b+28>>2]|0;Nj(x);w=x+20|0;q=k[w>>2]|0;g=b+16|0;p=k[g>>2]|0;d=q>>>0>p>>>0?p:q;if((d|0)!=0?(q=b+12|0,p=x+16|0,wr(k[q>>2]|0,k[p>>2]|0,d|0)|0,k[q>>2]=(k[q>>2]|0)+d,k[p>>2]=(k[p>>2]|0)+d,q=b+20|0,k[q>>2]=(k[q>>2]|0)+d,k[g>>2]=(k[g>>2]|0)-d,g=k[w>>2]|0,k[w>>2]=g-d,(g|0)==(d|0)):0)k[p>>2]=k[x+8>>2];l=(k[(k[a>>2]|0)+16>>2]|0)==0?2:3;return l|0}x=k[e>>2]|0;p=k[f>>2]|0;if((x|0)>(p|0)){if((p|0)>-1)y=(k[h>>2]|0)+p|0;else y=0;Pj(a,y,x-p|0,0);k[f>>2]=k[e>>2];e=k[a>>2]|0;f=k[e+28>>2]|0;Nj(f);p=f+20|0;x=k[p>>2]|0;y=e+16|0;h=k[y>>2]|0;d=x>>>0>h>>>0?h:x;if((d|0)!=0?(x=e+12|0,h=f+16|0,wr(k[x>>2]|0,k[h>>2]|0,d|0)|0,k[x>>2]=(k[x>>2]|0)+d,k[h>>2]=(k[h>>2]|0)+d,x=e+20|0,k[x>>2]=(k[x>>2]|0)+d,k[y>>2]=(k[y>>2]|0)-d,y=k[p>>2]|0,k[p>>2]=y-d,(y|0)==(d|0)):0)k[h>>2]=k[f+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){l=0;return l|0}}l=1;return l|0}else if((m|0)==35)return l|0;return 0}function Bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;c=a+116|0;d=(b|0)==0;e=a+72|0;f=a+88|0;g=a+108|0;h=a+56|0;m=a+84|0;n=a+68|0;o=a+52|0;p=a+64|0;q=a+44|0;r=a+96|0;s=a+112|0;t=a+5792|0;u=a+5796|0;v=a+5784|0;w=a+5788|0;x=a+128|0;y=a+92|0;while(1){if((k[c>>2]|0)>>>0<262){zj(a);z=k[c>>2]|0;if(d&z>>>0<262){A=0;B=39;break}if(!z){B=24;break}if(z>>>0<=2)B=9;else B=6}else B=6;if((B|0)==6){B=0;z=k[g>>2]|0;C=((l[(k[h>>2]|0)+(z+2)>>0]|0)^k[e>>2]<<k[f>>2])&k[m>>2];k[e>>2]=C;D=(k[n>>2]|0)+(C<<1)|0;C=j[D>>1]|0;j[(k[p>>2]|0)+((k[o>>2]&z)<<1)>>1]=C;E=C&65535;j[D>>1]=z;if(C<<16>>16!=0?(z-E|0)>>>0<=((k[q>>2]|0)+-262|0)>>>0:0){z=Dj(a,E)|0;k[r>>2]=z;F=z}else B=9}if((B|0)==9){B=0;F=k[r>>2]|0}do if(F>>>0>2){z=F+253|0;E=(k[g>>2]|0)-(k[s>>2]|0)|0;C=k[t>>2]|0;j[(k[u>>2]|0)+(C<<1)>>1]=E;k[t>>2]=C+1;i[(k[v>>2]|0)+C>>0]=z;C=a+148+((l[155385+(z&255)>>0]|0|256)+1<<2)|0;j[C>>1]=(j[C>>1]|0)+1<<16>>16;C=E+65535&65535;E=a+2440+((l[154873+(C>>>0<256?C:(C>>>7)+256|0)>>0]|0)<<2)|0;j[E>>1]=(j[E>>1]|0)+1<<16>>16;E=(k[t>>2]|0)==((k[w>>2]|0)+-1|0)&1;C=k[r>>2]|0;z=(k[c>>2]|0)-C|0;k[c>>2]=z;if(!(z>>>0>2?C>>>0<=(k[x>>2]|0)>>>0:0)){z=(k[g>>2]|0)+C|0;k[g>>2]=z;k[r>>2]=0;D=k[h>>2]|0;G=l[D+z>>0]|0;k[e>>2]=G;k[e>>2]=((l[D+(z+1)>>0]|0)^G<<k[f>>2])&k[m>>2];H=z;I=E;break}z=C+-1|0;k[r>>2]=z;C=k[f>>2]|0;G=k[h>>2]|0;D=k[m>>2]|0;J=k[n>>2]|0;K=k[o>>2]|0;L=k[p>>2]|0;M=z;z=k[g>>2]|0;N=k[e>>2]|0;while(1){O=z+1|0;k[g>>2]=O;N=((l[G+(z+3)>>0]|0)^N<<C)&D;k[e>>2]=N;P=J+(N<<1)|0;j[L+((K&O)<<1)>>1]=j[P>>1]|0;j[P>>1]=O;M=M+-1|0;k[r>>2]=M;if(!M){Q=z;break}else z=O}z=Q+2|0;k[g>>2]=z;H=z;I=E}else{z=i[(k[h>>2]|0)+(k[g>>2]|0)>>0]|0;M=k[t>>2]|0;j[(k[u>>2]|0)+(M<<1)>>1]=0;k[t>>2]=M+1;i[(k[v>>2]|0)+M>>0]=z;M=a+148+((z&255)<<2)|0;j[M>>1]=(j[M>>1]|0)+1<<16>>16;M=(k[t>>2]|0)==((k[w>>2]|0)+-1|0)&1;k[c>>2]=(k[c>>2]|0)+-1;z=(k[g>>2]|0)+1|0;k[g>>2]=z;H=z;I=M}while(0);if(!I)continue;M=k[y>>2]|0;if((M|0)>-1)R=(k[h>>2]|0)+M|0;else R=0;Pj(a,R,H-M|0,0);k[y>>2]=k[g>>2];M=k[a>>2]|0;z=k[M+28>>2]|0;Nj(z);K=z+20|0;L=k[K>>2]|0;N=M+16|0;J=k[N>>2]|0;D=L>>>0>J>>>0?J:L;if((D|0)!=0?(L=M+12|0,J=z+16|0,wr(k[L>>2]|0,k[J>>2]|0,D|0)|0,k[L>>2]=(k[L>>2]|0)+D,k[J>>2]=(k[J>>2]|0)+D,L=M+20|0,k[L>>2]=(k[L>>2]|0)+D,k[N>>2]=(k[N>>2]|0)-D,N=k[K>>2]|0,k[K>>2]=N-D,(N|0)==(D|0)):0)k[J>>2]=k[z+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){A=0;B=39;break}}if((B|0)==24){H=k[g>>2]|0;k[a+5812>>2]=H>>>0<2?H:2;if((b|0)==4){b=k[y>>2]|0;if((b|0)>-1)S=(k[h>>2]|0)+b|0;else S=0;Pj(a,S,H-b|0,1);k[y>>2]=k[g>>2];b=k[a>>2]|0;S=k[b+28>>2]|0;Nj(S);R=S+20|0;I=k[R>>2]|0;c=b+16|0;w=k[c>>2]|0;v=I>>>0>w>>>0?w:I;if((v|0)!=0?(I=b+12|0,w=S+16|0,wr(k[I>>2]|0,k[w>>2]|0,v|0)|0,k[I>>2]=(k[I>>2]|0)+v,k[w>>2]=(k[w>>2]|0)+v,I=b+20|0,k[I>>2]=(k[I>>2]|0)+v,k[c>>2]=(k[c>>2]|0)-v,c=k[R>>2]|0,k[R>>2]=c-v,(c|0)==(v|0)):0)k[w>>2]=k[S+8>>2];A=(k[(k[a>>2]|0)+16>>2]|0)==0?2:3;return A|0}if(k[t>>2]|0){t=k[y>>2]|0;if((t|0)>-1)T=(k[h>>2]|0)+t|0;else T=0;Pj(a,T,H-t|0,0);k[y>>2]=k[g>>2];g=k[a>>2]|0;y=k[g+28>>2]|0;Nj(y);t=y+20|0;H=k[t>>2]|0;T=g+16|0;h=k[T>>2]|0;S=H>>>0>h>>>0?h:H;if((S|0)!=0?(H=g+12|0,h=y+16|0,wr(k[H>>2]|0,k[h>>2]|0,S|0)|0,k[H>>2]=(k[H>>2]|0)+S,k[h>>2]=(k[h>>2]|0)+S,H=g+20|0,k[H>>2]=(k[H>>2]|0)+S,k[T>>2]=(k[T>>2]|0)-S,T=k[t>>2]|0,k[t>>2]=T-S,(T|0)==(S|0)):0)k[h>>2]=k[y+8>>2];if(!(k[(k[a>>2]|0)+16>>2]|0)){A=0;return A|0}}A=1;return A|0}else if((B|0)==39)return A|0;return 0}
88
+function Cm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=d+c|0;g=b+4|0;if(!((f>>>0<=(k[g>>2]|0)>>>0?(k[b+12>>2]|0)>>>0>=d>>>0:0)?(k[b>>2]|0)!=0:0)){d=k[a>>2]|0;k[d+20>>2]=23;qb[k[d>>2]&127](a)}d=b+24|0;h=k[d>>2]|0;if(!(h>>>0<=c>>>0?f>>>0<=((k[b+16>>2]|0)+h|0)>>>0:0))i=7;a:do if((i|0)==7){if(!(k[b+40>>2]|0)){h=k[a>>2]|0;k[h+20>>2]=71;qb[k[h>>2]&127](a)}h=b+36|0;if(k[h>>2]|0){j=k[b+8>>2]<<7;l=k[d>>2]|0;m=b+20|0;n=b+16|0;o=k[n>>2]|0;b:do if((o|0)>0?(p=b+28|0,q=b+48|0,r=b+52|0,s=k[m>>2]|0,t=(s|0)<(o|0)?s:o,s=(k[p>>2]|0)-l|0,u=(t|0)<(s|0)?t:s,s=(k[g>>2]|0)-l|0,t=(u|0)<(s|0)?u:s,(t|0)>=1):0){s=t;t=ha(l,j)|0;u=0;while(1){v=ha(s,j)|0;pb[k[r>>2]&63](a,q,k[(k[b>>2]|0)+(u<<2)>>2]|0,t,v);w=k[m>>2]|0;x=k[n>>2]|0;u=w+u|0;if((x|0)<=(u|0))break b;y=x-u|0;x=(w|0)<(y|0)?w:y;y=u+(k[d>>2]|0)|0;w=(k[p>>2]|0)-y|0;z=(x|0)<(w|0)?x:w;w=(k[g>>2]|0)-y|0;s=(z|0)<(w|0)?z:w;if((s|0)<1)break;else t=v+t|0}}while(0);k[h>>2]=0}n=b+16|0;m=k[n>>2]|0;if((k[d>>2]|0)>>>0<c>>>0)A=c;else{j=f-m|0;A=(j|0)<0?0:j}k[d>>2]=A;j=k[b+8>>2]<<7;l=b+20|0;if((m|0)>0?(o=b+28|0,t=b+48|0,s=k[l>>2]|0,p=(s|0)<(m|0)?s:m,m=(k[o>>2]|0)-A|0,s=(p|0)<(m|0)?p:m,m=(k[g>>2]|0)-A|0,p=(s|0)<(m|0)?s:m,(p|0)>=1):0){m=p;p=ha(j,A)|0;s=0;while(1){u=ha(m,j)|0;pb[k[t>>2]&63](a,t,k[(k[b>>2]|0)+(s<<2)>>2]|0,p,u);q=k[l>>2]|0;r=k[n>>2]|0;s=q+s|0;if((r|0)<=(s|0))break a;v=r-s|0;r=(q|0)<(v|0)?q:v;v=s+(k[d>>2]|0)|0;q=(k[o>>2]|0)-v|0;w=(r|0)<(q|0)?r:q;q=(k[g>>2]|0)-v|0;m=(w|0)<(q|0)?w:q;if((m|0)<1)break;else p=u+p|0}}}while(0);g=b+28|0;A=k[g>>2]|0;do if(A>>>0<f>>>0){p=(e|0)==0;if(A>>>0<c>>>0)if(p){B=0;C=c}else{m=k[a>>2]|0;k[m+20>>2]=23;qb[k[m>>2]&127](a);D=c;i=28}else if(p){B=0;C=A}else{D=A;i=28}if((i|0)==28){k[g>>2]=f;B=1;C=D}if(!(k[b+32>>2]|0)){if(B)break;p=k[a>>2]|0;k[p+20>>2]=23;qb[k[p>>2]&127](a);break}p=k[b+8>>2]<<7;m=k[d>>2]|0;o=C-m|0;s=f-m|0;if(o>>>0<s>>>0){m=o;do{qr(k[(k[b>>2]|0)+(m<<2)>>2]|0,0,p|0)|0;m=m+1|0}while((m|0)!=(s|0))}}while(0);if(!e){E=k[b>>2]|0;F=k[d>>2]|0;G=c-F|0;H=E+(G<<2)|0;return H|0}k[b+36>>2]=1;E=k[b>>2]|0;F=k[d>>2]|0;G=c-F|0;H=E+(G<<2)|0;return H|0}function Dm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a+4>>2]|0;if(b>>>0<=1){if((b|0)==1){d=c+68|0;e=k[d>>2]|0;if(e){f=e;do{e=f+40|0;if(k[e>>2]|0){k[e>>2]=0;rb[k[f+56>>2]&31](a,f+48|0)}f=k[f+44>>2]|0}while((f|0)!=0)}k[d>>2]=0;d=c+72|0;f=k[d>>2]|0;if(f){e=f;do{f=e+40|0;if(k[f>>2]|0){k[f>>2]=0;rb[k[e+56>>2]&31](a,e+48|0)}e=k[e+44>>2]|0}while((e|0)!=0)}k[d>>2]=0}}else{d=k[a>>2]|0;k[d+20>>2]=15;k[d+24>>2]=b;qb[k[d>>2]&127](a)}d=c+60+(b<<2)|0;e=k[d>>2]|0;k[d>>2]=0;if(e){d=c+76|0;f=e;do{e=f;f=k[f>>2]|0;g=(k[e+4>>2]|0)+16+(k[e+8>>2]|0)|0;Im(a,e,g);k[d>>2]=(k[d>>2]|0)-g}while((f|0)!=0)}f=c+52+(b<<2)|0;b=k[f>>2]|0;k[f>>2]=0;if(!b)return;f=c+76|0;c=b;do{b=c;c=k[c>>2]|0;d=(k[b+4>>2]|0)+16+(k[b+8>>2]|0)|0;Gm(a,b,d);k[f>>2]=(k[f>>2]|0)-d}while((c|0)!=0);return}function Em(a){a=a|0;var b=0;Dm(a,1);Dm(a,0);b=a+4|0;Gm(a,k[b>>2]|0,84);k[b>>2]=0;Mm(a);return}function Fm(a,b){a=a|0;b=b|0;return jr(b)|0}function Gm(a,b,c){a=a|0;b=b|0;c=c|0;kr(b);return}function Hm(a,b){a=a|0;b=b|0;return jr(b)|0}function Im(a,b,c){a=a|0;b=b|0;c=c|0;kr(b);return}function Jm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return c|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;c=k[a>>2]|0;k[c+20>>2]=51;qb[k[c>>2]&127](a);return}function Lm(a){a=a|0;return 0}function Mm(a){a=a|0;return}function Nm(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,1,208)|0;k[a+424>>2]=b;k[b>>2]=16;k[b+8>>2]=57;k[b+76>>2]=0;k[b+140>>2]=0;k[b+80>>2]=0;k[b+144>>2]=0;k[b+84>>2]=0;k[b+148>>2]=0;k[b+88>>2]=0;k[b+152>>2]=0;k[b+92>>2]=0;k[b+156>>2]=0;k[b+96>>2]=0;k[b+160>>2]=0;k[b+100>>2]=0;k[b+164>>2]=0;k[b+104>>2]=0;k[b+168>>2]=0;k[b+108>>2]=0;k[b+172>>2]=0;k[b+112>>2]=0;k[b+176>>2]=0;k[b+116>>2]=0;k[b+180>>2]=0;k[b+120>>2]=0;k[b+184>>2]=0;k[b+124>>2]=0;k[b+188>>2]=0;k[b+128>>2]=0;k[b+192>>2]=0;k[b+132>>2]=0;k[b+196>>2]=0;k[b+136>>2]=0;k[b+200>>2]=0;i[b+204>>0]=113;return}function Om(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=k[a+424>>2]|0;if(b){b=k[a>>2]|0;k[b+20>>2]=49;qb[k[b>>2]&127](a)}do if(k[a+268>>2]|0){b=(k[a+364>>2]|0)==0;d=c+4|0;if(!(k[a+372>>2]|0))if(b){k[d>>2]=42;break}else{k[d>>2]=43;break}else if(b){k[d>>2]=44;break}else{k[d>>2]=45;break}}else k[c+4>>2]=46;while(0);d=a+292|0;if((k[d>>2]|0)<=0){e=c+12|0;k[e>>2]=0;f=c+16|0;k[f>>2]=65536;g=c+20|0;k[g>>2]=0;h=c+24|0;k[h>>2]=0;j=c+28|0;k[j>>2]=11;l=c+32|0;k[l>>2]=-1;m=a+236|0;n=k[m>>2]|0;o=c+68|0;k[o>>2]=n;p=c+72|0;k[p>>2]=0;return}b=a+364|0;q=a+372|0;r=a+4|0;s=a+368|0;t=0;do{u=k[a+296+(t<<2)>>2]|0;if((k[b>>2]|0)==0?(k[q>>2]|0)==0:0){v=k[u+20>>2]|0;if(v>>>0>15){w=k[a>>2]|0;k[w+20>>2]=50;k[w+24>>2]=v;qb[k[w>>2]&127](a)}w=c+76+(v<<2)|0;v=k[w>>2]|0;if(!v){x=nb[k[k[r>>2]>>2]&63](a,1,64)|0;k[w>>2]=x;y=x}else y=v;v=y;x=v+64|0;do{i[v>>0]=0;v=v+1|0}while((v|0)<(x|0));k[c+36+(t<<2)>>2]=0;k[c+52+(t<<2)>>2]=0}if(k[s>>2]|0){v=k[u+24>>2]|0;if(v>>>0>15){x=k[a>>2]|0;k[x+20>>2]=50;k[x+24>>2]=v;qb[k[x>>2]&127](a)}x=c+140+(v<<2)|0;v=k[x>>2]|0;if(!v){w=nb[k[k[r>>2]>>2]&63](a,1,256)|0;k[x>>2]=w;z=w}else z=v;qr(z|0,0,256)|0}t=t+1|0}while((t|0)<(k[d>>2]|0));e=c+12|0;k[e>>2]=0;f=c+16|0;k[f>>2]=65536;g=c+20|0;k[g>>2]=0;h=c+24|0;k[h>>2]=0;j=c+28|0;k[j>>2]=11;l=c+32|0;k[l>>2]=-1;m=a+236|0;n=k[m>>2]|0;o=c+68|0;k[o>>2]=n;p=c+72|0;k[p>>2]=0;return}function Pm(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;b=k[a+424>>2]|0;c=b+12|0;d=k[c>>2]|0;e=(k[b+16>>2]|0)+-1+d&-65536;f=((e|0)<(d|0)?e|32768:e)<<k[b+28>>2];k[c>>2]=f;e=b+32|0;d=k[e>>2]|0;if(f>>>0<=134217727){if(d){if((d|0)>-1){f=b+24|0;g=a+24|0;if(!(k[f>>2]|0))h=d;else{do{j=k[g>>2]|0;l=k[j>>2]|0;k[j>>2]=l+1;i[l>>0]=0;l=j+4|0;m=(k[l>>2]|0)+-1|0;k[l>>2]=m;if((m|0)==0?(ub[k[j+12>>2]&63](a)|0)==0:0){j=k[a>>2]|0;k[j+20>>2]=25;qb[k[j>>2]&127](a)}j=(k[f>>2]|0)+-1|0;k[f>>2]=j}while((j|0)!=0);h=k[e>>2]|0}f=k[g>>2]|0;g=k[f>>2]|0;k[f>>2]=g+1;i[g>>0]=h;h=f+4|0;g=(k[h>>2]|0)+-1|0;k[h>>2]=g;if((g|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}}}else{f=b+24|0;k[f>>2]=(k[f>>2]|0)+1}f=b+20|0;if(k[f>>2]|0){g=b+24|0;h=a+24|0;if(k[g>>2]|0)do{j=k[h>>2]|0;m=k[j>>2]|0;k[j>>2]=m+1;i[m>>0]=0;m=j+4|0;l=(k[m>>2]|0)+-1|0;k[m>>2]=l;if((l|0)==0?(ub[k[j+12>>2]&63](a)|0)==0:0){j=k[a>>2]|0;k[j+20>>2]=25;qb[k[j>>2]&127](a)}j=(k[g>>2]|0)+-1|0;k[g>>2]=j}while((j|0)!=0);do{g=k[h>>2]|0;j=k[g>>2]|0;k[g>>2]=j+1;i[j>>0]=-1;j=g+4|0;l=(k[j>>2]|0)+-1|0;k[j>>2]=l;if((l|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}g=k[h>>2]|0;l=k[g>>2]|0;k[g>>2]=l+1;i[l>>0]=0;l=g+4|0;j=(k[l>>2]|0)+-1|0;k[l>>2]=j;if((j|0)==0?(ub[k[g+12>>2]&63](a)|0)==0:0){g=k[a>>2]|0;k[g+20>>2]=25;qb[k[g>>2]&127](a)}g=(k[f>>2]|0)+-1|0;k[f>>2]=g}while((g|0)!=0)}}else{f=b+24|0;if((d|0)>-1){h=a+24|0;if(!(k[f>>2]|0))n=d;else{do{d=k[h>>2]|0;g=k[d>>2]|0;k[d>>2]=g+1;i[g>>0]=0;g=d+4|0;j=(k[g>>2]|0)+-1|0;k[g>>2]=j;if((j|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}d=(k[f>>2]|0)+-1|0;k[f>>2]=d}while((d|0)!=0);n=k[e>>2]|0}d=k[h>>2]|0;j=k[d>>2]|0;k[d>>2]=j+1;i[j>>0]=n+1;n=d+4|0;j=(k[n>>2]|0)+-1|0;k[n>>2]=j;if((j|0)==0?(ub[k[d+12>>2]&63](a)|0)==0:0){d=k[a>>2]|0;k[d+20>>2]=25;qb[k[d>>2]&127](a)}if(((k[e>>2]|0)==254?(e=k[h>>2]|0,h=k[e>>2]|0,k[e>>2]=h+1,i[h>>0]=0,h=e+4|0,d=(k[h>>2]|0)+-1|0,k[h>>2]=d,(d|0)==0):0)?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}}e=b+20|0;k[f>>2]=(k[f>>2]|0)+(k[e>>2]|0);k[e>>2]=0}e=k[c>>2]|0;if(!(e&134215680))return;f=b+24|0;b=a+24|0;if(!(k[f>>2]|0))o=e;else{do{e=k[b>>2]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=0;d=e+4|0;h=(k[d>>2]|0)+-1|0;k[d>>2]=h;if((h|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=(k[f>>2]|0)+-1|0;k[f>>2]=e}while((e|0)!=0);o=k[c>>2]|0}f=k[b>>2]|0;e=k[f>>2]|0;k[f>>2]=e+1;i[e>>0]=o>>>19;o=f+4|0;e=(k[o>>2]|0)+-1|0;k[o>>2]=e;if((e|0)==0?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}if(((k[c>>2]&133693440|0)==133693440?(f=k[b>>2]|0,e=k[f>>2]|0,k[f>>2]=e+1,i[e>>0]=0,e=f+4|0,o=(k[e>>2]|0)+-1|0,k[e>>2]=o,(o|0)==0):0)?(ub[k[f+12>>2]&63](a)|0)==0:0){f=k[a>>2]|0;k[f+20>>2]=25;qb[k[f>>2]&127](a)}f=k[c>>2]|0;if(!(f&522240))return;o=k[b>>2]|0;e=k[o>>2]|0;k[o>>2]=e+1;i[e>>0]=f>>>11;f=o+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;if((e|0)==0?(ub[k[o+12>>2]&63](a)|0)==0:0){o=k[a>>2]|0;k[o+20>>2]=25;qb[k[o>>2]&127](a)}if((k[c>>2]&522240|0)!=522240)return;c=k[b>>2]|0;b=k[c>>2]|0;k[c>>2]=b+1;i[b>>0]=0;b=c+4|0;o=(k[b>>2]|0)+-1|0;k[b>>2]=o;if(o)return;if(ub[k[c+12>>2]&63](a)|0)return;c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a);return}function Qm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;c=k[a+424>>2]|0;d=a+236|0;if(k[d>>2]|0){e=c+68|0;f=k[e>>2]|0;if(!f){g=c+72|0;Vm(a,k[g>>2]|0);h=k[d>>2]|0;k[e>>2]=h;k[g>>2]=(k[g>>2]|0)+1&7;i=h}else i=f;k[e>>2]=i+-1}i=a+320|0;if((k[i>>2]|0)<=0)return 1;e=a+376|0;f=0;do{h=k[a+324+(f<<2)>>2]|0;g=k[(k[a+296+(h<<2)>>2]|0)+20>>2]|0;d=j[k[b+(f<<2)>>2]>>1]>>k[e>>2];m=c+76+(g<<2)|0;n=k[m>>2]|0;o=c+52+(h<<2)|0;p=k[o>>2]|0;q=n+p|0;r=c+36+(h<<2)|0;h=k[r>>2]|0;s=d-h|0;if((d|0)!=(h|0)){k[r>>2]=d;Wm(a,q,1);if((s|0)>0){Wm(a,n+(p+1)|0,0);t=p+2|0;u=4;v=s}else{Wm(a,n+(p+1)|0,1);t=p+3|0;u=8;v=0-s|0}s=n+t|0;k[o>>2]=u;n=v+-1|0;if(n){Wm(a,s,1);p=(k[m>>2]|0)+20|0;m=n>>1;if(!m){w=1;x=p}else{d=m;m=1;r=p;while(1){Wm(a,r,1);p=m<<1;h=r+1|0;d=d>>1;if(!d){w=p;x=h;break}else{m=p;r=h}}}}else{w=0;x=s}Wm(a,x,0);if((w|0)>=(1<<l[a+152+g>>0]>>1|0)){if((w|0)>(1<<l[a+168+g>>0]>>1|0))k[o>>2]=(k[o>>2]|0)+8}else k[o>>2]=0;r=x+14|0;m=w>>1;if(m){d=m;do{Wm(a,r,(d&n|0)!=0&1);d=d>>1}while((d|0)!=0)}}else{Wm(a,q,0);k[o>>2]=0}f=f+1|0}while((f|0)<(k[i>>2]|0));return 1}function Rm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;c=k[a+424>>2]|0;d=a+236|0;if(k[d>>2]|0){e=c+68|0;f=k[e>>2]|0;if(!f){g=c+72|0;Vm(a,k[g>>2]|0);h=k[d>>2]|0;k[e>>2]=h;k[g>>2]=(k[g>>2]|0)+1&7;i=h}else i=f;k[e>>2]=i+-1}i=k[a+384>>2]|0;e=k[b>>2]|0;b=k[(k[a+296>>2]|0)+24>>2]|0;f=a+368|0;h=k[f>>2]|0;g=a+376|0;d=h;while(1){m=j[e+(k[i+(d<<2)>>2]<<1)>>1]|0;n=m<<16>>16;if(m<<16>>16>-1){if(n>>k[g>>2]){o=d;break}}else if(0-n>>k[g>>2]){o=d;break}d=d+-1|0;if(!d){o=0;break}}d=k[a+364>>2]|0;n=d+-1|0;if((d|0)>(o|0)){p=h;q=n}else{h=c+140+(b<<2)|0;d=c+204|0;m=a+184+b|0;r=n;while(1){n=(k[h>>2]|0)+(r*3|0)|0;Wm(a,n,0);s=r;t=n;while(1){n=s+1|0;u=j[e+(k[i+(n<<2)>>2]<<1)>>1]|0;v=u<<16>>16;if(u<<16>>16>-1){u=v>>k[g>>2];if(u){w=n;x=u;y=s;z=t;A=16;break}}else{u=0-v>>k[g>>2];if(u){B=n;C=u;D=s;E=t;A=18;break}}Wm(a,t+1|0,0);s=n;t=t+3|0}if((A|0)==16){A=0;Wm(a,z+1|0,1);Wm(a,d,0);F=w;G=y;H=z;I=x}else if((A|0)==18){A=0;Wm(a,E+1|0,1);Wm(a,d,1);F=B;G=D;H=E;I=C}t=H+2|0;s=I+-1|0;if(s){Wm(a,t,1);if(s>>>0>=2){Wm(a,t,1);n=(k[h>>2]|0)+((G|0)<(l[m>>0]|0|0)?189:217)|0;u=s>>2;if(!u){J=2;K=n}else{v=u;u=2;L=n;while(1){Wm(a,L,1);n=u<<1;M=L+1|0;v=v>>1;if(!v){J=n;K=M;break}else{u=n;L=M}}}}else{J=1;K=t}}else{J=0;K=t}Wm(a,K,0);L=K+14|0;u=J>>1;if(u){v=u;do{Wm(a,L,(v&s|0)!=0&1);v=v>>1}while((v|0)!=0)}if((F|0)<(o|0))r=F;else{N=F;break}}p=k[f>>2]|0;q=N}if((q|0)>=(p|0))return 1;Wm(a,(k[c+140+(b<<2)>>2]|0)+(q*3|0)|0,1);return 1}function Sm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;c=k[a+424>>2]|0;d=a+236|0;if(k[d>>2]|0){e=c+68|0;f=k[e>>2]|0;if(!f){g=c+72|0;Vm(a,k[g>>2]|0);h=k[d>>2]|0;k[e>>2]=h;k[g>>2]=(k[g>>2]|0)+1&7;i=h}else i=f;k[e>>2]=i+-1}i=c+204|0;c=k[a+376>>2]|0;e=a+320|0;if((k[e>>2]|0)>0)l=0;else return 1;do{Wm(a,i,(j[k[b+(l<<2)>>2]>>1]|0)>>>c&1);l=l+1|0}while((l|0)<(k[e>>2]|0));return 1}function Tm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;c=k[a+424>>2]|0;d=a+236|0;if(k[d>>2]|0){e=c+68|0;f=k[e>>2]|0;if(!f){g=c+72|0;Vm(a,k[g>>2]|0);h=k[d>>2]|0;k[e>>2]=h;k[g>>2]=(k[g>>2]|0)+1&7;i=h}else i=f;k[e>>2]=i+-1}i=k[a+384>>2]|0;e=k[b>>2]|0;b=k[(k[a+296>>2]|0)+24>>2]|0;f=a+368|0;h=k[f>>2]|0;g=a+376|0;d=h;while(1){l=j[e+(k[i+(d<<2)>>2]<<1)>>1]|0;m=l<<16>>16;if(l<<16>>16>-1){if(m>>k[g>>2]){n=d;o=10;break}}else if(0-m>>k[g>>2]){n=d;o=10;break}d=d+-1|0;if(!d){p=0;q=0;break}}a:do if((o|0)==10){d=a+372|0;if((n|0)>0){m=n;while(1){l=j[e+(k[i+(m<<2)>>2]<<1)>>1]|0;r=l<<16>>16;if(l<<16>>16>-1){if(r>>k[d>>2]){p=n;q=m;break a}}else if(0-r>>k[d>>2]){p=n;q=m;break a}r=m+-1|0;if((m|0)>1)m=r;else{p=n;q=r;break}}}else{p=n;q=n}}while(0);n=k[a+364>>2]|0;m=n+-1|0;if((n|0)>(p|0)){s=h;t=m}else{h=c+140+(b<<2)|0;n=c+204|0;d=m;while(1){m=(k[h>>2]|0)+(d*3|0)|0;if((d|0)<(q|0)){u=d;v=m}else{Wm(a,m,0);u=d;v=m}while(1){m=u+1|0;r=j[e+(k[i+(m<<2)>>2]<<1)>>1]|0;l=r<<16>>16;if(r<<16>>16>-1){r=l>>k[g>>2];if(r){w=m;x=r;y=v;o=21;break}}else{r=0-l>>k[g>>2];if(r){z=m;A=r;B=v;o=25;break}}Wm(a,v+1|0,0);u=m;v=v+3|0}do if((o|0)==21){o=0;if(x>>>0>1){Wm(a,y+2|0,x&1);C=w;break}else{Wm(a,y+1|0,1);Wm(a,n,0);C=w;break}}else if((o|0)==25){o=0;if(A>>>0>1){Wm(a,B+2|0,A&1);C=z;break}else{Wm(a,B+1|0,1);Wm(a,n,1);C=z;break}}while(0);if((C|0)<(p|0))d=C;else{D=C;break}}s=k[f>>2]|0;t=D}if((t|0)>=(s|0))return 1;Wm(a,(k[c+140+(b<<2)>>2]|0)+(t*3|0)|0,1);return 1}function Um(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;c=k[a+424>>2]|0;d=a+236|0;if(k[d>>2]|0){e=c+68|0;f=k[e>>2]|0;if(!f){g=c+72|0;Vm(a,k[g>>2]|0);h=k[d>>2]|0;k[e>>2]=h;k[g>>2]=(k[g>>2]|0)+1&7;i=h}else i=f;k[e>>2]=i+-1}i=k[a+384>>2]|0;e=a+320|0;if((k[e>>2]|0)<=0)return 1;f=a+388|0;h=c+204|0;g=0;do{d=k[b+(g<<2)>>2]|0;m=k[a+324+(g<<2)>>2]|0;n=k[a+296+(m<<2)>>2]|0;o=k[n+20>>2]|0;p=c+76+(o<<2)|0;q=k[p>>2]|0;r=c+52+(m<<2)|0;s=k[r>>2]|0;t=q+s|0;u=j[d>>1]|0;v=c+36+(m<<2)|0;m=k[v>>2]|0;w=u-m|0;if((u|0)!=(m|0)){k[v>>2]=u;Wm(a,t,1);if((w|0)>0){Wm(a,q+(s+1)|0,0);x=s+2|0;y=4;z=w}else{Wm(a,q+(s+1)|0,1);x=s+3|0;y=8;z=0-w|0}w=q+x|0;k[r>>2]=y;q=z+-1|0;if(q){Wm(a,w,1);s=(k[p>>2]|0)+20|0;p=q>>1;if(!p){A=1;B=s}else{u=p;p=1;v=s;while(1){Wm(a,v,1);s=p<<1;m=v+1|0;u=u>>1;if(!u){A=s;B=m;break}else{p=s;v=m}}}}else{A=0;B=w}Wm(a,B,0);if((A|0)>=(1<<l[a+152+o>>0]>>1|0)){if((A|0)>(1<<l[a+168+o>>0]>>1|0))k[r>>2]=(k[r>>2]|0)+8}else k[r>>2]=0;v=B+14|0;p=A>>1;if(p){u=p;do{Wm(a,v,(u&q|0)!=0&1);u=u>>1}while((u|0)!=0)}}else{Wm(a,t,0);k[r>>2]=0}u=k[f>>2]|0;if(u){q=k[n+24>>2]|0;v=u;while(1){if(j[d+(k[i+(v<<2)>>2]<<1)>>1]|0){C=v;D=25;break}v=v+-1|0;if(!v){E=u;F=0;break}}if((D|0)==25){D=0;if((C|0)>0){v=c+140+(q<<2)|0;n=a+184+q|0;r=0;while(1){t=k[v>>2]|0;o=r*3|0;w=t+o|0;Wm(a,w,0);p=r+1|0;m=j[d+(k[i+(p<<2)>>2]<<1)>>1]|0;s=m<<16>>16;G=t+(o+1)|0;if(!(m<<16>>16)){o=G;t=p;H=w;while(1){Wm(a,o,0);I=H+3|0;J=t+1|0;K=j[d+(k[i+(J<<2)>>2]<<1)>>1]|0;L=H+4|0;if(!(K<<16>>16)){o=L;t=J;H=I}else{M=t;N=I;O=J;P=K;Q=L;break}}R=O;S=P;T=P<<16>>16;U=Q;V=M;W=N}else{R=p;S=m;T=s;U=G;V=r;W=w}Wm(a,U,1);if(S<<16>>16>0){Wm(a,h,0);X=T}else{Wm(a,h,1);X=0-T|0}t=W+2|0;H=X+-1|0;if(H){Wm(a,t,1);if(H>>>0>=2){Wm(a,t,1);o=(k[v>>2]|0)+((V|0)<(l[n>>0]|0)?189:217)|0;L=H>>2;if(!L){Y=2;Z=o}else{K=L;L=2;J=o;while(1){Wm(a,J,1);o=L<<1;I=J+1|0;K=K>>1;if(!K){Y=o;Z=I;break}else{L=o;J=I}}}}else{Y=1;Z=t}}else{Y=0;Z=t}Wm(a,Z,0);J=Z+14|0;L=Y>>1;if(L){K=L;do{Wm(a,J,(K&H|0)!=0&1);K=K>>1}while((K|0)!=0)}if((R|0)<(C|0))r=R;else{_=R;break}}E=k[f>>2]|0;F=_}else{E=u;F=0}}if((F|0)<(E|0))Wm(a,(k[c+140+(q<<2)>>2]|0)+(F*3|0)|0,1)}g=g+1|0}while((g|0)<(k[e>>2]|0));return 1}function Vm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=k[a+424>>2]|0;Pm(a);d=a+24|0;e=k[d>>2]|0;f=k[e>>2]|0;k[e>>2]=f+1;i[f>>0]=-1;f=e+4|0;g=(k[f>>2]|0)+-1|0;k[f>>2]=g;if((g|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=k[d>>2]|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=b+208;b=e+4|0;d=(k[b>>2]|0)+-1|0;k[b>>2]=d;if((d|0)==0?(ub[k[e+12>>2]&63](a)|0)==0:0){e=k[a>>2]|0;k[e+20>>2]=25;qb[k[e>>2]&127](a)}e=a+292|0;if((k[e>>2]|0)<=0){h=c+12|0;k[h>>2]=0;j=c+16|0;k[j>>2]=65536;l=c+20|0;k[l>>2]=0;m=c+24|0;k[m>>2]=0;n=c+28|0;k[n>>2]=11;o=c+32|0;k[o>>2]=-1;return}d=a+364|0;b=a+372|0;g=a+368|0;f=0;do{p=k[a+296+(f<<2)>>2]|0;if((k[d>>2]|0)==0?(k[b>>2]|0)==0:0){q=k[c+76+(k[p+20>>2]<<2)>>2]|0;r=q+64|0;do{i[q>>0]=0;q=q+1|0}while((q|0)<(r|0));k[c+36+(f<<2)>>2]=0;k[c+52+(f<<2)>>2]=0}if(k[g>>2]|0)qr(k[c+140+(k[p+24>>2]<<2)>>2]|0,0,256)|0;f=f+1|0}while((f|0)<(k[e>>2]|0));h=c+12|0;k[h>>2]=0;j=c+16|0;k[j>>2]=65536;l=c+20|0;k[l>>2]=0;m=c+24|0;k[m>>2]=0;n=c+28|0;k[n>>2]=11;o=c+32|0;k[o>>2]=-1;return}function Wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=k[a+424>>2]|0;e=l[b>>0]|0;f=k[122136+((e&127)<<2)>>2]|0;g=f>>>8;h=f>>16;j=d+16|0;m=(k[j>>2]|0)-h|0;k[j>>2]=m;if((e>>>7|0)==(c|0)){if((m|0)>32767)return;if((m|0)<(h|0)){c=d+12|0;k[c>>2]=(k[c>>2]|0)+m;k[j>>2]=h}n=e&128^g}else{if((m|0)>=(h|0)){g=d+12|0;k[g>>2]=(k[g>>2]|0)+m;k[j>>2]=h}n=e&128^f}i[b>>0]=n;n=d+12|0;b=d+28|0;f=d+32|0;e=d+24|0;h=a+24|0;m=d+20|0;d=k[j>>2]|0;g=k[n>>2]|0;c=k[b>>2]|0;while(1){o=d<<1;k[j>>2]=o;p=g<<1;k[n>>2]=p;q=c+-1|0;k[b>>2]=q;if(!q){r=p>>19;do if((r|0)>255){s=k[f>>2]|0;if((s|0)>-1){if(!(k[e>>2]|0))t=s;else{do{s=k[h>>2]|0;u=k[s>>2]|0;k[s>>2]=u+1;i[u>>0]=0;u=s+4|0;v=(k[u>>2]|0)+-1|0;k[u>>2]=v;if((v|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=(k[e>>2]|0)+-1|0;k[e>>2]=s}while((s|0)!=0);t=k[f>>2]|0}s=k[h>>2]|0;v=k[s>>2]|0;k[s>>2]=v+1;i[v>>0]=t+1;v=s+4|0;u=(k[v>>2]|0)+-1|0;k[v>>2]=u;if((u|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}if(((k[f>>2]|0)==254?(s=k[h>>2]|0,u=k[s>>2]|0,k[s>>2]=u+1,i[u>>0]=0,u=s+4|0,v=(k[u>>2]|0)+-1|0,k[u>>2]=v,(v|0)==0):0)?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}}k[e>>2]=(k[e>>2]|0)+(k[m>>2]|0);k[m>>2]=0;k[f>>2]=r&255}else{if((r|0)==255){k[m>>2]=(k[m>>2]|0)+1;break}s=k[f>>2]|0;if(s){if((s|0)>-1){if(!(k[e>>2]|0))w=s;else{do{s=k[h>>2]|0;v=k[s>>2]|0;k[s>>2]=v+1;i[v>>0]=0;v=s+4|0;u=(k[v>>2]|0)+-1|0;k[v>>2]=u;if((u|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=(k[e>>2]|0)+-1|0;k[e>>2]=s}while((s|0)!=0);w=k[f>>2]|0}s=k[h>>2]|0;u=k[s>>2]|0;k[s>>2]=u+1;i[u>>0]=w;u=s+4|0;v=(k[u>>2]|0)+-1|0;k[u>>2]=v;if((v|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}}}else k[e>>2]=(k[e>>2]|0)+1;if(k[m>>2]|0){if(k[e>>2]|0)do{s=k[h>>2]|0;v=k[s>>2]|0;k[s>>2]=v+1;i[v>>0]=0;v=s+4|0;u=(k[v>>2]|0)+-1|0;k[v>>2]=u;if((u|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=(k[e>>2]|0)+-1|0;k[e>>2]=s}while((s|0)!=0);do{s=k[h>>2]|0;u=k[s>>2]|0;k[s>>2]=u+1;i[u>>0]=-1;u=s+4|0;v=(k[u>>2]|0)+-1|0;k[u>>2]=v;if((v|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=k[h>>2]|0;v=k[s>>2]|0;k[s>>2]=v+1;i[v>>0]=0;v=s+4|0;u=(k[v>>2]|0)+-1|0;k[v>>2]=u;if((u|0)==0?(ub[k[s+12>>2]&63](a)|0)==0:0){s=k[a>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](a)}s=(k[m>>2]|0)+-1|0;k[m>>2]=s}while((s|0)!=0)}k[f>>2]=r&255}while(0);r=k[n>>2]&524287;k[n>>2]=r;s=(k[b>>2]|0)+8|0;k[b>>2]=s;x=k[j>>2]|0;y=s;z=r}else{x=o;y=q;z=p}if((x|0)<32768){d=x;g=z;c=y}else break}return}function Xm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=a+4|0;d=nb[k[k[c>>2]>>2]&63](a,1,104)|0;k[a+404>>2]=d;k[d>>2]=17;if(!b){b=nb[k[(k[c>>2]|0)+4>>2]&63](a,1,1280)|0;k[d+24>>2]=b;k[d+28>>2]=b+128;k[d+32>>2]=b+256;k[d+36>>2]=b+384;k[d+40>>2]=b+512;k[d+44>>2]=b+640;k[d+48>>2]=b+768;k[d+52>>2]=b+896;k[d+56>>2]=b+1024;k[d+60>>2]=b+1152;k[d+64>>2]=0;return}b=a+76|0;if((k[b>>2]|0)<=0)return;e=d+64|0;d=0;f=k[a+84>>2]|0;while(1){g=k[(k[c>>2]|0)+20>>2]|0;h=qm(k[f+28>>2]|0,k[f+8>>2]|0)|0;i=f+12|0;j=qm(k[f+32>>2]|0,k[i>>2]|0)|0;l=sb[g&3](a,1,0,h,j,k[i>>2]|0)|0;k[e+(d<<2)>>2]=l;d=d+1|0;if((d|0)>=(k[b>>2]|0))break;else f=f+88|0}return}function Ym(a,b){a=a|0;b=b|0;var c=0,d=0;c=k[a+404>>2]|0;k[c+8>>2]=0;do if((k[a+292>>2]|0)<=1){d=k[a+296>>2]|0;if((k[a+288>>2]|0)==1){k[c+20>>2]=k[d+76>>2];break}else{k[c+20>>2]=k[d+12>>2];break}}else k[c+20>>2]=1;while(0);k[c+12>>2]=0;k[c+16>>2]=0;switch(b|0){case 0:{if(k[c+64>>2]|0){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a)}k[c+4>>2]=47;return}case 3:{if(!(k[c+64>>2]|0)){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a)}k[c+4>>2]=48;return}case 2:{if(!(k[c+64>>2]|0)){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a)}k[c+4>>2]=49;return}default:{c=k[a>>2]|0;k[c+20>>2]=3;qb[k[c>>2]&127](a);return}}}function Zm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;c=a+404|0;d=k[c>>2]|0;e=(k[a+312>>2]|0)+-1|0;f=a+288|0;g=(k[f>>2]|0)+-1|0;h=d+16|0;i=k[h>>2]|0;l=d+20|0;m=k[l>>2]|0;do if((i|0)<(m|0)){n=d+12|0;o=a+292|0;p=a+420|0;q=d+8|0;r=a+424|0;s=d+24|0;t=k[n>>2]|0;u=m;v=i;a:while(1){if(t>>>0>e>>>0)w=u;else{x=t;do{y=k[o>>2]|0;if((y|0)>0)if(x>>>0<e>>>0){z=y;A=0;B=0;while(1){C=k[a+296+(B<<2)>>2]|0;D=C+4|0;E=k[(k[p>>2]|0)+4+(k[D>>2]<<2)>>2]|0;F=C+56|0;G=k[F>>2]|0;H=ha(k[C+68>>2]|0,x)|0;I=C+40|0;J=C+60|0;if((k[J>>2]|0)>0){K=C+76|0;L=G;M=A;N=0;O=ha(k[I>>2]|0,v)|0;while(1){if((k[q>>2]|0)>>>0>=g>>>0?(N+v|0)>=(k[K>>2]|0):0){qr(k[d+24+(M<<2)>>2]|0,0,L<<7|0)|0;P=k[F>>2]|0;if((P|0)>0){Q=k[d+24+(M+-1<<2)>>2]|0;R=0;do{j[k[d+24+(R+M<<2)>>2]>>1]=j[Q>>1]|0;R=R+1|0}while((R|0)<(P|0))}}else S=13;if(((S|0)==13?(S=0,ob[E&15](a,C,k[b+(k[D>>2]<<2)>>2]|0,k[d+24+(M<<2)>>2]|0,O,H,G),P=k[F>>2]|0,(P|0)>(G|0)):0)?(qr(k[d+24+(M+G<<2)>>2]|0,0,P-G<<7|0)|0,P=k[F>>2]|0,(G|0)<(P|0)):0){R=G;do{Q=R+M|0;j[k[d+24+(Q<<2)>>2]>>1]=j[k[d+24+(Q+-1<<2)>>2]>>1]|0;R=R+1|0}while((R|0)<(P|0))}L=k[F>>2]|0;P=L+M|0;N=N+1|0;if((N|0)>=(k[J>>2]|0)){T=P;break}else{M=P;O=(k[I>>2]|0)+O|0}}U=k[o>>2]|0;V=T}else{U=z;V=A}B=B+1|0;if((B|0)>=(U|0))break;else{z=U;A=V}}}else{A=y;z=0;B=0;while(1){O=k[a+296+(B<<2)>>2]|0;I=O+4|0;M=k[(k[p>>2]|0)+4+(k[I>>2]<<2)>>2]|0;J=O+56|0;N=k[O+72>>2]|0;L=ha(k[O+68>>2]|0,x)|0;F=O+40|0;G=O+60|0;if((k[G>>2]|0)>0){H=O+76|0;D=z;C=0;E=ha(k[F>>2]|0,v)|0;while(1){if((k[q>>2]|0)>>>0>=g>>>0?(C+v|0)>=(k[H>>2]|0):0){qr(k[d+24+(D<<2)>>2]|0,0,k[J>>2]<<7|0)|0;K=k[J>>2]|0;if((K|0)>0){P=k[d+24+(D+-1<<2)>>2]|0;R=0;do{j[k[d+24+(R+D<<2)>>2]>>1]=j[P>>1]|0;R=R+1|0}while((R|0)<(K|0));W=K}else W=K}else{ob[M&15](a,O,k[b+(k[I>>2]<<2)>>2]|0,k[d+24+(D<<2)>>2]|0,E,L,N);R=k[J>>2]|0;if((R|0)>(N|0)){qr(k[d+24+(D+N<<2)>>2]|0,0,R-N<<7|0)|0;P=k[J>>2]|0;if((N|0)<(P|0)){Q=N;do{X=Q+D|0;j[k[d+24+(X<<2)>>2]>>1]=j[k[d+24+(X+-1<<2)>>2]>>1]|0;Q=Q+1|0}while((Q|0)<(P|0));W=P}else W=P}else W=R}Q=W+D|0;C=C+1|0;if((C|0)>=(k[G>>2]|0)){Y=Q;break}else{D=Q;E=(k[F>>2]|0)+E|0}}Z=k[o>>2]|0;_=Y}else{Z=A;_=z}B=B+1|0;if((B|0)>=(Z|0))break;else{A=Z;z=_}}}if(!(yb[k[(k[r>>2]|0)+4>>2]&127](a,s)|0)){$=x;aa=v;break a}x=x+1|0}while(x>>>0<=e>>>0);w=k[l>>2]|0}k[n>>2]=0;v=v+1|0;if((v|0)>=(w|0)){S=38;break}else{t=0;u=w}}if((S|0)==38){ba=o;ca=q;da=k[c>>2]|0;break}k[h>>2]=aa;k[n>>2]=$;ea=0;return ea|0}else{ba=a+292|0;ca=d+8|0;da=d}while(0);k[ca>>2]=(k[ca>>2]|0)+1;do if((k[ba>>2]|0)<=1){ca=k[a+296>>2]|0;if((k[da+8>>2]|0)>>>0<((k[f>>2]|0)+-1|0)>>>0){k[da+20>>2]=k[ca+12>>2];break}else{k[da+20>>2]=k[ca+76>>2];break}}else k[da+20>>2]=1;while(0);k[da+12>>2]=0;k[da+16>>2]=0;ea=1;return ea|0}function _m(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;c=k[a+404>>2]|0;d=(k[a+288>>2]|0)+-1|0;e=a+76|0;if((k[e>>2]|0)<=0){f=$m(a,b)|0;return f|0}g=a+4|0;h=c+8|0;i=a+420|0;l=0;m=k[a+84>>2]|0;while(1){n=m+12|0;o=k[n>>2]|0;p=ha(o,k[h>>2]|0)|0;q=zb[k[(k[g>>2]|0)+32>>2]&3](a,k[c+64+(l<<2)>>2]|0,p,o,1)|0;o=k[h>>2]|0;if(o>>>0<d>>>0)r=k[n>>2]|0;else{p=k[n>>2]|0;s=((k[m+32>>2]|0)>>>0)%(p>>>0)|0;r=(s|0)==0?p:s}s=k[m+28>>2]|0;p=k[m+8>>2]|0;t=(s>>>0)%(p>>>0)|0;u=(t|0)>0?p-t|0:t;t=k[(k[i>>2]|0)+4+(l<<2)>>2]|0;if((r|0)>0){v=b+(l<<2)|0;w=m+40|0;x=(u|0)>0;y=u<<7;z=s+-1|0;A=0;do{B=k[q+(A<<2)>>2]|0;C=ha(k[w>>2]|0,A)|0;ob[t&15](a,m,k[v>>2]|0,B,C,0,s);if(x){qr(B+(s<<7)|0,0,y|0)|0;C=j[B+(z<<7)>>1]|0;D=0;do{j[B+(D+s<<7)>>1]=C;D=D+1|0}while((D|0)!=(u|0))}A=A+1|0}while((A|0)!=(r|0));E=k[h>>2]|0}else E=o;if((E|0)==(d|0)?(A=u+s|0,z=(A>>>0)/(p>>>0)|0,(r|0)<(k[n>>2]|0)):0){y=A<<7;A=(z|0)==0;x=p+-1|0;v=(p|0)>0;t=r;do{w=k[q+(t<<2)>>2]|0;D=k[q+(t+-1<<2)>>2]|0;qr(w|0,0,y|0)|0;if(!A){C=0;B=D;D=w;while(1){w=j[B+(x<<7)>>1]|0;if(v){F=0;do{j[D+(F<<7)>>1]=w;F=F+1|0}while((F|0)!=(p|0))}C=C+1|0;if(C>>>0>=z>>>0)break;else{B=B+(p<<7)|0;D=D+(p<<7)|0}}}t=t+1|0}while((t|0)<(k[n>>2]|0))}l=l+1|0;if((l|0)>=(k[e>>2]|0))break;else m=m+88|0}f=$m(a,b)|0;return f|0}function $m(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;b=r;r=r+16|0;c=b;d=a+404|0;e=k[d>>2]|0;f=a+292|0;g=k[f>>2]|0;if((g|0)>0){h=a+4|0;i=e+8|0;j=0;do{l=k[a+296+(j<<2)>>2]|0;m=k[l+12>>2]|0;n=ha(m,k[i>>2]|0)|0;o=zb[k[(k[h>>2]|0)+32>>2]&3](a,k[e+64+(k[l+4>>2]<<2)>>2]|0,n,m,0)|0;k[c+(j<<2)>>2]=o;j=j+1|0;o=k[f>>2]|0}while((j|0)<(o|0));p=o}else p=g;g=e+16|0;j=k[g>>2]|0;h=e+20|0;i=k[h>>2]|0;do if((j|0)<(i|0)){o=e+12|0;m=a+312|0;n=a+424|0;l=e+24|0;q=i;s=k[o>>2]|0;t=k[m>>2]|0;u=j;a:while(1){if(s>>>0<t>>>0){v=s;while(1){w=k[f>>2]|0;if((w|0)>0){x=0;y=0;while(1){z=k[a+296+(y<<2)>>2]|0;A=k[z+56>>2]|0;B=ha(A,v)|0;C=k[z+60>>2]|0;if((C|0)>0){z=k[c+(y<<2)>>2]|0;D=(A|0)>0;E=(A|0)>1?A:1;F=x;G=0;while(1){if(D){H=F;I=(k[z+(G+u<<2)>>2]|0)+(B<<7)|0;J=0;while(1){k[e+24+(H<<2)>>2]=I;J=J+1|0;if((J|0)>=(A|0))break;else{H=H+1|0;I=I+128|0}}K=F+E|0}else K=F;G=G+1|0;if((G|0)>=(C|0)){L=K;break}else F=K}}else L=x;y=y+1|0;if((y|0)>=(w|0))break;else x=L}}if(!(yb[k[(k[n>>2]|0)+4>>2]&127](a,l)|0)){M=v;N=u;break a}v=v+1|0;x=k[m>>2]|0;if(v>>>0>=x>>>0){O=x;break}}P=O;Q=k[h>>2]|0}else{P=t;Q=q}k[o>>2]=0;u=u+1|0;if((u|0)>=(Q|0)){R=21;break}else{q=Q;s=0;t=P}}if((R|0)==21){S=k[f>>2]|0;break}k[g>>2]=N;k[o>>2]=M;T=0;r=b;return T|0}else S=p;while(0);p=e+8|0;k[p>>2]=(k[p>>2]|0)+1;p=k[d>>2]|0;do if((S|0)<=1){d=k[a+296>>2]|0;if((k[p+8>>2]|0)>>>0<((k[a+288>>2]|0)+-1|0)>>>0){k[p+20>>2]=k[d+12>>2];break}else{k[p+20>>2]=k[d+76>>2];break}}else k[p+20>>2]=1;while(0);k[p+12>>2]=0;k[p+16>>2]=0;T=1;r=b;return T|0}function an(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=nb[k[k[a+4>>2]>>2]&63](a,1,12)|0;k[a+412>>2]=b;k[b>>2]=58;c=a+40|0;switch(k[c>>2]|0){case 1:{if((k[a+36>>2]|0)!=1){d=k[a>>2]|0;k[d+20>>2]=10;qb[k[d>>2]&127](a)}break}case 6:case 2:{if((k[a+36>>2]|0)!=3){d=k[a>>2]|0;k[d+20>>2]=10;qb[k[d>>2]&127](a)}break}case 7:case 3:{if((k[a+36>>2]|0)!=3){d=k[a>>2]|0;k[d+20>>2]=10;qb[k[d>>2]&127](a)}break}case 5:case 4:{if((k[a+36>>2]|0)!=4){d=k[a>>2]|0;k[d+20>>2]=10;qb[k[d>>2]&127](a)}break}default:if((k[a+36>>2]|0)<1){d=k[a>>2]|0;k[d+20>>2]=10;qb[k[d>>2]&127](a)}}d=a+260|0;e=a+80|0;a:do if(k[d>>2]|0){switch(k[e>>2]|0){case 6:case 2:{break a;break}default:{}}f=k[a>>2]|0;k[f+20>>2]=28;qb[k[f>>2]&127](a)}while(0);f=k[e>>2]|0;switch(f|0){case 1:{if((k[a+76>>2]|0)!=1){g=k[a>>2]|0;k[g+20>>2]=11;qb[k[g>>2]&127](a)}switch(k[c>>2]|0){case 7:case 3:case 1:{k[b+4>>2]=2;return}case 2:{k[b>>2]=59;k[b+4>>2]=3;return}default:{g=k[a>>2]|0;k[g+20>>2]=28;qb[k[g>>2]&127](a);return}}break}case 6:case 2:{if((k[a+76>>2]|0)==3)h=f;else{g=k[a>>2]|0;k[g+20>>2]=11;qb[k[g>>2]&127](a);h=k[e>>2]|0}if((k[c>>2]|0)!=(h|0)){h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);return}switch(k[d>>2]|0){case 0:{k[b+4>>2]=4;return}case 1:{k[b+4>>2]=5;return}default:{d=k[a>>2]|0;k[d+20>>2]=28;qb[k[d>>2]&127](a);return}}break}case 3:{if((k[a+76>>2]|0)!=3){d=k[a>>2]|0;k[d+20>>2]=11;qb[k[d>>2]&127](a)}switch(k[c>>2]|0){case 2:{k[b>>2]=59;k[b+4>>2]=6;return}case 3:{k[b+4>>2]=7;return}default:{d=k[a>>2]|0;k[d+20>>2]=28;qb[k[d>>2]&127](a);return}}break}case 7:{if((k[a+76>>2]|0)!=3){d=k[a>>2]|0;k[d+20>>2]=11;qb[k[d>>2]&127](a)}switch(k[c>>2]|0){case 2:{d=k[a+84>>2]|0;k[d+140>>2]=1;k[d+228>>2]=1;k[b>>2]=59;k[b+4>>2]=6;return}case 3:{d=k[a+84>>2]|0;k[d+140>>2]=1;k[d+228>>2]=1;break}case 7:break;default:{d=k[a>>2]|0;k[d+20>>2]=28;qb[k[d>>2]&127](a);return}}k[b+4>>2]=7;return}case 4:{if((k[a+76>>2]|0)!=4){d=k[a>>2]|0;k[d+20>>2]=11;qb[k[d>>2]&127](a)}if((k[c>>2]|0)==4){k[b+4>>2]=7;return}else{d=k[a>>2]|0;k[d+20>>2]=28;qb[k[d>>2]&127](a);return}break}case 5:{if((k[a+76>>2]|0)!=4){d=k[a>>2]|0;k[d+20>>2]=11;qb[k[d>>2]&127](a)}switch(k[c>>2]|0){case 4:{k[b>>2]=59;k[b+4>>2]=8;return}case 5:{k[b+4>>2]=7;return}default:{d=k[a>>2]|0;k[d+20>>2]=28;qb[k[d>>2]&127](a);return}}break}default:{if(!((f|0)==(k[c>>2]|0)?(k[a+76>>2]|0)==(k[a+36>>2]|0):0)){c=k[a>>2]|0;k[c+20>>2]=28;qb[k[c>>2]&127](a)}k[b+4>>2]=7;return}}}function bn(a){a=a|0;return}function cn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0;f=k[a+36>>2]|0;g=k[a+28>>2]|0;if((e|0)<1|(g|0)==0)return;else{h=d;j=b;l=e}do{e=l;l=l+-1|0;b=j;j=j+4|0;d=k[(k[c>>2]|0)+(h<<2)>>2]|0;h=h+1|0;a=0;m=k[b>>2]|0;while(1){i[d+a>>0]=i[m>>0]|0;a=a+1|0;if((a|0)==(g|0))break;else m=m+f|0}}while((e|0)>1);return}function dn(a){a=a|0;var b=0,c=0;b=k[a+412>>2]|0;c=nb[k[k[a+4>>2]>>2]&63](a,1,8192)|0;k[b+8>>2]=c;b=0;do{k[c+(b<<2)>>2]=b*19595;k[c+(b+256<<2)>>2]=b*38470;k[c+(b+512<<2)>>2]=(b*7471|0)+32768;a=ha(b,-11058)|0;k[c+(b+768<<2)>>2]=a;a=ha(b,-21710)|0;k[c+(b+1024<<2)>>2]=a;k[c+(b+1280<<2)>>2]=(b<<15)+8421375;a=ha(b,-27439)|0;k[c+(b+1536<<2)>>2]=a;a=ha(b,-5329)|0;k[c+(b+1792<<2)>>2]=a;b=b+1|0}while((b|0)!=256);return}function en(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0;f=k[(k[a+412>>2]|0)+8>>2]|0;g=k[a+28>>2]|0;if((e|0)<1|(g|0)==0)return;else{h=d;j=b;m=e}do{e=m;m=m+-1|0;b=j;j=j+4|0;d=k[(k[c>>2]|0)+(h<<2)>>2]|0;h=h+1|0;a=0;n=k[b>>2]|0;while(1){i[d+a>>0]=((k[f+((l[n+1>>0]|0|256)<<2)>>2]|0)+(k[f+((l[n>>0]|0)<<2)>>2]|0)+(k[f+((l[n+2>>0]|0|512)<<2)>>2]|0)|0)>>>16;a=a+1|0;if((a|0)==(g|0))break;else n=n+3|0}}while((e|0)>1);return}function fn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;f=k[a+28>>2]|0;if((e|0)<=0)return;a=c+4|0;g=c+8|0;if(!f)return;else{h=d;j=b;l=e}do{e=l;l=l+-1|0;b=j;j=j+4|0;d=k[(k[c>>2]|0)+(h<<2)>>2]|0;m=k[(k[a>>2]|0)+(h<<2)>>2]|0;n=k[(k[g>>2]|0)+(h<<2)>>2]|0;h=h+1|0;o=0;p=k[b>>2]|0;while(1){i[d+o>>0]=i[p>>0]|0;i[m+o>>0]=i[p+1>>0]|0;i[n+o>>0]=i[p+2>>0]|0;o=o+1|0;if((o|0)==(f|0))break;else p=p+3|0}}while((e|0)>1);return}function gn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;f=k[a+28>>2]|0;if((e|0)<=0)return;a=c+4|0;g=c+8|0;if(!f)return;else{h=d;j=b;m=e}do{e=m;m=m+-1|0;b=j;j=j+4|0;d=k[(k[c>>2]|0)+(h<<2)>>2]|0;n=k[(k[a>>2]|0)+(h<<2)>>2]|0;o=k[(k[g>>2]|0)+(h<<2)>>2]|0;h=h+1|0;p=0;q=k[b>>2]|0;while(1){b=i[q+1>>0]|0;r=b&255;s=l[q+2>>0]|0;i[d+p>>0]=(l[q>>0]|0)+128-r;i[n+p>>0]=b;i[o+p>>0]=128-r+s;p=p+1|0;if((p|0)==(f|0))break;else q=q+3|0}}while((e|0)>1);return}function hn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;f=k[(k[a+412>>2]|0)+8>>2]|0;g=k[a+28>>2]|0;if((e|0)<=0)return;a=c+4|0;h=c+8|0;j=(g|0)==0;m=d;d=b;b=e;do{e=b;b=b+-1|0;n=d;d=d+4|0;o=k[(k[c>>2]|0)+(m<<2)>>2]|0;p=k[(k[a>>2]|0)+(m<<2)>>2]|0;q=k[(k[h>>2]|0)+(m<<2)>>2]|0;m=m+1|0;if(!j){r=0;s=k[n>>2]|0;while(1){n=l[s>>0]|0;t=l[s+1>>0]|0;u=l[s+2>>0]|0;i[o+r>>0]=((k[f+((t|256)<<2)>>2]|0)+(k[f+(n<<2)>>2]|0)+(k[f+((u|512)<<2)>>2]|0)|0)>>>16;i[p+r>>0]=((k[f+((t|1024)<<2)>>2]|0)+(k[f+((n|768)<<2)>>2]|0)+(k[f+((u|1280)<<2)>>2]|0)|0)>>>16;i[q+r>>0]=((k[f+((t|1536)<<2)>>2]|0)+(k[f+((n|1280)<<2)>>2]|0)+(k[f+((u|1792)<<2)>>2]|0)|0)>>>16;r=r+1|0;if((r|0)==(g|0))break;else s=s+3|0}}}while((e|0)>1);return}function jn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;f=k[a+76>>2]|0;g=k[a+28>>2]|0;if((e|0)<=0)return;a=(f|0)>0;h=(g|0)==0;j=b;b=d;d=e;while(1){e=d;d=d+-1|0;if(a){l=0;do{if(!h){m=0;n=(k[j>>2]|0)+l|0;o=k[(k[c+(l<<2)>>2]|0)+(b<<2)>>2]|0;while(1){i[o>>0]=i[n>>0]|0;m=m+1|0;if((m|0)==(g|0))break;else{n=n+f|0;o=o+1|0}}}l=l+1|0}while((l|0)!=(f|0))}if((e|0)<=1)break;else{j=j+4|0;b=b+1|0}}return}function kn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=k[(k[a+412>>2]|0)+8>>2]|0;g=k[a+28>>2]|0;if((e|0)<=0)return;a=c+4|0;h=c+8|0;j=c+12|0;m=(g|0)==0;n=d;d=b;b=e;do{e=b;b=b+-1|0;o=d;d=d+4|0;p=k[(k[c>>2]|0)+(n<<2)>>2]|0;q=k[(k[a>>2]|0)+(n<<2)>>2]|0;r=k[(k[h>>2]|0)+(n<<2)>>2]|0;s=k[(k[j>>2]|0)+(n<<2)>>2]|0;n=n+1|0;if(!m){t=0;u=k[o>>2]|0;while(1){o=(l[u>>0]|0)^255;v=(l[u+1>>0]|0)^255;w=(l[u+2>>0]|0)^255;i[s+t>>0]=i[u+3>>0]|0;i[p+t>>0]=((k[f+((v|256)<<2)>>2]|0)+(k[f+(o<<2)>>2]|0)+(k[f+((w|512)<<2)>>2]|0)|0)>>>16;i[q+t>>0]=((k[f+((v|1024)<<2)>>2]|0)+(k[f+((o|768)<<2)>>2]|0)+(k[f+((w|1280)<<2)>>2]|0)|0)>>>16;i[r+t>>0]=((k[f+((v|1536)<<2)>>2]|0)+(k[f+((o|1280)<<2)>>2]|0)+(k[f+((w|1792)<<2)>>2]|0)|0)>>>16;t=t+1|0;if((t|0)==(g|0))break;else u=u+4|0}}}while((e|0)>1);return}function ln(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,124)|0;k[a+420>>2]=c;k[c>>2]=60;c=a+76|0;if((k[c>>2]|0)<=0)return;d=0;e=k[a+84>>2]|0;while(1){f=nb[k[k[b>>2]>>2]&63](a,1,256)|0;k[e+84>>2]=f;d=d+1|0;if((d|0)>=(k[c>>2]|0))break;else e=e+88|0}return}function mn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,q=0,r=0,s=0,t=0.0,u=0.0;b=k[a+420>>2]|0;c=a+76|0;if((k[c>>2]|0)<=0)return;d=a+232|0;e=0;f=k[a+84>>2]|0;g=0;while(1){h=k[f+36>>2]|0;i=f+40|0;a:do switch((h<<8)+(k[i>>2]|0)|0){case 257:{k[b+44+(e<<2)>>2]=45;l=0;break}case 514:{k[b+44+(e<<2)>>2]=46;l=0;break}case 771:{k[b+44+(e<<2)>>2]=47;l=0;break}case 1028:{k[b+44+(e<<2)>>2]=48;l=0;break}case 1285:{k[b+44+(e<<2)>>2]=49;l=0;break}case 1542:{k[b+44+(e<<2)>>2]=50;l=0;break}case 1799:{k[b+44+(e<<2)>>2]=51;l=0;break}case 2313:{k[b+44+(e<<2)>>2]=52;l=0;break}case 2570:{k[b+44+(e<<2)>>2]=53;l=0;break}case 2827:{k[b+44+(e<<2)>>2]=54;l=0;break}case 3084:{k[b+44+(e<<2)>>2]=55;l=0;break}case 3341:{k[b+44+(e<<2)>>2]=56;l=0;break}case 3598:{k[b+44+(e<<2)>>2]=57;l=0;break}case 3855:{k[b+44+(e<<2)>>2]=58;l=0;break}case 4112:{k[b+44+(e<<2)>>2]=59;l=0;break}case 4104:{k[b+44+(e<<2)>>2]=60;l=0;break}case 3591:{k[b+44+(e<<2)>>2]=61;l=0;break}case 3078:{k[b+44+(e<<2)>>2]=62;l=0;break}case 2565:{k[b+44+(e<<2)>>2]=63;l=0;break}case 2052:{k[b+44+(e<<2)>>2]=64;l=0;break}case 1539:{k[b+44+(e<<2)>>2]=65;l=0;break}case 1026:{k[b+44+(e<<2)>>2]=66;l=0;break}case 513:{k[b+44+(e<<2)>>2]=67;l=0;break}case 2064:{k[b+44+(e<<2)>>2]=68;l=0;break}case 1806:{k[b+44+(e<<2)>>2]=69;l=0;break}case 1548:{k[b+44+(e<<2)>>2]=70;l=0;break}case 1290:{k[b+44+(e<<2)>>2]=71;l=0;break}case 1032:{k[b+44+(e<<2)>>2]=72;l=0;break}case 774:{k[b+44+(e<<2)>>2]=73;l=0;break}case 516:{k[b+44+(e<<2)>>2]=74;l=0;break}case 258:{k[b+44+(e<<2)>>2]=75;l=0;break}case 2056:{switch(k[d>>2]|0){case 0:{k[b+44+(e<<2)>>2]=76;l=0;break a;break}case 1:{k[b+44+(e<<2)>>2]=77;l=1;break a;break}case 2:{k[b+84+(e<<2)>>2]=78;l=2;break a;break}default:{n=k[a>>2]|0;k[n+20>>2]=49;qb[k[n>>2]&127](a);l=g;break a}}break}default:{n=k[a>>2]|0;k[n+20>>2]=7;k[n+24>>2]=h;k[n+28>>2]=k[i>>2];qb[k[n>>2]&127](a);l=g}}while(0);i=k[f+16>>2]|0;h=a+88+(i<<2)|0;if(i>>>0<=3?(n=k[h>>2]|0,(n|0)!=0):0)q=n;else{n=k[a>>2]|0;k[n+20>>2]=54;k[n+24>>2]=i;qb[k[n>>2]&127](a);q=k[h>>2]|0}switch(l|0){case 0:{h=k[f+84>>2]|0;n=(k[f+52>>2]|0)!=0?4:3;i=0;do{k[h+(i<<2)>>2]=m[q+(i<<1)>>1]<<n;i=i+1|0}while((i|0)!=64);k[b+4+(e<<2)>>2]=9;break}case 1:{i=k[f+84>>2]|0;n=(k[f+52>>2]|0)!=0?10:11;h=1<<n+-1;r=0;do{s=h+(ha(j[128808+(r<<1)>>1]|0,m[q+(r<<1)>>1]|0)|0)>>n;k[i+(r<<2)>>2]=s;r=r+1|0}while((r|0)!=64);k[b+4+(e<<2)>>2]=9;break}case 2:{r=k[f+84>>2]|0;t=(k[f+52>>2]|0)!=0?16.0:8.0;i=0;n=0;while(1){u=+p[8+(n<<3)>>3];o[r+(i<<2)>>2]=1.0/(+(m[q+(i<<1)>>1]|0)*u*t);h=i|1;o[r+(h<<2)>>2]=1.0/(+(m[q+(h<<1)>>1]|0)*u*1.387039845*t);s=h+1|0;o[r+(s<<2)>>2]=1.0/(+(m[q+(s<<1)>>1]|0)*u*1.306562965*t);s=i|3;o[r+(s<<2)>>2]=1.0/(+(m[q+(s<<1)>>1]|0)*u*1.175875602*t);h=s+1|0;o[r+(h<<2)>>2]=1.0/(+(m[q+(h<<1)>>1]|0)*u*t);h=s+2|0;o[r+(h<<2)>>2]=1.0/(+(m[q+(h<<1)>>1]|0)*u*.785694958*t);h=s+3|0;o[r+(h<<2)>>2]=1.0/(+(m[q+(h<<1)>>1]|0)*u*.5411961*t);h=i|7;o[r+(h<<2)>>2]=1.0/(+(m[q+(h<<1)>>1]|0)*u*.275899379*t);n=n+1|0;if((n|0)==8)break;else i=i+8|0}k[b+4+(e<<2)>>2]=10;break}default:{i=k[a>>2]|0;k[i+20>>2]=49;qb[k[i>>2]&127](a)}}e=e+1|0;if((e|0)>=(k[c>>2]|0))break;else{f=f+88|0;g=l}}return}function nn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;h=r;r=r+256|0;i=h;l=k[(k[a+420>>2]|0)+44+(k[b+4>>2]<<2)>>2]|0;a=k[b+84>>2]|0;m=c+(e<<2)|0;if(!g){r=h;return}e=b+36|0;b=f;f=0;while(1){vb[l&127](i,m,b);c=0;do{n=k[a+(c<<2)>>2]|0;o=k[i+(c<<2)>>2]|0;p=n>>1;if((o|0)>=0){q=o+p|0;if((q|0)<(n|0))s=0;else s=(q|0)/(n|0)|0}else{q=p-o|0;if((q|0)<(n|0))t=0;else t=(q|0)/(n|0)|0;s=0-t|0}j[d+(f<<7)+(c<<1)>>1]=s;c=c+1|0}while((c|0)!=64);f=f+1|0;if((f|0)==(g|0))break;else b=(k[e>>2]|0)+b|0}r=h;return}function on(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,l=0,m=0;h=r;r=r+256|0;i=h;l=k[(k[a+420>>2]|0)+84+(k[b+4>>2]<<2)>>2]|0;a=k[b+84>>2]|0;m=c+(e<<2)|0;if(!g){r=h;return}e=b+36|0;b=f;f=0;while(1){vb[l&127](i,m,b);c=0;do{j[d+(f<<7)+(c<<1)>>1]=~~(+o[i+(c<<2)>>2]*+o[a+(c<<2)>>2]+16384.5)+49152;c=c+1|0}while((c|0)!=64);f=f+1|0;if((f|0)==(g|0))break;else b=(k[e>>2]|0)+b|0}r=h;return}function pn(a){a=a|0;var b=0;b=nb[k[k[a+4>>2]>>2]&63](a,1,140)|0;k[a+424>>2]=b;k[b>>2]=18;k[b+60>>2]=0;k[b+44>>2]=0;k[b+92>>2]=0;k[b+76>>2]=0;k[b+64>>2]=0;k[b+48>>2]=0;k[b+96>>2]=0;k[b+80>>2]=0;k[b+68>>2]=0;k[b+52>>2]=0;k[b+100>>2]=0;k[b+84>>2]=0;k[b+72>>2]=0;k[b+56>>2]=0;k[b+104>>2]=0;k[b+88>>2]=0;if(!(k[a+268>>2]|0))return;k[b+136>>2]=0;return}function qn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;c=k[a+424>>2]|0;d=(b|0)!=0;k[c+8>>2]=d?61:62;do if(!(k[a+268>>2]|0)){e=c+4|0;if(d){k[e>>2]=54;break}else{k[e>>2]=55;break}}else{k[c+120>>2]=a;k[c+108>>2]=b;e=(k[a+364>>2]|0)==0;f=c+4|0;do if(!(k[a+372>>2]|0))if(e){k[f>>2]=50;break}else{k[f>>2]=51;break}else{if(e){k[f>>2]=52;break}k[f>>2]=53;g=c+136|0;if(!(k[g>>2]|0)){h=nb[k[k[a+4>>2]>>2]&63](a,1,1e3)|0;k[g>>2]=h}}while(0);k[c+124>>2]=k[(k[a+296>>2]|0)+24>>2];k[c+128>>2]=0;k[c+132>>2]=0}while(0);b=a+292|0;if((k[b>>2]|0)<=0){i=c+12|0;k[i>>2]=0;j=c+16|0;k[j>>2]=0;l=a+236|0;m=k[l>>2]|0;n=c+36|0;k[n>>2]=m;o=c+40|0;k[o>>2]=0;return}f=a+364|0;e=a+372|0;h=a+4|0;g=a+368|0;if(d)p=0;else{d=0;do{q=k[a+296+(d<<2)>>2]|0;if((k[f>>2]|0)==0?(k[e>>2]|0)==0:0){r=k[q+20>>2]|0;zn(a,1,r,c+44+(r<<2)|0);k[c+20+(d<<2)>>2]=0}if(k[g>>2]|0){r=k[q+24>>2]|0;zn(a,0,r,c+60+(r<<2)|0)}d=d+1|0}while((d|0)<(k[b>>2]|0));i=c+12|0;k[i>>2]=0;j=c+16|0;k[j>>2]=0;l=a+236|0;m=k[l>>2]|0;n=c+36|0;k[n>>2]=m;o=c+40|0;k[o>>2]=0;return}do{d=k[a+296+(p<<2)>>2]|0;if((k[f>>2]|0)==0?(k[e>>2]|0)==0:0){r=k[d+20>>2]|0;if(r>>>0>3){q=k[a>>2]|0;k[q+20>>2]=52;k[q+24>>2]=r;qb[k[q>>2]&127](a)}q=c+76+(r<<2)|0;r=k[q>>2]|0;if(!r){s=nb[k[k[h>>2]>>2]&63](a,1,1028)|0;k[q>>2]=s;t=s}else t=r;qr(t|0,0,1028)|0;k[c+20+(p<<2)>>2]=0}if(k[g>>2]|0){r=k[d+24>>2]|0;if(r>>>0>3){d=k[a>>2]|0;k[d+20>>2]=52;k[d+24>>2]=r;qb[k[d>>2]&127](a)}d=c+92+(r<<2)|0;r=k[d>>2]|0;if(!r){s=nb[k[k[h>>2]>>2]&63](a,1,1028)|0;k[d>>2]=s;u=s}else u=r;qr(u|0,0,1028)|0}p=p+1|0}while((p|0)<(k[b>>2]|0));i=c+12|0;k[i>>2]=0;j=c+16|0;k[j>>2]=0;l=a+236|0;m=k[l>>2]|0;n=c+36|0;k[n>>2]=m;o=c+40|0;k[o>>2]=0;return}function rn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;b=r;r=r+32|0;c=b+16|0;d=b;e=k[a+424>>2]|0;if((k[a+268>>2]|0)!=0?(f=e+128|0,g=k[f>>2]|0,(g|0)!=0):0){h=0;j=g;while(1){j=j>>1;if(!j){m=h;break}else h=h+1|0}if((m|0)>14){h=k[e+120>>2]|0;j=k[h>>2]|0;k[j+20>>2]=41;qb[k[j>>2]&127](h)}h=k[e+124>>2]|0;j=m<<4;g=e+108|0;do if(!(k[g>>2]|0)){n=k[e+60+(h<<2)>>2]|0;o=k[n+(j<<2)>>2]|0;p=i[n+1024+j>>0]|0;n=p<<24>>24;if(p<<24>>24==0?(p=k[e+120>>2]|0,q=k[p>>2]|0,k[q+20>>2]=41,qb[k[q>>2]&127](p),(k[g>>2]|0)!=0):0)break;p=e+16|0;q=(k[p>>2]|0)+n|0;s=e+12|0;t=((1<<n)+-1&o)<<24-q|k[s>>2];if((q|0)>7){o=e+112|0;n=e+116|0;u=e+120|0;v=q;w=t;while(1){x=w>>>16;y=x&255;z=k[o>>2]|0;k[o>>2]=z+1;i[z>>0]=x;x=(k[n>>2]|0)+-1|0;k[n>>2]=x;if(!x){x=k[u>>2]|0;z=k[x+24>>2]|0;if(!(ub[k[z+12>>2]&63](x)|0)){x=k[u>>2]|0;A=k[x>>2]|0;k[A+20>>2]=25;qb[k[A>>2]&127](x)}k[o>>2]=k[z>>2];k[n>>2]=k[z+4>>2]}if((y|0)==255?(y=k[o>>2]|0,k[o>>2]=y+1,i[y>>0]=0,y=(k[n>>2]|0)+-1|0,k[n>>2]=y,(y|0)==0):0){y=k[u>>2]|0;z=k[y+24>>2]|0;if(!(ub[k[z+12>>2]&63](y)|0)){y=k[u>>2]|0;x=k[y>>2]|0;k[x+20>>2]=25;qb[k[x>>2]&127](y)}k[o>>2]=k[z>>2];k[n>>2]=k[z+4>>2]}z=w<<8;v=v+-8|0;if((v|0)<=7){B=z;break}else w=z}C=q&7;D=B}else{C=q;D=t}k[s>>2]=D;k[p>>2]=C}else{w=(k[e+92+(h<<2)>>2]|0)+(j<<2)|0;k[w>>2]=(k[w>>2]|0)+1}while(0);if((m|0)!=0?(k[g>>2]|0)==0:0){j=e+16|0;h=(k[j>>2]|0)+m|0;C=e+12|0;D=(k[f>>2]&(1<<m)+-1)<<24-h|k[C>>2];if((h|0)>7){m=e+112|0;B=e+116|0;w=e+120|0;v=h;n=D;while(1){o=n>>>16;u=o&255;z=k[m>>2]|0;k[m>>2]=z+1;i[z>>0]=o;o=(k[B>>2]|0)+-1|0;k[B>>2]=o;if(!o){o=k[w>>2]|0;z=k[o+24>>2]|0;if(!(ub[k[z+12>>2]&63](o)|0)){o=k[w>>2]|0;y=k[o>>2]|0;k[y+20>>2]=25;qb[k[y>>2]&127](o)}k[m>>2]=k[z>>2];k[B>>2]=k[z+4>>2]}if((u|0)==255?(u=k[m>>2]|0,k[m>>2]=u+1,i[u>>0]=0,u=(k[B>>2]|0)+-1|0,k[B>>2]=u,(u|0)==0):0){u=k[w>>2]|0;z=k[u+24>>2]|0;if(!(ub[k[z+12>>2]&63](u)|0)){u=k[w>>2]|0;o=k[u>>2]|0;k[o+20>>2]=25;qb[k[o>>2]&127](u)}k[m>>2]=k[z>>2];k[B>>2]=k[z+4>>2]}z=n<<8;v=v+-8|0;if((v|0)<=7){E=z;break}else n=z}F=h&7;G=E}else{F=h;G=D}k[C>>2]=G;k[j>>2]=F}k[f>>2]=0;f=e+132|0;F=k[f>>2]|0;a:do if((F|0)!=0&(k[g>>2]|0)==0){j=e+16|0;G=e+12|0;C=e+112|0;D=e+116|0;h=e+120|0;E=F;n=k[e+136>>2]|0;v=0;while(1){if(!v){B=k[j>>2]|0;m=B+1|0;w=((l[n>>0]|0)&1)<<23-B|k[G>>2];if((m|0)>7){B=m;z=w;while(1){u=z>>>16;o=u&255;y=k[C>>2]|0;k[C>>2]=y+1;i[y>>0]=u;u=(k[D>>2]|0)+-1|0;k[D>>2]=u;if(!u){u=k[h>>2]|0;y=k[u+24>>2]|0;if(!(ub[k[y+12>>2]&63](u)|0)){u=k[h>>2]|0;x=k[u>>2]|0;k[x+20>>2]=25;qb[k[x>>2]&127](u)}k[C>>2]=k[y>>2];k[D>>2]=k[y+4>>2]}if((o|0)==255?(o=k[C>>2]|0,k[C>>2]=o+1,i[o>>0]=0,o=(k[D>>2]|0)+-1|0,k[D>>2]=o,(o|0)==0):0){o=k[h>>2]|0;y=k[o+24>>2]|0;if(!(ub[k[y+12>>2]&63](o)|0)){o=k[h>>2]|0;u=k[o>>2]|0;k[u+20>>2]=25;qb[k[u>>2]&127](o)}k[C>>2]=k[y>>2];k[D>>2]=k[y+4>>2]}y=z<<8;B=B+-8|0;if((B|0)<=7){H=y;break}else z=y}I=m&7;J=H}else{I=m;J=w}k[G>>2]=J;k[j>>2]=I}z=E+-1|0;if(!z)break a;E=z;n=n+1|0;v=k[g>>2]|0}}while(0);k[f>>2]=0};k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;f=a+292|0;if((k[f>>2]|0)<=0){r=b;return}g=a+364|0;I=a+372|0;J=a+368|0;H=0;do{F=k[a+296+(H<<2)>>2]|0;if(((k[g>>2]|0)==0?(k[I>>2]|0)==0:0)?(v=k[F+20>>2]|0,n=c+(v<<2)|0,(k[n>>2]|0)==0):0){E=a+120+(v<<2)|0;j=k[E>>2]|0;if(!j){G=Dk(a)|0;k[E>>2]=G;K=G}else K=j;Cn(a,K,k[e+76+(v<<2)>>2]|0);k[n>>2]=1}if((k[J>>2]|0)!=0?(n=k[F+24>>2]|0,F=d+(n<<2)|0,(k[F>>2]|0)==0):0){v=a+136+(n<<2)|0;j=k[v>>2]|0;if(!j){G=Dk(a)|0;k[v>>2]=G;L=G}else L=j;Cn(a,L,k[e+92+(n<<2)>>2]|0);k[F>>2]=1}H=H+1|0}while((H|0)<(k[f>>2]|0));r=b;return}function sn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;b=r;r=r+16|0;c=b;d=k[a+424>>2]|0;e=a+24|0;f=k[e>>2]|0;g=k[f>>2]|0;if(!(k[a+268>>2]|0)){h=k[f+4>>2]|0;j=d+12|0;m=k[j>>2]|0;n=d+16|0;o=k[n>>2]|0;p=d+20|0;k[c>>2]=k[p>>2];k[c+4>>2]=k[p+4>>2];k[c+8>>2]=k[p+8>>2];k[c+12>>2]=k[p+12>>2];a:do if((o|0)>0){q=g;s=h;t=o+7|0;u=127<<17-o|m;while(1){v=u>>>16;w=v&255;x=q;y=x+1|0;i[x>>0]=v;v=s+-1|0;if(!v){x=k[e>>2]|0;if(!(ub[k[x+12>>2]&63](a)|0)){z=y;break}A=k[x>>2]|0;B=k[x+4>>2]|0}else{A=y;B=v}if((w|0)==255){w=A;v=w+1|0;i[w>>0]=0;w=B+-1|0;if(!w){y=k[e>>2]|0;if(!(ub[k[y+12>>2]&63](a)|0)){z=v;break}C=k[y+4>>2]|0;D=k[y>>2]|0}else{C=w;D=v}}else{C=B;D=A}t=t+-8|0;if((t|0)<=7){E=D;F=C;G=0;H=0;break a}else{q=D;s=C;u=u<<8}}u=k[a>>2]|0;k[u+20>>2]=25;qb[k[u>>2]&127](a);E=z;F=0;G=m;H=o}else{E=g;F=h;G=0;H=0}while(0);h=k[e>>2]|0;k[h>>2]=E;k[h+4>>2]=F;k[j>>2]=G;k[n>>2]=H;k[p>>2]=k[c>>2];k[p+4>>2]=k[c+4>>2];k[p+8>>2]=k[c+8>>2];k[p+12>>2]=k[c+12>>2];r=b;return}c=d+112|0;k[c>>2]=g;g=d+116|0;k[g>>2]=k[f+4>>2];f=d+128|0;p=k[f>>2]|0;if(p){H=0;n=p;while(1){n=n>>1;if(!n){I=H;break}else H=H+1|0}if((I|0)>14){H=k[d+120>>2]|0;n=k[H>>2]|0;k[n+20>>2]=41;qb[k[n>>2]&127](H)}H=k[d+124>>2]|0;n=I<<4;p=d+108|0;do if(!(k[p>>2]|0)){G=k[d+60+(H<<2)>>2]|0;j=k[G+(n<<2)>>2]|0;F=i[G+1024+n>>0]|0;G=F<<24>>24;if(F<<24>>24==0?(F=k[d+120>>2]|0,h=k[F>>2]|0,k[h+20>>2]=41,qb[k[h>>2]&127](F),(k[p>>2]|0)!=0):0)break;F=d+16|0;h=(k[F>>2]|0)+G|0;E=d+12|0;o=((1<<G)+-1&j)<<24-h|k[E>>2];if((h|0)>7){j=d+120|0;G=h;m=o;while(1){z=m>>>16;a=z&255;C=k[c>>2]|0;k[c>>2]=C+1;i[C>>0]=z;z=(k[g>>2]|0)+-1|0;k[g>>2]=z;if(!z){z=k[j>>2]|0;C=k[z+24>>2]|0;if(!(ub[k[C+12>>2]&63](z)|0)){z=k[j>>2]|0;D=k[z>>2]|0;k[D+20>>2]=25;qb[k[D>>2]&127](z)}k[c>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}if((a|0)==255?(a=k[c>>2]|0,k[c>>2]=a+1,i[a>>0]=0,a=(k[g>>2]|0)+-1|0,k[g>>2]=a,(a|0)==0):0){a=k[j>>2]|0;C=k[a+24>>2]|0;if(!(ub[k[C+12>>2]&63](a)|0)){a=k[j>>2]|0;z=k[a>>2]|0;k[z+20>>2]=25;qb[k[z>>2]&127](a)}k[c>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}C=m<<8;G=G+-8|0;if((G|0)<=7){J=C;break}else m=C}K=h&7;L=J}else{K=h;L=o}k[E>>2]=L;k[F>>2]=K}else{m=(k[d+92+(H<<2)>>2]|0)+(n<<2)|0;k[m>>2]=(k[m>>2]|0)+1}while(0);if((I|0)!=0?(k[p>>2]|0)==0:0){n=d+16|0;H=(k[n>>2]|0)+I|0;K=d+12|0;L=(k[f>>2]&(1<<I)+-1)<<24-H|k[K>>2];if((H|0)>7){I=d+120|0;J=H;m=L;while(1){G=m>>>16;j=G&255;C=k[c>>2]|0;k[c>>2]=C+1;i[C>>0]=G;G=(k[g>>2]|0)+-1|0;k[g>>2]=G;if(!G){G=k[I>>2]|0;C=k[G+24>>2]|0;if(!(ub[k[C+12>>2]&63](G)|0)){G=k[I>>2]|0;a=k[G>>2]|0;k[a+20>>2]=25;qb[k[a>>2]&127](G)}k[c>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}if((j|0)==255?(j=k[c>>2]|0,k[c>>2]=j+1,i[j>>0]=0,j=(k[g>>2]|0)+-1|0,k[g>>2]=j,(j|0)==0):0){j=k[I>>2]|0;C=k[j+24>>2]|0;if(!(ub[k[C+12>>2]&63](j)|0)){j=k[I>>2]|0;G=k[j>>2]|0;k[G+20>>2]=25;qb[k[G>>2]&127](j)}k[c>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}C=m<<8;J=J+-8|0;if((J|0)<=7){M=C;break}else m=C}N=H&7;O=M}else{N=H;O=L}k[K>>2]=O;k[n>>2]=N}k[f>>2]=0;f=d+132|0;N=k[f>>2]|0;b:do if((N|0)!=0&(k[p>>2]|0)==0){n=d+16|0;O=d+12|0;K=d+120|0;L=N;H=k[d+136>>2]|0;M=0;while(1){if(!M){m=k[n>>2]|0;J=m+1|0;I=((l[H>>0]|0)&1)<<23-m|k[O>>2];if((J|0)>7){m=J;C=I;while(1){j=C>>>16;G=j&255;a=k[c>>2]|0;k[c>>2]=a+1;i[a>>0]=j;j=(k[g>>2]|0)+-1|0;k[g>>2]=j;if(!j){j=k[K>>2]|0;a=k[j+24>>2]|0;if(!(ub[k[a+12>>2]&63](j)|0)){j=k[K>>2]|0;z=k[j>>2]|0;k[z+20>>2]=25;qb[k[z>>2]&127](j)}k[c>>2]=k[a>>2];k[g>>2]=k[a+4>>2]}if((G|0)==255?(G=k[c>>2]|0,k[c>>2]=G+1,i[G>>0]=0,G=(k[g>>2]|0)+-1|0,k[g>>2]=G,(G|0)==0):0){G=k[K>>2]|0;a=k[G+24>>2]|0;if(!(ub[k[a+12>>2]&63](G)|0)){G=k[K>>2]|0;j=k[G>>2]|0;k[j+20>>2]=25;qb[k[j>>2]&127](G)}k[c>>2]=k[a>>2];k[g>>2]=k[a+4>>2]}a=C<<8;m=m+-8|0;if((m|0)<=7){P=a;break}else C=a}Q=J&7;R=P}else{Q=J;R=I}k[O>>2]=R;k[n>>2]=Q}C=L+-1|0;if(!C)break b;L=C;H=H+1|0;M=k[p>>2]|0}}while(0);k[f>>2]=0}Bn(d);d=k[e>>2]|0;k[d>>2]=k[c>>2];k[d+4>>2]=k[g>>2];r=b;return}function tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;c=k[a+424>>2]|0;d=a+24|0;e=k[d>>2]|0;f=c+112|0;k[f>>2]=k[e>>2];g=c+116|0;k[g>>2]=k[e+4>>2];e=a+236|0;if((k[e>>2]|0)!=0?(k[c+36>>2]|0)==0:0)An(c,k[c+40>>2]|0);h=a+320|0;if((k[h>>2]|0)>0){l=a+376|0;m=c+108|0;n=c+120|0;o=c+16|0;p=c+12|0;q=0;do{r=k[a+324+(q<<2)>>2]|0;s=k[(k[a+296+(r<<2)>>2]|0)+20>>2]|0;t=j[k[b+(q<<2)>>2]>>1]>>k[l>>2];u=c+20+(r<<2)|0;r=t-(k[u>>2]|0)|0;k[u>>2]=t;t=(r>>31)+r|0;u=(r|0)<0?0-r|0:r;if(u){r=0;v=u;while(1){u=r+1|0;v=v>>1;if(!v){w=u;x=r;break}else r=u}if((x|0)>10){r=k[a>>2]|0;k[r+20>>2]=6;qb[k[r>>2]&127](a);y=w}else y=w}else y=0;do if(!(k[m>>2]|0)){r=k[c+44+(s<<2)>>2]|0;v=k[r+(y<<2)>>2]|0;u=i[r+1024+y>>0]|0;r=u<<24>>24;if(u<<24>>24==0?(u=k[n>>2]|0,z=k[u>>2]|0,k[z+20>>2]=41,qb[k[z>>2]&127](u),(k[m>>2]|0)!=0):0)break;u=(k[o>>2]|0)+r|0;z=((1<<r)+-1&v)<<24-u|k[p>>2];if((u|0)>7){v=u;r=z;while(1){A=r>>>16;B=A&255;C=k[f>>2]|0;k[f>>2]=C+1;i[C>>0]=A;A=(k[g>>2]|0)+-1|0;k[g>>2]=A;if(!A){A=k[n>>2]|0;C=k[A+24>>2]|0;if(!(ub[k[C+12>>2]&63](A)|0)){A=k[n>>2]|0;D=k[A>>2]|0;k[D+20>>2]=25;qb[k[D>>2]&127](A)}k[f>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}if((B|0)==255?(B=k[f>>2]|0,k[f>>2]=B+1,i[B>>0]=0,B=(k[g>>2]|0)+-1|0,k[g>>2]=B,(B|0)==0):0){B=k[n>>2]|0;C=k[B+24>>2]|0;if(!(ub[k[C+12>>2]&63](B)|0)){B=k[n>>2]|0;A=k[B>>2]|0;k[A+20>>2]=25;qb[k[A>>2]&127](B)}k[f>>2]=k[C>>2];k[g>>2]=k[C+4>>2]}C=r<<8;v=v+-8|0;if((v|0)<=7){E=C;break}else r=C}F=u&7;G=E}else{F=u;G=z}k[p>>2]=G;k[o>>2]=F}else{r=(k[c+76+(s<<2)>>2]|0)+(y<<2)|0;k[r>>2]=(k[r>>2]|0)+1}while(0);if((y|0)!=0?(k[m>>2]|0)==0:0){s=(k[o>>2]|0)+y|0;r=((1<<y)+-1&t)<<24-s|k[p>>2];if((s|0)>7){v=s;C=r;while(1){B=C>>>16;A=B&255;D=k[f>>2]|0;k[f>>2]=D+1;i[D>>0]=B;B=(k[g>>2]|0)+-1|0;k[g>>2]=B;if(!B){B=k[n>>2]|0;D=k[B+24>>2]|0;if(!(ub[k[D+12>>2]&63](B)|0)){B=k[n>>2]|0;H=k[B>>2]|0;k[H+20>>2]=25;qb[k[H>>2]&127](B)}k[f>>2]=k[D>>2];k[g>>2]=k[D+4>>2]}if((A|0)==255?(A=k[f>>2]|0,k[f>>2]=A+1,i[A>>0]=0,A=(k[g>>2]|0)+-1|0,k[g>>2]=A,(A|0)==0):0){A=k[n>>2]|0;D=k[A+24>>2]|0;if(!(ub[k[D+12>>2]&63](A)|0)){A=k[n>>2]|0;B=k[A>>2]|0;k[B+20>>2]=25;qb[k[B>>2]&127](A)}k[f>>2]=k[D>>2];k[g>>2]=k[D+4>>2]}D=C<<8;v=v+-8|0;if((v|0)<=7){I=D;break}else C=D}J=s&7;K=I}else{J=s;K=r}k[p>>2]=K;k[o>>2]=J}q=q+1|0}while((q|0)<(k[h>>2]|0))}h=k[d>>2]|0;k[h>>2]=k[f>>2];k[h+4>>2]=k[g>>2];g=k[e>>2]|0;if(!g)return 1;e=c+36|0;h=k[e>>2]|0;if(!h){k[e>>2]=g;f=c+40|0;k[f>>2]=(k[f>>2]|0)+1&7;L=g}else L=h;k[e>>2]=L+-1;return 1}function un(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0;c=k[a+424>>2]|0;d=a+24|0;e=k[d>>2]|0;f=c+112|0;k[f>>2]=k[e>>2];g=c+116|0;k[g>>2]=k[e+4>>2];e=a+236|0;if((k[e>>2]|0)!=0?(k[c+36>>2]|0)==0:0)An(c,k[c+40>>2]|0);h=k[a+368>>2]|0;m=k[a+376>>2]|0;n=k[a+384>>2]|0;o=k[b>>2]|0;b=k[a+364>>2]|0;if((b|0)<=(h|0)){p=c+128|0;q=c+124|0;r=c+108|0;s=c+120|0;t=c+16|0;u=c+12|0;v=c+136|0;w=c+132|0;x=b;b=0;while(1){y=j[o+(k[n+(x<<2)>>2]<<1)>>1]|0;z=y<<16>>16;do if(y<<16>>16){if(y<<16>>16<0){A=0-z>>m;B=A;C=~A}else{A=z>>m;B=A;C=A}if(!B){D=b+1|0;break}A=k[p>>2]|0;if(A){E=0;F=A;while(1){F=F>>1;if(!F){G=E;break}else E=E+1|0}if((G|0)>14){E=k[s>>2]|0;F=k[E>>2]|0;k[F+20>>2]=41;qb[k[F>>2]&127](E)}E=k[q>>2]|0;F=G<<4;do if(!(k[r>>2]|0)){A=k[c+60+(E<<2)>>2]|0;H=k[A+(F<<2)>>2]|0;I=i[A+1024+F>>0]|0;A=I<<24>>24;if(I<<24>>24==0?(I=k[s>>2]|0,J=k[I>>2]|0,k[J+20>>2]=41,qb[k[J>>2]&127](I),(k[r>>2]|0)!=0):0)break;I=(k[t>>2]|0)+A|0;J=((1<<A)+-1&H)<<24-I|k[u>>2];if((I|0)>7){H=I;A=J;while(1){K=A>>>16;L=K&255;M=k[f>>2]|0;k[f>>2]=M+1;i[M>>0]=K;K=(k[g>>2]|0)+-1|0;k[g>>2]=K;if(!K){K=k[s>>2]|0;M=k[K+24>>2]|0;if(!(ub[k[M+12>>2]&63](K)|0)){K=k[s>>2]|0;N=k[K>>2]|0;k[N+20>>2]=25;qb[k[N>>2]&127](K)}k[f>>2]=k[M>>2];k[g>>2]=k[M+4>>2]}do if((L|0)==255){M=k[f>>2]|0;k[f>>2]=M+1;i[M>>0]=0;M=(k[g>>2]|0)+-1|0;k[g>>2]=M;if(M)break;M=k[s>>2]|0;K=k[M+24>>2]|0;if(!(ub[k[K+12>>2]&63](M)|0)){M=k[s>>2]|0;N=k[M>>2]|0;k[N+20>>2]=25;qb[k[N>>2]&127](M)}k[f>>2]=k[K>>2];k[g>>2]=k[K+4>>2]}while(0);L=A<<8;H=H+-8|0;if((H|0)<=7){O=L;break}else A=L}P=I&7;Q=O}else{P=I;Q=J}k[u>>2]=Q;k[t>>2]=P}else{A=(k[c+92+(E<<2)>>2]|0)+(F<<2)|0;k[A>>2]=(k[A>>2]|0)+1}while(0);if((G|0)!=0?(k[r>>2]|0)==0:0){F=(k[t>>2]|0)+G|0;E=(k[p>>2]&(1<<G)+-1)<<24-F|k[u>>2];if((F|0)>7){A=F;H=E;while(1){L=H>>>16;K=L&255;M=k[f>>2]|0;k[f>>2]=M+1;i[M>>0]=L;L=(k[g>>2]|0)+-1|0;k[g>>2]=L;if(!L){L=k[s>>2]|0;M=k[L+24>>2]|0;if(!(ub[k[M+12>>2]&63](L)|0)){L=k[s>>2]|0;N=k[L>>2]|0;k[N+20>>2]=25;qb[k[N>>2]&127](L)}k[f>>2]=k[M>>2];k[g>>2]=k[M+4>>2]}do if((K|0)==255){M=k[f>>2]|0;k[f>>2]=M+1;i[M>>0]=0;M=(k[g>>2]|0)+-1|0;k[g>>2]=M;if(M)break;M=k[s>>2]|0;L=k[M+24>>2]|0;if(!(ub[k[L+12>>2]&63](M)|0)){M=k[s>>2]|0;N=k[M>>2]|0;k[N+20>>2]=25;qb[k[N>>2]&127](M)}k[f>>2]=k[L>>2];k[g>>2]=k[L+4>>2]}while(0);K=H<<8;A=A+-8|0;if((A|0)<=7){R=K;break}else H=K}S=F&7;T=R}else{S=F;T=E}k[u>>2]=T;k[t>>2]=S}k[p>>2]=0;H=k[w>>2]|0;a:do if((H|0)!=0&(k[r>>2]|0)==0){A=H;K=k[v>>2]|0;J=0;while(1){if(!J){I=k[t>>2]|0;L=I+1|0;M=((l[K>>0]|0)&1)<<23-I|k[u>>2];if((L|0)>7){I=L;N=M;while(1){U=N>>>16;V=U&255;W=k[f>>2]|0;k[f>>2]=W+1;i[W>>0]=U;U=(k[g>>2]|0)+-1|0;k[g>>2]=U;if(!U){U=k[s>>2]|0;W=k[U+24>>2]|0;if(!(ub[k[W+12>>2]&63](U)|0)){U=k[s>>2]|0;X=k[U>>2]|0;k[X+20>>2]=25;qb[k[X>>2]&127](U)}k[f>>2]=k[W>>2];k[g>>2]=k[W+4>>2]}do if((V|0)==255){W=k[f>>2]|0;k[f>>2]=W+1;i[W>>0]=0;W=(k[g>>2]|0)+-1|0;k[g>>2]=W;if(W)break;W=k[s>>2]|0;U=k[W+24>>2]|0;if(!(ub[k[U+12>>2]&63](W)|0)){W=k[s>>2]|0;X=k[W>>2]|0;k[X+20>>2]=25;qb[k[X>>2]&127](W)}k[f>>2]=k[U>>2];k[g>>2]=k[U+4>>2]}while(0);V=N<<8;I=I+-8|0;if((I|0)<=7){Y=V;break}else N=V}Z=L&7;_=Y}else{Z=L;_=M}k[u>>2]=_;k[t>>2]=Z}N=A+-1|0;if(!N)break a;A=N;K=K+1|0;J=k[r>>2]|0}}while(0);k[w>>2]=0}if((b|0)>15){H=b;do{E=k[q>>2]|0;do if(!(k[r>>2]|0)){F=k[c+60+(E<<2)>>2]|0;J=k[F+960>>2]|0;K=i[F+1264>>0]|0;F=K<<24>>24;if(K<<24>>24==0?(K=k[s>>2]|0,A=k[K>>2]|0,k[A+20>>2]=41,qb[k[A>>2]&127](K),(k[r>>2]|0)!=0):0)break;K=(k[t>>2]|0)+F|0;A=((1<<F)+-1&J)<<24-K|k[u>>2];if((K|0)>7){J=K;F=A;while(1){N=F>>>16;I=N&255;V=k[f>>2]|0;k[f>>2]=V+1;i[V>>0]=N;N=(k[g>>2]|0)+-1|0;k[g>>2]=N;if(!N){N=k[s>>2]|0;V=k[N+24>>2]|0;if(!(ub[k[V+12>>2]&63](N)|0)){N=k[s>>2]|0;U=k[N>>2]|0;k[U+20>>2]=25;qb[k[U>>2]&127](N)}k[f>>2]=k[V>>2];k[g>>2]=k[V+4>>2]}do if((I|0)==255){V=k[f>>2]|0;k[f>>2]=V+1;i[V>>0]=0;V=(k[g>>2]|0)+-1|0;k[g>>2]=V;if(V)break;V=k[s>>2]|0;N=k[V+24>>2]|0;if(!(ub[k[N+12>>2]&63](V)|0)){V=k[s>>2]|0;U=k[V>>2]|0;k[U+20>>2]=25;qb[k[U>>2]&127](V)}k[f>>2]=k[N>>2];k[g>>2]=k[N+4>>2]}while(0);I=F<<8;J=J+-8|0;if((J|0)<=7){$=I;break}else F=I}aa=K&7;ba=$}else{aa=K;ba=A}k[u>>2]=ba;k[t>>2]=aa}else{F=(k[c+92+(E<<2)>>2]|0)+960|0;k[F>>2]=(k[F>>2]|0)+1}while(0);H=H+-16|0}while((H|0)>15);ca=b&15}else ca=b;H=1;E=B;while(1){E=E>>1;if(!E){da=H;break}else H=H+1|0}if((da|0)>10){H=k[a>>2]|0;k[H+20>>2]=6;qb[k[H>>2]&127](a)}H=k[q>>2]|0;E=da+(ca<<4)|0;do if(!(k[r>>2]|0)){F=k[c+60+(H<<2)>>2]|0;J=k[F+(E<<2)>>2]|0;M=i[F+1024+E>>0]|0;F=M<<24>>24;if(M<<24>>24==0?(M=k[s>>2]|0,L=k[M>>2]|0,k[L+20>>2]=41,qb[k[L>>2]&127](M),(k[r>>2]|0)!=0):0)break;M=(k[t>>2]|0)+F|0;L=((1<<F)+-1&J)<<24-M|k[u>>2];if((M|0)>7){J=M;F=L;while(1){I=F>>>16;N=I&255;V=k[f>>2]|0;k[f>>2]=V+1;i[V>>0]=I;I=(k[g>>2]|0)+-1|0;k[g>>2]=I;if(!I){I=k[s>>2]|0;V=k[I+24>>2]|0;if(!(ub[k[V+12>>2]&63](I)|0)){I=k[s>>2]|0;U=k[I>>2]|0;k[U+20>>2]=25;qb[k[U>>2]&127](I)}k[f>>2]=k[V>>2];k[g>>2]=k[V+4>>2]}do if((N|0)==255){V=k[f>>2]|0;k[f>>2]=V+1;i[V>>0]=0;V=(k[g>>2]|0)+-1|0;k[g>>2]=V;if(V)break;V=k[s>>2]|0;I=k[V+24>>2]|0;if(!(ub[k[I+12>>2]&63](V)|0)){V=k[s>>2]|0;U=k[V>>2]|0;k[U+20>>2]=25;qb[k[U>>2]&127](V)}k[f>>2]=k[I>>2];k[g>>2]=k[I+4>>2]}while(0);N=F<<8;J=J+-8|0;if((J|0)<=7){ea=N;break}else F=N}fa=M&7;ga=ea}else{fa=M;ga=L}k[u>>2]=ga;k[t>>2]=fa}else{F=(k[c+92+(H<<2)>>2]|0)+(E<<2)|0;k[F>>2]=(k[F>>2]|0)+1}while(0);if(!da){E=k[s>>2]|0;H=k[E>>2]|0;k[H+20>>2]=41;qb[k[H>>2]&127](E)}if(!(k[r>>2]|0)){E=(k[t>>2]|0)+da|0;H=((1<<da)+-1&C)<<24-E|k[u>>2];if((E|0)>7){F=E;J=H;while(1){N=J>>>16;A=N&255;K=k[f>>2]|0;k[f>>2]=K+1;i[K>>0]=N;N=(k[g>>2]|0)+-1|0;k[g>>2]=N;if(!N){N=k[s>>2]|0;K=k[N+24>>2]|0;if(!(ub[k[K+12>>2]&63](N)|0)){N=k[s>>2]|0;I=k[N>>2]|0;k[I+20>>2]=25;qb[k[I>>2]&127](N)}k[f>>2]=k[K>>2];k[g>>2]=k[K+4>>2]}do if((A|0)==255){K=k[f>>2]|0;k[f>>2]=K+1;i[K>>0]=0;K=(k[g>>2]|0)+-1|0;k[g>>2]=K;if(K)break;K=k[s>>2]|0;N=k[K+24>>2]|0;if(!(ub[k[N+12>>2]&63](K)|0)){K=k[s>>2]|0;I=k[K>>2]|0;k[I+20>>2]=25;qb[k[I>>2]&127](K)}k[f>>2]=k[N>>2];k[g>>2]=k[N+4>>2]}while(0);A=J<<8;F=F+-8|0;if((F|0)<=7){ha=A;break}else J=A}ia=E&7;ja=ha}else{ia=E;ja=H}k[u>>2]=ja;k[t>>2]=ia;D=0}else D=0}else D=b+1|0;while(0);if((x|0)<(h|0)){x=x+1|0;b=D}else{ka=D;break}}if((ka|0)>0?(ka=c+128|0,D=(k[ka>>2]|0)+1|0,k[ka>>2]=D,(D|0)==32767):0){D=k[c+124>>2]|0;b=c+108|0;if(!(k[b>>2]|0)){x=k[c+60+(D<<2)>>2]|0;h=k[x+896>>2]|0;ia=i[x+1248>>0]|0;x=ia<<24>>24;if(!(ia<<24>>24)){ia=k[c+120>>2]|0;t=k[ia>>2]|0;k[t+20>>2]=41;qb[k[t>>2]&127](ia)}if(!(k[b>>2]|0)){ia=c+16|0;t=(k[ia>>2]|0)+x|0;ja=c+12|0;u=((1<<x)+-1&h)<<24-t|k[ja>>2];if((t|0)>7){h=c+120|0;x=t;ha=u;while(1){s=ha>>>16;C=s&255;da=k[f>>2]|0;k[f>>2]=da+1;i[da>>0]=s;s=(k[g>>2]|0)+-1|0;k[g>>2]=s;if(!s){s=k[h>>2]|0;da=k[s+24>>2]|0;if(!(ub[k[da+12>>2]&63](s)|0)){s=k[h>>2]|0;r=k[s>>2]|0;k[r+20>>2]=25;qb[k[r>>2]&127](s)}k[f>>2]=k[da>>2];k[g>>2]=k[da+4>>2]}if((C|0)==255?(C=k[f>>2]|0,k[f>>2]=C+1,i[C>>0]=0,C=(k[g>>2]|0)+-1|0,k[g>>2]=C,(C|0)==0):0){C=k[h>>2]|0;da=k[C+24>>2]|0;if(!(ub[k[da+12>>2]&63](C)|0)){C=k[h>>2]|0;s=k[C>>2]|0;k[s+20>>2]=25;qb[k[s>>2]&127](C)}k[f>>2]=k[da>>2];k[g>>2]=k[da+4>>2]}da=ha<<8;x=x+-8|0;if((x|0)<=7){la=da;break}else ha=da}ma=t&7;na=la}else{ma=t;na=u}k[ja>>2]=na;k[ia>>2]=ma;oa=147}}else{ma=(k[c+92+(D<<2)>>2]|0)+896|0;k[ma>>2]=(k[ma>>2]|0)+1;oa=147}if((oa|0)==147?(k[b>>2]|0)==0:0){oa=c+16|0;ma=k[oa>>2]|0;D=ma+14|0;ia=c+12|0;na=(k[ka>>2]&16383)<<10-ma|k[ia>>2];if((D|0)>7){ma=c+120|0;ja=D;u=na;while(1){t=u>>>16;la=t&255;ha=k[f>>2]|0;k[f>>2]=ha+1;i[ha>>0]=t;t=(k[g>>2]|0)+-1|0;k[g>>2]=t;if(!t){t=k[ma>>2]|0;ha=k[t+24>>2]|0;if(!(ub[k[ha+12>>2]&63](t)|0)){t=k[ma>>2]|0;x=k[t>>2]|0;k[x+20>>2]=25;qb[k[x>>2]&127](t)}k[f>>2]=k[ha>>2];k[g>>2]=k[ha+4>>2]}if((la|0)==255?(la=k[f>>2]|0,k[f>>2]=la+1,i[la>>0]=0,la=(k[g>>2]|0)+-1|0,k[g>>2]=la,(la|0)==0):0){la=k[ma>>2]|0;ha=k[la+24>>2]|0;if(!(ub[k[ha+12>>2]&63](la)|0)){la=k[ma>>2]|0;t=k[la>>2]|0;k[t+20>>2]=25;qb[k[t>>2]&127](la)}k[f>>2]=k[ha>>2];k[g>>2]=k[ha+4>>2]}ha=u<<8;ja=ja+-8|0;if((ja|0)<=7){pa=ha;break}else u=ha}qa=D&7;ra=pa}else{qa=D;ra=na}k[ia>>2]=ra;k[oa>>2]=qa}k[ka>>2]=0;ka=c+132|0;qa=k[ka>>2]|0;b:do if((qa|0)!=0&(k[b>>2]|0)==0){oa=c+16|0;ra=c+12|0;ia=c+120|0;na=qa;D=k[c+136>>2]|0;pa=0;while(1){if(!pa){u=k[oa>>2]|0;ja=u+1|0;ma=((l[D>>0]|0)&1)<<23-u|k[ra>>2];if((ja|0)>7){u=ja;ha=ma;while(1){la=ha>>>16;t=la&255;x=k[f>>2]|0;k[f>>2]=x+1;i[x>>0]=la;la=(k[g>>2]|0)+-1|0;k[g>>2]=la;if(!la){la=k[ia>>2]|0;x=k[la+24>>2]|0;if(!(ub[k[x+12>>2]&63](la)|0)){la=k[ia>>2]|0;h=k[la>>2]|0;k[h+20>>2]=25;qb[k[h>>2]&127](la)}k[f>>2]=k[x>>2];k[g>>2]=k[x+4>>2]}if((t|0)==255?(t=k[f>>2]|0,k[f>>2]=t+1,i[t>>0]=0,t=(k[g>>2]|0)+-1|0,k[g>>2]=t,(t|0)==0):0){t=k[ia>>2]|0;x=k[t+24>>2]|0;if(!(ub[k[x+12>>2]&63](t)|0)){t=k[ia>>2]|0;la=k[t>>2]|0;k[la+20>>2]=25;qb[k[la>>2]&127](t)}k[f>>2]=k[x>>2];k[g>>2]=k[x+4>>2]}x=ha<<8;u=u+-8|0;if((u|0)<=7){sa=x;break}else ha=x}ta=ja&7;ua=sa}else{ta=ja;ua=ma}k[ra>>2]=ua;k[oa>>2]=ta}ha=na+-1|0;if(!ha)break b;na=ha;D=D+1|0;pa=k[b>>2]|0}}while(0);k[ka>>2]=0}}ka=k[d>>2]|0;k[ka>>2]=k[f>>2];k[ka+4>>2]=k[g>>2];g=k[e>>2]|0;if(!g)return 1;e=c+36|0;ka=k[e>>2]|0;if(!ka){k[e>>2]=g;f=c+40|0;k[f>>2]=(k[f>>2]|0)+1&7;va=g}else va=ka;k[e>>2]=va+-1;return 1}function vn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;c=k[a+424>>2]|0;d=a+24|0;e=k[d>>2]|0;f=c+112|0;k[f>>2]=k[e>>2];g=c+116|0;k[g>>2]=k[e+4>>2];e=a+236|0;if((k[e>>2]|0)!=0?(k[c+36>>2]|0)==0:0)An(c,k[c+40>>2]|0);h=k[a+376>>2]|0;l=a+320|0;a=k[l>>2]|0;if((a|0)>0){m=c+108|0;n=c+16|0;o=c+12|0;p=c+120|0;q=a;a=0;while(1){if(!(k[m>>2]|0)){r=k[n>>2]|0;s=r+1|0;t=((j[k[b+(a<<2)>>2]>>1]|0)>>>h&1)<<23-r|k[o>>2];if((s|0)>7){r=s;u=t;while(1){v=u>>>16;w=v&255;x=k[f>>2]|0;k[f>>2]=x+1;i[x>>0]=v;v=(k[g>>2]|0)+-1|0;k[g>>2]=v;if(!v){v=k[p>>2]|0;x=k[v+24>>2]|0;if(!(ub[k[x+12>>2]&63](v)|0)){v=k[p>>2]|0;y=k[v>>2]|0;k[y+20>>2]=25;qb[k[y>>2]&127](v)}k[f>>2]=k[x>>2];k[g>>2]=k[x+4>>2]}if((w|0)==255?(w=k[f>>2]|0,k[f>>2]=w+1,i[w>>0]=0,w=(k[g>>2]|0)+-1|0,k[g>>2]=w,(w|0)==0):0){w=k[p>>2]|0;x=k[w+24>>2]|0;if(!(ub[k[x+12>>2]&63](w)|0)){w=k[p>>2]|0;v=k[w>>2]|0;k[v+20>>2]=25;qb[k[v>>2]&127](w)}k[f>>2]=k[x>>2];k[g>>2]=k[x+4>>2]}x=u<<8;r=r+-8|0;if((r|0)<=7){z=x;break}else u=x}A=k[l>>2]|0;B=s&7;C=z}else{A=q;B=s;C=t}k[o>>2]=C;k[n>>2]=B;D=A}else D=q;a=a+1|0;if((a|0)>=(D|0))break;else q=D}}D=k[d>>2]|0;k[D>>2]=k[f>>2];k[D+4>>2]=k[g>>2];g=k[e>>2]|0;if(!g)return 1;e=c+36|0;D=k[e>>2]|0;if(!D){k[e>>2]=g;f=c+40|0;k[f>>2]=(k[f>>2]|0)+1&7;E=g}else E=D;k[e>>2]=E+-1;return 1}function wn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0;c=r;r=r+256|0;d=c;e=k[a+424>>2]|0;f=a+24|0;g=k[f>>2]|0;h=e+112|0;k[h>>2]=k[g>>2];n=e+116|0;k[n>>2]=k[g+4>>2];g=a+236|0;if((k[g>>2]|0)!=0?(k[e+36>>2]|0)==0:0)An(e,k[e+40>>2]|0);o=k[a+368>>2]|0;p=k[a+376>>2]|0;q=k[a+384>>2]|0;s=k[b>>2]|0;b=k[a+364>>2]|0;a=(b|0)>(o|0);if(!a){t=0;u=b;while(1){v=j[s+(k[q+(u<<2)>>2]<<1)>>1]|0;w=v<<16>>16;x=(v<<16>>16<0?0-w|0:w)>>p;k[d+(u<<2)>>2]=x;w=(x|0)==1?u:t;if((u|0)<(o|0)){t=w;u=u+1|0}else{y=w;break}}u=e+136|0;t=e+132|0;if(a){z=u;A=t;B=0;C=0}else{a=e+128|0;p=e+124|0;w=e+108|0;x=e+120|0;v=e+16|0;D=e+12|0;E=0;F=(k[u>>2]|0)+(k[t>>2]|0)|0;G=b;b=0;while(1){H=k[d+(G<<2)>>2]|0;do if(!H){I=E;J=F;K=b+1|0}else{if((G|0)>(y|0)|(b|0)<16){L=E;M=F;N=b}else{O=E;P=F;Q=b;while(1){R=k[a>>2]|0;if(R){S=0;T=R;while(1){T=T>>1;if(!T){U=S;break}else S=S+1|0}if((U|0)>14){S=k[x>>2]|0;T=k[S>>2]|0;k[T+20>>2]=41;qb[k[T>>2]&127](S)}S=k[p>>2]|0;T=U<<4;do if(!(k[w>>2]|0)){R=k[e+60+(S<<2)>>2]|0;V=k[R+(T<<2)>>2]|0;W=i[R+1024+T>>0]|0;R=W<<24>>24;if(W<<24>>24==0?(W=k[x>>2]|0,X=k[W>>2]|0,k[X+20>>2]=41,qb[k[X>>2]&127](W),(k[w>>2]|0)!=0):0)break;W=(k[v>>2]|0)+R|0;X=((1<<R)+-1&V)<<24-W|k[D>>2];if((W|0)>7){V=W;R=X;while(1){Y=R>>>16;Z=Y&255;_=k[h>>2]|0;k[h>>2]=_+1;i[_>>0]=Y;Y=(k[n>>2]|0)+-1|0;k[n>>2]=Y;if(!Y){Y=k[x>>2]|0;_=k[Y+24>>2]|0;if(!(ub[k[_+12>>2]&63](Y)|0)){Y=k[x>>2]|0;$=k[Y>>2]|0;k[$+20>>2]=25;qb[k[$>>2]&127](Y)}k[h>>2]=k[_>>2];k[n>>2]=k[_+4>>2]}do if((Z|0)==255){_=k[h>>2]|0;k[h>>2]=_+1;i[_>>0]=0;_=(k[n>>2]|0)+-1|0;k[n>>2]=_;if(_)break;_=k[x>>2]|0;Y=k[_+24>>2]|0;if(!(ub[k[Y+12>>2]&63](_)|0)){_=k[x>>2]|0;$=k[_>>2]|0;k[$+20>>2]=25;qb[k[$>>2]&127](_)}k[h>>2]=k[Y>>2];k[n>>2]=k[Y+4>>2]}while(0);Z=R<<8;V=V+-8|0;if((V|0)<=7){aa=Z;break}else R=Z}ba=W&7;ca=aa}else{ba=W;ca=X}k[D>>2]=ca;k[v>>2]=ba}else{R=(k[e+92+(S<<2)>>2]|0)+(T<<2)|0;k[R>>2]=(k[R>>2]|0)+1}while(0);if((U|0)!=0?(k[w>>2]|0)==0:0){T=(k[v>>2]|0)+U|0;S=(k[a>>2]&(1<<U)+-1)<<24-T|k[D>>2];if((T|0)>7){R=T;V=S;while(1){Z=V>>>16;Y=Z&255;_=k[h>>2]|0;k[h>>2]=_+1;i[_>>0]=Z;Z=(k[n>>2]|0)+-1|0;k[n>>2]=Z;if(!Z){Z=k[x>>2]|0;_=k[Z+24>>2]|0;if(!(ub[k[_+12>>2]&63](Z)|0)){Z=k[x>>2]|0;$=k[Z>>2]|0;k[$+20>>2]=25;qb[k[$>>2]&127](Z)}k[h>>2]=k[_>>2];k[n>>2]=k[_+4>>2]}do if((Y|0)==255){_=k[h>>2]|0;k[h>>2]=_+1;i[_>>0]=0;_=(k[n>>2]|0)+-1|0;k[n>>2]=_;if(_)break;_=k[x>>2]|0;Z=k[_+24>>2]|0;if(!(ub[k[Z+12>>2]&63](_)|0)){_=k[x>>2]|0;$=k[_>>2]|0;k[$+20>>2]=25;qb[k[$>>2]&127](_)}k[h>>2]=k[Z>>2];k[n>>2]=k[Z+4>>2]}while(0);Y=V<<8;R=R+-8|0;if((R|0)<=7){da=Y;break}else V=Y}ea=T&7;fa=da}else{ea=T;fa=S}k[D>>2]=fa;k[v>>2]=ea}k[a>>2]=0;V=k[t>>2]|0;a:do if((V|0)!=0&(k[w>>2]|0)==0){R=V;Y=k[u>>2]|0;X=0;while(1){if(!X){W=k[v>>2]|0;Z=W+1|0;_=((l[Y>>0]|0)&1)<<23-W|k[D>>2];if((Z|0)>7){W=Z;$=_;while(1){ga=$>>>16;ha=ga&255;ia=k[h>>2]|0;k[h>>2]=ia+1;i[ia>>0]=ga;ga=(k[n>>2]|0)+-1|0;k[n>>2]=ga;if(!ga){ga=k[x>>2]|0;ia=k[ga+24>>2]|0;if(!(ub[k[ia+12>>2]&63](ga)|0)){ga=k[x>>2]|0;ja=k[ga>>2]|0;k[ja+20>>2]=25;qb[k[ja>>2]&127](ga)}k[h>>2]=k[ia>>2];k[n>>2]=k[ia+4>>2]}do if((ha|0)==255){ia=k[h>>2]|0;k[h>>2]=ia+1;i[ia>>0]=0;ia=(k[n>>2]|0)+-1|0;k[n>>2]=ia;if(ia)break;ia=k[x>>2]|0;ga=k[ia+24>>2]|0;if(!(ub[k[ga+12>>2]&63](ia)|0)){ia=k[x>>2]|0;ja=k[ia>>2]|0;k[ja+20>>2]=25;qb[k[ja>>2]&127](ia)}k[h>>2]=k[ga>>2];k[n>>2]=k[ga+4>>2]}while(0);ha=$<<8;W=W+-8|0;if((W|0)<=7){ka=ha;break}else $=ha}la=Z&7;ma=ka}else{la=Z;ma=_}k[D>>2]=ma;k[v>>2]=la}$=R+-1|0;if(!$)break a;R=$;Y=Y+1|0;X=k[w>>2]|0}}while(0);k[t>>2]=0}V=k[p>>2]|0;b:do if(!(k[w>>2]|0)){S=k[e+60+(V<<2)>>2]|0;T=k[S+960>>2]|0;X=i[S+1264>>0]|0;S=X<<24>>24;if(X<<24>>24==0?(X=k[x>>2]|0,Y=k[X>>2]|0,k[Y+20>>2]=41,qb[k[Y>>2]&127](X),(k[w>>2]|0)!=0):0){na=83;break}X=(k[v>>2]|0)+S|0;Y=((1<<S)+-1&T)<<24-X|k[D>>2];if((X|0)>7){T=X;S=Y;while(1){R=S>>>16;$=R&255;W=k[h>>2]|0;k[h>>2]=W+1;i[W>>0]=R;R=(k[n>>2]|0)+-1|0;k[n>>2]=R;if(!R){R=k[x>>2]|0;W=k[R+24>>2]|0;if(!(ub[k[W+12>>2]&63](R)|0)){R=k[x>>2]|0;ha=k[R>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](R)}k[h>>2]=k[W>>2];k[n>>2]=k[W+4>>2]}do if(($|0)==255){W=k[h>>2]|0;k[h>>2]=W+1;i[W>>0]=0;W=(k[n>>2]|0)+-1|0;k[n>>2]=W;if(W)break;W=k[x>>2]|0;R=k[W+24>>2]|0;if(!(ub[k[R+12>>2]&63](W)|0)){W=k[x>>2]|0;ha=k[W>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](W)}k[h>>2]=k[R>>2];k[n>>2]=k[R+4>>2]}while(0);$=S<<8;T=T+-8|0;if((T|0)<=7){oa=$;break}else S=$}pa=k[w>>2]|0;qa=X&7;ra=oa}else{pa=0;qa=X;ra=Y}k[D>>2]=ra;k[v>>2]=qa;S=Q+-16|0;if((O|0)!=0&(pa|0)==0){T=O;$=P;_=0;while(1){if(!_){Z=k[v>>2]|0;R=Z+1|0;W=((l[$>>0]|0)&1)<<23-Z|k[D>>2];if((R|0)>7){Z=R;ha=W;while(1){ga=ha>>>16;ia=ga&255;ja=k[h>>2]|0;k[h>>2]=ja+1;i[ja>>0]=ga;ga=(k[n>>2]|0)+-1|0;k[n>>2]=ga;if(!ga){ga=k[x>>2]|0;ja=k[ga+24>>2]|0;if(!(ub[k[ja+12>>2]&63](ga)|0)){ga=k[x>>2]|0;sa=k[ga>>2]|0;k[sa+20>>2]=25;qb[k[sa>>2]&127](ga)}k[h>>2]=k[ja>>2];k[n>>2]=k[ja+4>>2]}do if((ia|0)==255){ja=k[h>>2]|0;k[h>>2]=ja+1;i[ja>>0]=0;ja=(k[n>>2]|0)+-1|0;k[n>>2]=ja;if(ja)break;ja=k[x>>2]|0;ga=k[ja+24>>2]|0;if(!(ub[k[ga+12>>2]&63](ja)|0)){ja=k[x>>2]|0;sa=k[ja>>2]|0;k[sa+20>>2]=25;qb[k[sa>>2]&127](ja)}k[h>>2]=k[ga>>2];k[n>>2]=k[ga+4>>2]}while(0);ia=ha<<8;Z=Z+-8|0;if((Z|0)<=7){ta=ia;break}else ha=ia}ua=R&7;va=ta}else{ua=R;va=W}k[D>>2]=va;k[v>>2]=ua}ha=T+-1|0;if(!ha){wa=S;break b}T=ha;$=$+1|0;_=k[w>>2]|0}}else wa=S}else{_=(k[e+92+(V<<2)>>2]|0)+960|0;k[_>>2]=(k[_>>2]|0)+1;na=83}while(0);if((na|0)==83){na=0;wa=Q+-16|0}V=k[u>>2]|0;if((wa|0)<16){L=0;M=V;N=wa;break}else{O=0;P=V;Q=wa}}}if((H|0)>1){i[M+L>>0]=H&1;I=L+1|0;J=M;K=N;break}Q=k[a>>2]|0;if(Q){P=0;O=Q;while(1){O=O>>1;if(!O){xa=P;break}else P=P+1|0}if((xa|0)>14){P=k[x>>2]|0;O=k[P>>2]|0;k[O+20>>2]=41;qb[k[O>>2]&127](P)}P=k[p>>2]|0;O=xa<<4;do if(!(k[w>>2]|0)){Q=k[e+60+(P<<2)>>2]|0;V=k[Q+(O<<2)>>2]|0;_=i[Q+1024+O>>0]|0;Q=_<<24>>24;if(_<<24>>24==0?(_=k[x>>2]|0,$=k[_>>2]|0,k[$+20>>2]=41,qb[k[$>>2]&127](_),(k[w>>2]|0)!=0):0)break;_=(k[v>>2]|0)+Q|0;$=((1<<Q)+-1&V)<<24-_|k[D>>2];if((_|0)>7){V=_;Q=$;while(1){T=Q>>>16;Y=T&255;X=k[h>>2]|0;k[h>>2]=X+1;i[X>>0]=T;T=(k[n>>2]|0)+-1|0;k[n>>2]=T;if(!T){T=k[x>>2]|0;X=k[T+24>>2]|0;if(!(ub[k[X+12>>2]&63](T)|0)){T=k[x>>2]|0;ha=k[T>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](T)}k[h>>2]=k[X>>2];k[n>>2]=k[X+4>>2]}do if((Y|0)==255){X=k[h>>2]|0;k[h>>2]=X+1;i[X>>0]=0;X=(k[n>>2]|0)+-1|0;k[n>>2]=X;if(X)break;X=k[x>>2]|0;T=k[X+24>>2]|0;if(!(ub[k[T+12>>2]&63](X)|0)){X=k[x>>2]|0;ha=k[X>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](X)}k[h>>2]=k[T>>2];k[n>>2]=k[T+4>>2]}while(0);Y=Q<<8;V=V+-8|0;if((V|0)<=7){ya=Y;break}else Q=Y}za=_&7;Aa=ya}else{za=_;Aa=$}k[D>>2]=Aa;k[v>>2]=za}else{Q=(k[e+92+(P<<2)>>2]|0)+(O<<2)|0;k[Q>>2]=(k[Q>>2]|0)+1}while(0);if((xa|0)!=0?(k[w>>2]|0)==0:0){O=(k[v>>2]|0)+xa|0;P=(k[a>>2]&(1<<xa)+-1)<<24-O|k[D>>2];if((O|0)>7){Q=O;V=P;while(1){Y=V>>>16;S=Y&255;T=k[h>>2]|0;k[h>>2]=T+1;i[T>>0]=Y;Y=(k[n>>2]|0)+-1|0;k[n>>2]=Y;if(!Y){Y=k[x>>2]|0;T=k[Y+24>>2]|0;if(!(ub[k[T+12>>2]&63](Y)|0)){Y=k[x>>2]|0;X=k[Y>>2]|0;k[X+20>>2]=25;qb[k[X>>2]&127](Y)}k[h>>2]=k[T>>2];k[n>>2]=k[T+4>>2]}do if((S|0)==255){T=k[h>>2]|0;k[h>>2]=T+1;i[T>>0]=0;T=(k[n>>2]|0)+-1|0;k[n>>2]=T;if(T)break;T=k[x>>2]|0;Y=k[T+24>>2]|0;if(!(ub[k[Y+12>>2]&63](T)|0)){T=k[x>>2]|0;X=k[T>>2]|0;k[X+20>>2]=25;qb[k[X>>2]&127](T)}k[h>>2]=k[Y>>2];k[n>>2]=k[Y+4>>2]}while(0);S=V<<8;Q=Q+-8|0;if((Q|0)<=7){Ba=S;break}else V=S}Ca=O&7;Da=Ba}else{Ca=O;Da=P}k[D>>2]=Da;k[v>>2]=Ca}k[a>>2]=0;V=k[t>>2]|0;c:do if((V|0)!=0&(k[w>>2]|0)==0){Q=V;S=k[u>>2]|0;$=0;while(1){if(!$){_=k[v>>2]|0;Y=_+1|0;T=((l[S>>0]|0)&1)<<23-_|k[D>>2];if((Y|0)>7){_=Y;X=T;while(1){ha=X>>>16;Z=ha&255;ia=k[h>>2]|0;k[h>>2]=ia+1;i[ia>>0]=ha;ha=(k[n>>2]|0)+-1|0;k[n>>2]=ha;if(!ha){ha=k[x>>2]|0;ia=k[ha+24>>2]|0;if(!(ub[k[ia+12>>2]&63](ha)|0)){ha=k[x>>2]|0;ga=k[ha>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](ha)}k[h>>2]=k[ia>>2];k[n>>2]=k[ia+4>>2]}do if((Z|0)==255){ia=k[h>>2]|0;k[h>>2]=ia+1;i[ia>>0]=0;ia=(k[n>>2]|0)+-1|0;k[n>>2]=ia;if(ia)break;ia=k[x>>2]|0;ha=k[ia+24>>2]|0;if(!(ub[k[ha+12>>2]&63](ia)|0)){ia=k[x>>2]|0;ga=k[ia>>2]|0;k[ga+20>>2]=25;qb[k[ga>>2]&127](ia)}k[h>>2]=k[ha>>2];k[n>>2]=k[ha+4>>2]}while(0);Z=X<<8;_=_+-8|0;if((_|0)<=7){Ea=Z;break}else X=Z}Fa=Y&7;Ga=Ea}else{Fa=Y;Ga=T}k[D>>2]=Ga;k[v>>2]=Fa}X=Q+-1|0;if(!X)break c;Q=X;S=S+1|0;$=k[w>>2]|0}}while(0);k[t>>2]=0}V=k[p>>2]|0;P=N<<4|1;d:do if(!(k[w>>2]|0)){O=k[e+60+(V<<2)>>2]|0;$=k[O+(P<<2)>>2]|0;S=i[O+1024+P>>0]|0;O=S<<24>>24;if(S<<24>>24==0?(S=k[x>>2]|0,Q=k[S>>2]|0,k[Q+20>>2]=41,qb[k[Q>>2]&127](S),(k[w>>2]|0)!=0):0)break;S=(k[v>>2]|0)+O|0;Q=((1<<O)+-1&$)<<24-S|k[D>>2];if((S|0)>7){$=S;O=Q;while(1){X=O>>>16;_=X&255;Z=k[h>>2]|0;k[h>>2]=Z+1;i[Z>>0]=X;X=(k[n>>2]|0)+-1|0;k[n>>2]=X;if(!X){X=k[x>>2]|0;Z=k[X+24>>2]|0;if(!(ub[k[Z+12>>2]&63](X)|0)){X=k[x>>2]|0;W=k[X>>2]|0;k[W+20>>2]=25;qb[k[W>>2]&127](X)}k[h>>2]=k[Z>>2];k[n>>2]=k[Z+4>>2]}if((_|0)==255?(_=k[h>>2]|0,k[h>>2]=_+1,i[_>>0]=0,_=(k[n>>2]|0)+-1|0,k[n>>2]=_,(_|0)==0):0){_=k[x>>2]|0;Z=k[_+24>>2]|0;if(!(ub[k[Z+12>>2]&63](_)|0)){_=k[x>>2]|0;X=k[_>>2]|0;k[X+20>>2]=25;qb[k[X>>2]&127](_)}k[h>>2]=k[Z>>2];k[n>>2]=k[Z+4>>2]}Z=O<<8;$=$+-8|0;if(($|0)<=7){Ha=Z;break}else O=Z}O=k[w>>2]|0;k[D>>2]=Ha;k[v>>2]=S&7;if(O)break}else{k[D>>2]=Q;k[v>>2]=S}O=k[v>>2]|0;$=O+1|0;Z=((m[s+(k[q+(G<<2)>>2]<<1)>>1]|0)>>>15&65535^1)<<23-O|k[D>>2];if(($|0)>7){O=$;_=Z;while(1){X=_>>>16;W=X&255;R=k[h>>2]|0;k[h>>2]=R+1;i[R>>0]=X;X=(k[n>>2]|0)+-1|0;k[n>>2]=X;if(!X){X=k[x>>2]|0;R=k[X+24>>2]|0;if(!(ub[k[R+12>>2]&63](X)|0)){X=k[x>>2]|0;ha=k[X>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](X)}k[h>>2]=k[R>>2];k[n>>2]=k[R+4>>2]}do if((W|0)==255){R=k[h>>2]|0;k[h>>2]=R+1;i[R>>0]=0;R=(k[n>>2]|0)+-1|0;k[n>>2]=R;if(R)break;R=k[x>>2]|0;X=k[R+24>>2]|0;if(!(ub[k[X+12>>2]&63](R)|0)){R=k[x>>2]|0;ha=k[R>>2]|0;k[ha+20>>2]=25;qb[k[ha>>2]&127](R)}k[h>>2]=k[X>>2];k[n>>2]=k[X+4>>2]}while(0);W=_<<8;O=O+-8|0;if((O|0)<=7){Ia=W;break}else _=W}Ja=k[w>>2]|0;Ka=$&7;La=Ia}else{Ja=0;Ka=$;La=Z}k[D>>2]=La;k[v>>2]=Ka;if((L|0)!=0&(Ja|0)==0){_=L;O=M;S=0;while(1){if(!S){Q=k[v>>2]|0;W=Q+1|0;T=((l[O>>0]|0)&1)<<23-Q|k[D>>2];if((W|0)>7){Q=W;Y=T;while(1){X=Y>>>16;R=X&255;ha=k[h>>2]|0;k[h>>2]=ha+1;i[ha>>0]=X;X=(k[n>>2]|0)+-1|0;k[n>>2]=X;if(!X){X=k[x>>2]|0;ha=k[X+24>>2]|0;if(!(ub[k[ha+12>>2]&63](X)|0)){X=k[x>>2]|0;ia=k[X>>2]|0;k[ia+20>>2]=25;qb[k[ia>>2]&127](X)}k[h>>2]=k[ha>>2];k[n>>2]=k[ha+4>>2]}do if((R|0)==255){ha=k[h>>2]|0;k[h>>2]=ha+1;i[ha>>0]=0;ha=(k[n>>2]|0)+-1|0;k[n>>2]=ha;if(ha)break;ha=k[x>>2]|0;X=k[ha+24>>2]|0;if(!(ub[k[X+12>>2]&63](ha)|0)){ha=k[x>>2]|0;ia=k[ha>>2]|0;k[ia+20>>2]=25;qb[k[ia>>2]&127](ha)}k[h>>2]=k[X>>2];k[n>>2]=k[X+4>>2]}while(0);R=Y<<8;Q=Q+-8|0;if((Q|0)<=7){Ma=R;break}else Y=R}Na=W&7;Oa=Ma}else{Na=W;Oa=T}k[D>>2]=Oa;k[v>>2]=Na}Y=_+-1|0;if(!Y)break d;_=Y;O=O+1|0;S=k[w>>2]|0}}}else{S=(k[e+92+(V<<2)>>2]|0)+(P<<2)|0;k[S>>2]=(k[S>>2]|0)+1}while(0);I=0;J=k[u>>2]|0;K=0}while(0);if((G|0)<(o|0)){E=I;F=J;G=G+1|0;b=K}else{z=u;A=t;B=I;C=K;break}}}}else{z=e+136|0;A=e+132|0;B=0;C=0}if((C|0)>0|(B|0)!=0?(C=e+128|0,K=(k[C>>2]|0)+1|0,k[C>>2]=K,I=(k[A>>2]|0)+B|0,k[A>>2]=I,!((K|0)==0|I>>>0<938&(K|0)!=32767)):0){I=0;B=K;while(1){B=B>>1;if(!B){Pa=I;break}else I=I+1|0}if((Pa|0)>14){I=k[e+120>>2]|0;B=k[I>>2]|0;k[B+20>>2]=41;qb[k[B>>2]&127](I)}I=k[e+124>>2]|0;B=Pa<<4;K=e+108|0;do if(!(k[K>>2]|0)){t=k[e+60+(I<<2)>>2]|0;u=k[t+(B<<2)>>2]|0;b=i[t+1024+B>>0]|0;t=b<<24>>24;if(b<<24>>24==0?(b=k[e+120>>2]|0,G=k[b>>2]|0,k[G+20>>2]=41,qb[k[G>>2]&127](b),(k[K>>2]|0)!=0):0)break;b=e+16|0;G=(k[b>>2]|0)+t|0;J=e+12|0;F=((1<<t)+-1&u)<<24-G|k[J>>2];if((G|0)>7){u=e+120|0;t=G;E=F;while(1){o=E>>>16;w=o&255;Na=k[h>>2]|0;k[h>>2]=Na+1;i[Na>>0]=o;o=(k[n>>2]|0)+-1|0;k[n>>2]=o;if(!o){o=k[u>>2]|0;Na=k[o+24>>2]|0;if(!(ub[k[Na+12>>2]&63](o)|0)){o=k[u>>2]|0;v=k[o>>2]|0;k[v+20>>2]=25;qb[k[v>>2]&127](o)}k[h>>2]=k[Na>>2];k[n>>2]=k[Na+4>>2]}if((w|0)==255?(w=k[h>>2]|0,k[h>>2]=w+1,i[w>>0]=0,w=(k[n>>2]|0)+-1|0,k[n>>2]=w,(w|0)==0):0){w=k[u>>2]|0;Na=k[w+24>>2]|0;if(!(ub[k[Na+12>>2]&63](w)|0)){w=k[u>>2]|0;o=k[w>>2]|0;k[o+20>>2]=25;qb[k[o>>2]&127](w)}k[h>>2]=k[Na>>2];k[n>>2]=k[Na+4>>2]}Na=E<<8;t=t+-8|0;if((t|0)<=7){Qa=Na;break}else E=Na}Ra=G&7;Sa=Qa}else{Ra=G;Sa=F}k[J>>2]=Sa;k[b>>2]=Ra}else{E=(k[e+92+(I<<2)>>2]|0)+(B<<2)|0;k[E>>2]=(k[E>>2]|0)+1}while(0);if((Pa|0)!=0?(k[K>>2]|0)==0:0){B=e+16|0;I=(k[B>>2]|0)+Pa|0;Ra=e+12|0;Sa=(k[C>>2]&(1<<Pa)+-1)<<24-I|k[Ra>>2];if((I|0)>7){Pa=e+120|0;Qa=I;E=Sa;while(1){t=E>>>16;u=t&255;Na=k[h>>2]|0;k[h>>2]=Na+1;i[Na>>0]=t;t=(k[n>>2]|0)+-1|0;k[n>>2]=t;if(!t){t=k[Pa>>2]|0;Na=k[t+24>>2]|0;if(!(ub[k[Na+12>>2]&63](t)|0)){t=k[Pa>>2]|0;w=k[t>>2]|0;k[w+20>>2]=25;qb[k[w>>2]&127](t)}k[h>>2]=k[Na>>2];k[n>>2]=k[Na+4>>2]}if((u|0)==255?(u=k[h>>2]|0,k[h>>2]=u+1,i[u>>0]=0,u=(k[n>>2]|0)+-1|0,k[n>>2]=u,(u|0)==0):0){u=k[Pa>>2]|0;Na=k[u+24>>2]|0;if(!(ub[k[Na+12>>2]&63](u)|0)){u=k[Pa>>2]|0;t=k[u>>2]|0;k[t+20>>2]=25;qb[k[t>>2]&127](u)}k[h>>2]=k[Na>>2];k[n>>2]=k[Na+4>>2]}Na=E<<8;Qa=Qa+-8|0;if((Qa|0)<=7){Ta=Na;break}else E=Na}Ua=I&7;Va=Ta}else{Ua=I;Va=Sa}k[Ra>>2]=Va;k[B>>2]=Ua}k[C>>2]=0;C=k[A>>2]|0;e:do if((C|0)!=0&(k[K>>2]|0)==0){Ua=e+16|0;B=e+12|0;Va=e+120|0;Ra=C;Sa=k[z>>2]|0;I=0;while(1){if(!I){Ta=k[Ua>>2]|0;E=Ta+1|0;Qa=((l[Sa>>0]|0)&1)<<23-Ta|k[B>>2];if((E|0)>7){Ta=E;Pa=Qa;while(1){Na=Pa>>>16;u=Na&255;t=k[h>>2]|0;k[h>>2]=t+1;i[t>>0]=Na;Na=(k[n>>2]|0)+-1|0;k[n>>2]=Na;if(!Na){Na=k[Va>>2]|0;t=k[Na+24>>2]|0;if(!(ub[k[t+12>>2]&63](Na)|0)){Na=k[Va>>2]|0;w=k[Na>>2]|0;k[w+20>>2]=25;qb[k[w>>2]&127](Na)}k[h>>2]=k[t>>2];k[n>>2]=k[t+4>>2]}if((u|0)==255?(u=k[h>>2]|0,k[h>>2]=u+1,i[u>>0]=0,u=(k[n>>2]|0)+-1|0,k[n>>2]=u,(u|0)==0):0){u=k[Va>>2]|0;t=k[u+24>>2]|0;if(!(ub[k[t+12>>2]&63](u)|0)){u=k[Va>>2]|0;Na=k[u>>2]|0;k[Na+20>>2]=25;qb[k[Na>>2]&127](u)}k[h>>2]=k[t>>2];k[n>>2]=k[t+4>>2]}t=Pa<<8;Ta=Ta+-8|0;if((Ta|0)<=7){Wa=t;break}else Pa=t}Xa=E&7;Ya=Wa}else{Xa=E;Ya=Qa}k[B>>2]=Ya;k[Ua>>2]=Xa}Pa=Ra+-1|0;if(!Pa)break e;Ra=Pa;Sa=Sa+1|0;I=k[K>>2]|0}}while(0);k[A>>2]=0}A=k[f>>2]|0;k[A>>2]=k[h>>2];k[A+4>>2]=k[n>>2];n=k[g>>2]|0;if(!n){r=c;return 1}g=e+36|0;A=k[g>>2]|0;if(!A){k[g>>2]=n;h=e+40|0;k[h>>2]=(k[h>>2]|0)+1&7;Za=n}else Za=A;k[g>>2]=Za+-1;r=c;return 1}function xn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;c=k[a+424>>2]|0;d=a+236|0;e=k[d>>2]|0;if(e){f=c+36|0;g=k[f>>2]|0;if(!g){h=a+292|0;if((k[h>>2]|0)>0){i=0;do{k[c+20+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[h>>2]|0));l=k[d>>2]|0}else l=e;k[f>>2]=l;m=l}else m=g;k[f>>2]=m+-1}m=a+320|0;if((k[m>>2]|0)<=0)return 1;f=a+388|0;g=a+384|0;l=0;do{e=k[a+324+(l<<2)>>2]|0;d=k[a+296+(e<<2)>>2]|0;h=b+(l<<2)|0;i=k[h>>2]|0;n=c+20+(e<<2)|0;e=k[c+76+(k[d+20>>2]<<2)>>2]|0;o=k[c+92+(k[d+24>>2]<<2)>>2]|0;d=k[f>>2]|0;p=k[g>>2]|0;q=(j[i>>1]|0)-(k[n>>2]|0)|0;r=(q|0)<0?0-q|0:q;if(r){q=0;s=r;while(1){r=q+1|0;s=s>>1;if(!s){t=r;u=q;break}else q=r}if((u|0)>10){q=k[a>>2]|0;k[q+20>>2]=6;qb[k[q>>2]&127](a);v=t}else v=t}else v=0;q=e+(v<<2)|0;k[q>>2]=(k[q>>2]|0)+1;if((d|0)>=1){q=o+960|0;s=1;r=0;while(1){w=j[i+(k[p+(s<<2)>>2]<<1)>>1]|0;x=w<<16>>16;if(!(w<<16>>16))y=r+1|0;else{if((r|0)>15){z=r+-16|0;A=z>>>4;k[q>>2]=A+1+(k[q>>2]|0);B=z-(A<<4)|0}else B=r;A=1;z=w<<16>>16<0?0-x|0:x;while(1){z=z>>1;if(!z){C=A;break}else A=A+1|0}if((C|0)>10){A=k[a>>2]|0;k[A+20>>2]=6;qb[k[A>>2]&127](a)}A=o+(C+(B<<4)<<2)|0;k[A>>2]=(k[A>>2]|0)+1;y=0}if((s|0)==(d|0)){D=y;break}else{s=s+1|0;r=y}}if((D|0)>0)k[o>>2]=(k[o>>2]|0)+1}k[n>>2]=j[k[h>>2]>>1];l=l+1|0}while((l|0)<(k[m>>2]|0));return 1}function yn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0;c=r;r=r+48|0;d=c;e=k[a+424>>2]|0;f=a+24|0;g=k[f>>2]|0;h=k[g>>2]|0;k[d>>2]=h;l=d+4|0;k[l>>2]=k[g+4>>2];g=d+8|0;m=e+12|0;k[g>>2]=k[m>>2];k[g+4>>2]=k[m+4>>2];k[g+8>>2]=k[m+8>>2];k[g+12>>2]=k[m+12>>2];k[g+16>>2]=k[m+16>>2];k[g+20>>2]=k[m+20>>2];n=d+32|0;k[n>>2]=a;o=a+236|0;p=h;if((k[o>>2]|0)!=0?(k[e+36>>2]|0)==0:0){h=k[e+40>>2]|0;q=d+12|0;s=k[q>>2]|0;t=d+8|0;do if((s|0)>0){u=p;v=s+7|0;w=k[t>>2]|127<<17-s;while(1){x=w>>>16;y=x&255;k[d>>2]=u+1;i[u>>0]=x;x=(k[l>>2]|0)+-1|0;k[l>>2]=x;if(!x){x=k[n>>2]|0;z=k[x+24>>2]|0;if(!(ub[k[z+12>>2]&63](x)|0)){A=0;B=116;break}k[d>>2]=k[z>>2];k[l>>2]=k[z+4>>2]}if((y|0)==255?(y=k[d>>2]|0,k[d>>2]=y+1,i[y>>0]=0,y=(k[l>>2]|0)+-1|0,k[l>>2]=y,(y|0)==0):0){y=k[n>>2]|0;z=k[y+24>>2]|0;if(!(ub[k[z+12>>2]&63](y)|0)){A=0;B=116;break}k[d>>2]=k[z>>2];k[l>>2]=k[z+4>>2]}z=v+-8|0;if((z|0)<=7){B=14;break}u=k[d>>2]|0;v=z;w=w<<8}if((B|0)==14){C=k[d>>2]|0;break}else if((B|0)==116){r=c;return A|0}}else C=p;while(0);k[t>>2]=0;k[q>>2]=0;k[d>>2]=C+1;i[C>>0]=-1;C=(k[l>>2]|0)+-1|0;k[l>>2]=C;do if(!C){q=k[n>>2]|0;t=k[q+24>>2]|0;if(!(ub[k[t+12>>2]&63](q)|0)){A=0;r=c;return A|0}else{q=k[t>>2]|0;k[d>>2]=q;k[l>>2]=k[t+4>>2];D=q;break}}else D=k[d>>2]|0;while(0);k[d>>2]=D+1;i[D>>0]=h+208;h=(k[l>>2]|0)+-1|0;k[l>>2]=h;D=k[n>>2]|0;do if(!h){C=k[D+24>>2]|0;if(!(ub[k[C+12>>2]&63](D)|0)){A=0;r=c;return A|0}else{k[d>>2]=k[C>>2];k[l>>2]=k[C+4>>2];break}}while(0);if((k[D+292>>2]|0)>0){h=0;do{k[d+16+(h<<2)>>2]=0;h=h+1|0;C=k[n>>2]|0}while((h|0)<(k[C+292>>2]|0));E=C}else E=D}else E=a;D=a+320|0;a:do if((k[D>>2]|0)>0){h=d+12|0;C=d+8|0;q=E;t=0;b:while(1){p=k[a+324+(t<<2)>>2]|0;s=k[a+296+(p<<2)>>2]|0;w=b+(t<<2)|0;v=k[w>>2]|0;u=d+16+(p<<2)|0;p=k[e+44+(k[s+20>>2]<<2)>>2]|0;z=k[e+60+(k[s+24>>2]<<2)>>2]|0;s=k[q+388>>2]|0;y=k[q+384>>2]|0;x=(j[v>>1]|0)-(k[u>>2]|0)|0;F=(x>>31)+x|0;G=(x|0)<0?0-x|0:x;if(G){x=0;H=G;while(1){G=x+1|0;H=H>>1;if(!H){I=G;J=x;break}else x=G}if((J|0)>10){x=k[q>>2]|0;k[x+20>>2]=6;qb[k[x>>2]&127](q);K=I}else K=I}else K=0;x=k[p+(K<<2)>>2]|0;H=i[p+1024+K>>0]|0;G=H<<24>>24;if(!(H<<24>>24)){H=k[q>>2]|0;k[H+20>>2]=41;qb[k[H>>2]&127](q)}H=(k[h>>2]|0)+G|0;L=((1<<G)+-1&x)<<24-H|k[C>>2];if((H|0)>7){x=H;G=L;while(1){M=G>>>16;N=M&255;O=k[d>>2]|0;k[d>>2]=O+1;i[O>>0]=M;M=(k[l>>2]|0)+-1|0;k[l>>2]=M;if(!M){M=k[n>>2]|0;O=k[M+24>>2]|0;if(!(ub[k[O+12>>2]&63](M)|0)){A=0;B=116;break b}k[d>>2]=k[O>>2];k[l>>2]=k[O+4>>2]}if((N|0)==255?(N=k[d>>2]|0,k[d>>2]=N+1,i[N>>0]=0,N=(k[l>>2]|0)+-1|0,k[l>>2]=N,(N|0)==0):0){N=k[n>>2]|0;O=k[N+24>>2]|0;if(!(ub[k[O+12>>2]&63](N)|0)){A=0;B=116;break b}k[d>>2]=k[O>>2];k[l>>2]=k[O+4>>2]}O=G<<8;N=x+-8|0;if((N|0)>7){x=N;G=O}else{P=O;Q=N;break}}}else{P=L;Q=H}k[C>>2]=P;k[h>>2]=Q;if(!K){R=P;S=Q}else{G=Q+K|0;x=((1<<K)+-1&F)<<24-G|P;if((G|0)>7){p=G;N=x;while(1){O=N>>>16;M=O&255;T=k[d>>2]|0;k[d>>2]=T+1;i[T>>0]=O;O=(k[l>>2]|0)+-1|0;k[l>>2]=O;if(!O){O=k[n>>2]|0;T=k[O+24>>2]|0;if(!(ub[k[T+12>>2]&63](O)|0)){A=0;B=116;break b}k[d>>2]=k[T>>2];k[l>>2]=k[T+4>>2]}if((M|0)==255?(M=k[d>>2]|0,k[d>>2]=M+1,i[M>>0]=0,M=(k[l>>2]|0)+-1|0,k[l>>2]=M,(M|0)==0):0){M=k[n>>2]|0;T=k[M+24>>2]|0;if(!(ub[k[T+12>>2]&63](M)|0)){A=0;B=116;break b}k[d>>2]=k[T>>2];k[l>>2]=k[T+4>>2]}T=N<<8;M=p+-8|0;if((M|0)>7){p=M;N=T}else{U=M;V=T;break}}}else{U=G;V=x}k[C>>2]=V;k[h>>2]=U;R=V;S=U}if((s|0)>=1){N=z+960|0;p=z+1264|0;F=R;H=S;L=1;T=0;while(1){M=j[v+(k[y+(L<<2)>>2]<<1)>>1]|0;O=M<<16>>16;if(!(M<<16>>16)){W=H;X=F;Y=T+1|0}else{if((T|0)>15){Z=H;_=F;$=T;while(1){aa=k[N>>2]|0;ba=i[p>>0]|0;ca=ba<<24>>24;if(!(ba<<24>>24)){ba=k[n>>2]|0;da=k[ba>>2]|0;k[da+20>>2]=41;qb[k[da>>2]&127](ba)}ba=Z+ca|0;da=((1<<ca)+-1&aa)<<24-ba|_;if((ba|0)>7){aa=ba;ca=da;while(1){ea=ca>>>16;fa=ea&255;ga=k[d>>2]|0;k[d>>2]=ga+1;i[ga>>0]=ea;ea=(k[l>>2]|0)+-1|0;k[l>>2]=ea;if(!ea){ea=k[n>>2]|0;ga=k[ea+24>>2]|0;if(!(ub[k[ga+12>>2]&63](ea)|0)){A=0;B=116;break b}k[d>>2]=k[ga>>2];k[l>>2]=k[ga+4>>2]}do if((fa|0)==255){ga=k[d>>2]|0;k[d>>2]=ga+1;i[ga>>0]=0;ga=(k[l>>2]|0)+-1|0;k[l>>2]=ga;if(ga)break;ga=k[n>>2]|0;ea=k[ga+24>>2]|0;if(!(ub[k[ea+12>>2]&63](ga)|0)){A=0;B=116;break b}k[d>>2]=k[ea>>2];k[l>>2]=k[ea+4>>2]}while(0);fa=ca<<8;ea=aa+-8|0;if((ea|0)>7){aa=ea;ca=fa}else{ha=ea;ia=fa;break}}}else{ha=ba;ia=da}k[C>>2]=ia;k[h>>2]=ha;ca=$+-16|0;if((ca|0)>15){Z=ha;_=ia;$=ca}else{ja=ha;ka=ia;la=ca;break}}}else{ja=H;ka=F;la=T}$=M<<16>>16>>15;_=1;Z=M<<16>>16<0?0-O|0:O;while(1){Z=Z>>1;if(!Z){ma=_;break}else _=_+1|0}_=($<<16>>16)+O|0;if((ma|0)>10){Z=k[n>>2]|0;M=k[Z>>2]|0;k[M+20>>2]=6;qb[k[M>>2]&127](Z)}Z=ma+(la<<4)|0;M=k[z+(Z<<2)>>2]|0;ca=i[z+1024+Z>>0]|0;Z=ca<<24>>24;if(!(ca<<24>>24)){ca=k[n>>2]|0;aa=k[ca>>2]|0;k[aa+20>>2]=41;qb[k[aa>>2]&127](ca)}ca=ja+Z|0;aa=((1<<Z)+-1&M)<<24-ca|ka;if((ca|0)>7){M=ca;Z=aa;while(1){fa=Z>>>16;ea=fa&255;ga=k[d>>2]|0;k[d>>2]=ga+1;i[ga>>0]=fa;fa=(k[l>>2]|0)+-1|0;k[l>>2]=fa;if(!fa){fa=k[n>>2]|0;ga=k[fa+24>>2]|0;if(!(ub[k[ga+12>>2]&63](fa)|0)){A=0;B=116;break b}k[d>>2]=k[ga>>2];k[l>>2]=k[ga+4>>2]}do if((ea|0)==255){ga=k[d>>2]|0;k[d>>2]=ga+1;i[ga>>0]=0;ga=(k[l>>2]|0)+-1|0;k[l>>2]=ga;if(ga)break;ga=k[n>>2]|0;fa=k[ga+24>>2]|0;if(!(ub[k[fa+12>>2]&63](ga)|0)){A=0;B=116;break b}k[d>>2]=k[fa>>2];k[l>>2]=k[fa+4>>2]}while(0);ea=Z<<8;da=M+-8|0;if((da|0)>7){M=da;Z=ea}else{na=da;oa=ea;break}}}else{na=ca;oa=aa}k[C>>2]=oa;k[h>>2]=na;if(!ma){Z=k[n>>2]|0;M=k[Z>>2]|0;k[M+20>>2]=41;qb[k[M>>2]&127](Z)}Z=na+ma|0;M=((1<<ma)+-1&_)<<24-Z|oa;if((Z|0)>7){O=Z;$=M;while(1){ea=$>>>16;da=ea&255;ba=k[d>>2]|0;k[d>>2]=ba+1;i[ba>>0]=ea;ea=(k[l>>2]|0)+-1|0;k[l>>2]=ea;if(!ea){ea=k[n>>2]|0;ba=k[ea+24>>2]|0;if(!(ub[k[ba+12>>2]&63](ea)|0)){A=0;B=116;break b}k[d>>2]=k[ba>>2];k[l>>2]=k[ba+4>>2]}do if((da|0)==255){ba=k[d>>2]|0;k[d>>2]=ba+1;i[ba>>0]=0;ba=(k[l>>2]|0)+-1|0;k[l>>2]=ba;if(ba)break;ba=k[n>>2]|0;ea=k[ba+24>>2]|0;if(!(ub[k[ea+12>>2]&63](ba)|0)){A=0;B=116;break b}k[d>>2]=k[ea>>2];k[l>>2]=k[ea+4>>2]}while(0);da=$<<8;ea=O+-8|0;if((ea|0)>7){O=ea;$=da}else{pa=ea;qa=da;break}}}else{pa=Z;qa=M}k[C>>2]=qa;k[h>>2]=pa;W=pa;X=qa;Y=0}if((L|0)<(s|0)){F=X;H=W;L=L+1|0;T=Y}else{ra=W;sa=X;ta=Y;break}}if((ta|0)>0){T=k[z>>2]|0;L=i[z+1024>>0]|0;H=L<<24>>24;if(!(L<<24>>24)){L=k[n>>2]|0;F=k[L>>2]|0;k[F+20>>2]=41;qb[k[F>>2]&127](L)}L=ra+H|0;F=((1<<H)+-1&T)<<24-L|sa;if((L|0)>7){T=L;H=F;while(1){s=H>>>16;p=s&255;N=k[d>>2]|0;k[d>>2]=N+1;i[N>>0]=s;s=(k[l>>2]|0)+-1|0;k[l>>2]=s;if(!s){s=k[n>>2]|0;N=k[s+24>>2]|0;if(!(ub[k[N+12>>2]&63](s)|0)){A=0;B=116;break b}k[d>>2]=k[N>>2];k[l>>2]=k[N+4>>2]}if((p|0)==255?(p=k[d>>2]|0,k[d>>2]=p+1,i[p>>0]=0,p=(k[l>>2]|0)+-1|0,k[l>>2]=p,(p|0)==0):0){p=k[n>>2]|0;N=k[p+24>>2]|0;if(!(ub[k[N+12>>2]&63](p)|0)){A=0;B=116;break b}k[d>>2]=k[N>>2];k[l>>2]=k[N+4>>2]}N=H<<8;p=T+-8|0;if((p|0)>7){T=p;H=N}else{ua=p;va=N;break}}}else{ua=L;va=F}k[C>>2]=va;k[h>>2]=ua}}k[u>>2]=j[k[w>>2]>>1];H=t+1|0;if((H|0)>=(k[D>>2]|0))break a;q=k[n>>2]|0;t=H}if((B|0)==116){r=c;return A|0}}while(0);B=k[f>>2]|0;k[B>>2]=k[d>>2];k[B+4>>2]=k[l>>2];k[m>>2]=k[g>>2];k[m+4>>2]=k[g+4>>2];k[m+8>>2]=k[g+8>>2];k[m+12>>2]=k[g+12>>2];k[m+16>>2]=k[g+16>>2];k[m+20>>2]=k[g+20>>2];g=k[o>>2]|0;if(!g){A=1;r=c;return A|0}o=e+36|0;m=k[o>>2]|0;if(!m){k[o>>2]=g;l=e+40|0;k[l>>2]=(k[l>>2]|0)+1&7;wa=g}else wa=m;k[o>>2]=wa+-1;A=1;r=c;return A|0}function zn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=r;r=r+1296|0;f=e+1028|0;g=e;if(c>>>0>3){h=k[a>>2]|0;k[h+20>>2]=52;k[h+24>>2]=c;qb[k[h>>2]&127](a)}h=(b|0)!=0;b=k[(h?a+120+(c<<2)|0:a+136+(c<<2)|0)>>2]|0;if(!b){j=k[a>>2]|0;k[j+20>>2]=52;k[j+24>>2]=c;qb[k[j>>2]&127](a)}j=k[d>>2]|0;if(!j){c=nb[k[k[a+4>>2]>>2]&63](a,1,1280)|0;k[d>>2]=c;m=a;n=c}else{m=a;n=j}j=1;c=0;while(1){d=i[b+j>>0]|0;o=d&255;p=o+c|0;if((p|0)>256){q=k[a>>2]|0;k[q+20>>2]=9;qb[k[q>>2]&127](m)}if(!(d<<24>>24))s=c;else{qr(f+c|0,j&255|0,o|0)|0;s=p}j=j+1|0;if((j|0)==17){t=s;break}else c=s}i[f+t>>0]=0;s=i[f>>0]|0;if(s<<24>>24){c=s;j=0;p=0;o=s<<24>>24;while(1){if((c<<24>>24|0)==(o|0)){s=j;d=p;while(1){q=d+1|0;k[g+(d<<2)>>2]=s;u=s+1|0;v=i[f+q>>0]|0;if((v<<24>>24|0)==(o|0)){s=u;d=q}else{w=v;x=u;y=q;break}}}else{w=c;x=j;y=p}if((x|0)>=(1<<o|0)){d=k[a>>2]|0;k[d+20>>2]=9;qb[k[d>>2]&127](m)}if(!(w<<24>>24))break;else{c=w;j=x<<1;p=y;o=o+1|0}}}qr(n+1024|0,0,256)|0;o=h?15:255;if((t|0)>0)z=0;else{r=e;return}do{h=l[b+17+z>>0]|0;y=n+1024+h|0;if(!(h>>>0<=o>>>0?(i[y>>0]|0)==0:0)){p=k[a>>2]|0;k[p+20>>2]=9;qb[k[p>>2]&127](m)}k[n+(h<<2)>>2]=k[g+(z<<2)>>2];i[y>>0]=i[f+z>>0]|0;z=z+1|0}while((z|0)!=(t|0));r=e;return}function An(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;c=a+128|0;d=k[c>>2]|0;if(!d)e=a+108|0;else{f=0;g=d;while(1){g=g>>1;if(!g){h=f;break}else f=f+1|0}if((h|0)>14){f=k[a+120>>2]|0;g=k[f>>2]|0;k[g+20>>2]=41;qb[k[g>>2]&127](f)}f=k[a+124>>2]|0;g=h<<4;d=a+108|0;do if(!(k[d>>2]|0)){j=k[a+60+(f<<2)>>2]|0;m=k[j+(g<<2)>>2]|0;n=i[j+1024+g>>0]|0;j=n<<24>>24;if(n<<24>>24==0?(n=k[a+120>>2]|0,o=k[n>>2]|0,k[o+20>>2]=41,qb[k[o>>2]&127](n),(k[d>>2]|0)!=0):0)break;n=a+16|0;o=(k[n>>2]|0)+j|0;p=a+12|0;q=((1<<j)+-1&m)<<24-o|k[p>>2];if((o|0)>7){m=a+112|0;j=a+116|0;r=a+120|0;s=o;t=q;while(1){u=t>>>16;v=u&255;w=k[m>>2]|0;k[m>>2]=w+1;i[w>>0]=u;u=(k[j>>2]|0)+-1|0;k[j>>2]=u;if(!u){u=k[r>>2]|0;w=k[u+24>>2]|0;if(!(ub[k[w+12>>2]&63](u)|0)){u=k[r>>2]|0;x=k[u>>2]|0;k[x+20>>2]=25;qb[k[x>>2]&127](u)}k[m>>2]=k[w>>2];k[j>>2]=k[w+4>>2]}if((v|0)==255?(v=k[m>>2]|0,k[m>>2]=v+1,i[v>>0]=0,v=(k[j>>2]|0)+-1|0,k[j>>2]=v,(v|0)==0):0){v=k[r>>2]|0;w=k[v+24>>2]|0;if(!(ub[k[w+12>>2]&63](v)|0)){v=k[r>>2]|0;u=k[v>>2]|0;k[u+20>>2]=25;qb[k[u>>2]&127](v)}k[m>>2]=k[w>>2];k[j>>2]=k[w+4>>2]}w=t<<8;s=s+-8|0;if((s|0)<=7){y=w;break}else t=w}z=o&7;A=y}else{z=o;A=q}k[p>>2]=A;k[n>>2]=z}else{t=(k[a+92+(f<<2)>>2]|0)+(g<<2)|0;k[t>>2]=(k[t>>2]|0)+1}while(0);if((h|0)!=0?(k[d>>2]|0)==0:0){g=a+16|0;f=(k[g>>2]|0)+h|0;z=a+12|0;A=(k[c>>2]&(1<<h)+-1)<<24-f|k[z>>2];if((f|0)>7){h=a+112|0;y=a+116|0;t=a+120|0;s=f;j=A;while(1){m=j>>>16;r=m&255;w=k[h>>2]|0;k[h>>2]=w+1;i[w>>0]=m;m=(k[y>>2]|0)+-1|0;k[y>>2]=m;if(!m){m=k[t>>2]|0;w=k[m+24>>2]|0;if(!(ub[k[w+12>>2]&63](m)|0)){m=k[t>>2]|0;v=k[m>>2]|0;k[v+20>>2]=25;qb[k[v>>2]&127](m)}k[h>>2]=k[w>>2];k[y>>2]=k[w+4>>2]}if((r|0)==255?(r=k[h>>2]|0,k[h>>2]=r+1,i[r>>0]=0,r=(k[y>>2]|0)+-1|0,k[y>>2]=r,(r|0)==0):0){r=k[t>>2]|0;w=k[r+24>>2]|0;if(!(ub[k[w+12>>2]&63](r)|0)){r=k[t>>2]|0;m=k[r>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](r)}k[h>>2]=k[w>>2];k[y>>2]=k[w+4>>2]}w=j<<8;s=s+-8|0;if((s|0)<=7){B=w;break}else j=w}C=f&7;D=B}else{C=f;D=A}k[z>>2]=D;k[g>>2]=C}k[c>>2]=0;C=a+132|0;g=k[C>>2]|0;a:do if((g|0)!=0&(k[d>>2]|0)==0){D=a+16|0;z=a+12|0;A=a+112|0;f=a+116|0;B=a+120|0;j=g;s=k[a+136>>2]|0;y=0;while(1){if(!y){h=k[D>>2]|0;t=h+1|0;w=((l[s>>0]|0)&1)<<23-h|k[z>>2];if((t|0)>7){h=t;r=w;while(1){m=r>>>16;v=m&255;u=k[A>>2]|0;k[A>>2]=u+1;i[u>>0]=m;m=(k[f>>2]|0)+-1|0;k[f>>2]=m;if(!m){m=k[B>>2]|0;u=k[m+24>>2]|0;if(!(ub[k[u+12>>2]&63](m)|0)){m=k[B>>2]|0;x=k[m>>2]|0;k[x+20>>2]=25;qb[k[x>>2]&127](m)}k[A>>2]=k[u>>2];k[f>>2]=k[u+4>>2]}if((v|0)==255?(v=k[A>>2]|0,k[A>>2]=v+1,i[v>>0]=0,v=(k[f>>2]|0)+-1|0,k[f>>2]=v,(v|0)==0):0){v=k[B>>2]|0;u=k[v+24>>2]|0;if(!(ub[k[u+12>>2]&63](v)|0)){v=k[B>>2]|0;m=k[v>>2]|0;k[m+20>>2]=25;qb[k[m>>2]&127](v)}k[A>>2]=k[u>>2];k[f>>2]=k[u+4>>2]}u=r<<8;h=h+-8|0;if((h|0)<=7){E=u;break}else r=u}F=t&7;G=E}else{F=t;G=w}k[z>>2]=G;k[D>>2]=F}r=j+-1|0;if(!r)break a;j=r;s=s+1|0;y=k[d>>2]|0}}while(0);k[C>>2]=0;e=d}if(!(k[e>>2]|0)){Bn(a);e=a+112|0;d=k[e>>2]|0;k[e>>2]=d+1;i[d>>0]=-1;d=a+116|0;C=(k[d>>2]|0)+-1|0;k[d>>2]=C;if(!C){C=a+120|0;F=k[C>>2]|0;G=k[F+24>>2]|0;if(!(ub[k[G+12>>2]&63](F)|0)){F=k[C>>2]|0;C=k[F>>2]|0;k[C+20>>2]=25;qb[k[C>>2]&127](F)}F=k[G>>2]|0;k[e>>2]=F;k[d>>2]=k[G+4>>2];H=F}else H=k[e>>2]|0;k[e>>2]=H+1;i[H>>0]=b+208;b=(k[d>>2]|0)+-1|0;k[d>>2]=b;if(!b){b=a+120|0;H=k[b>>2]|0;F=k[H+24>>2]|0;if(!(ub[k[F+12>>2]&63](H)|0)){H=k[b>>2]|0;b=k[H>>2]|0;k[b+20>>2]=25;qb[k[b>>2]&127](H)}k[e>>2]=k[F>>2];k[d>>2]=k[F+4>>2]}}F=a+120|0;d=k[F>>2]|0;if(k[d+364>>2]|0){k[c>>2]=0;k[a+132>>2]=0;return}if((k[d+292>>2]|0)>0)I=0;else return;do{k[a+20+(I<<2)>>2]=0;I=I+1|0}while((I|0)<(k[(k[F>>2]|0)+292>>2]|0));return}function Bn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;if(k[a+108>>2]|0){b=a+16|0;c=a+12|0;k[c>>2]=0;k[b>>2]=0;return}d=a+16|0;e=k[d>>2]|0;f=e+7|0;g=a+12|0;h=127<<17-e|k[g>>2];if((f|0)>7){e=a+112|0;j=a+116|0;l=a+120|0;a=f;m=h;while(1){n=m>>>16;o=n&255;p=k[e>>2]|0;k[e>>2]=p+1;i[p>>0]=n;n=(k[j>>2]|0)+-1|0;k[j>>2]=n;if(!n){n=k[l>>2]|0;p=k[n+24>>2]|0;if(!(ub[k[p+12>>2]&63](n)|0)){n=k[l>>2]|0;q=k[n>>2]|0;k[q+20>>2]=25;qb[k[q>>2]&127](n)}k[e>>2]=k[p>>2];k[j>>2]=k[p+4>>2]}if((o|0)==255?(o=k[e>>2]|0,k[e>>2]=o+1,i[o>>0]=0,o=(k[j>>2]|0)+-1|0,k[j>>2]=o,(o|0)==0):0){o=k[l>>2]|0;p=k[o+24>>2]|0;if(!(ub[k[p+12>>2]&63](o)|0)){o=k[l>>2]|0;n=k[o>>2]|0;k[n+20>>2]=25;qb[k[n>>2]&127](o)}k[e>>2]=k[p>>2];k[j>>2]=k[p+4>>2]}p=m<<8;a=a+-8|0;if((a|0)<=7){r=p;break}else m=p}s=f&7;t=r}else{s=f;t=h}k[g>>2]=t;k[d>>2]=s;b=d;c=g;k[c>>2]=0;k[b>>2]=0;return}function Cn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;d=r;r=r+2096|0;e=d+2056|0;f=d+1028|0;g=d;h=e;j=h+33|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(j|0));qr(f|0,0,1028)|0;qr(g|0,-1,1028)|0;k[c+1024>>2]=1;m=-1;n=0;o=1e9;a:while(1){if((n|0)<257){p=k[c+(n<<2)>>2]|0;q=(p|0)==0|(p|0)>(o|0);m=q?m:n;n=n+1|0;o=q?o:p;continue}else{s=-1;t=0;u=1e9}while(1){p=k[c+(t<<2)>>2]|0;q=(t|0)==(m|0)|((p|0)==0|(p|0)>(u|0));v=q?s:t;t=t+1|0;if((t|0)==257){w=v;break}else{s=v;u=q?u:p}}if((w|0)<0)break;p=c+(w<<2)|0;q=c+(m<<2)|0;k[q>>2]=(k[q>>2]|0)+(k[p>>2]|0);k[p>>2]=0;p=f+(m<<2)|0;k[p>>2]=(k[p>>2]|0)+1;p=g+(m<<2)|0;q=k[p>>2]|0;if((q|0)>-1){v=q;do{q=f+(v<<2)|0;k[q>>2]=(k[q>>2]|0)+1;q=g+(v<<2)|0;v=k[q>>2]|0}while((v|0)>-1);x=q}else x=p;k[x>>2]=w;v=f+(w<<2)|0;k[v>>2]=(k[v>>2]|0)+1;v=k[g+(w<<2)>>2]|0;if((v|0)>-1)y=v;else{m=-1;n=0;o=1e9;continue}while(1){v=f+(y<<2)|0;k[v>>2]=(k[v>>2]|0)+1;v=k[g+(y<<2)>>2]|0;if((v|0)>-1)y=v;else{m=-1;n=0;o=1e9;continue a}}}o=0;do{n=k[f+(o<<2)>>2]|0;if(n){if((n|0)>32){m=k[a>>2]|0;k[m+20>>2]=40;qb[k[m>>2]&127](a)}m=e+n|0;i[m>>0]=(i[m>>0]|0)+1<<24>>24}o=o+1|0}while((o|0)!=257);z=32;while(1){o=e+z|0;a=i[o>>0]|0;if(!(a<<24>>24))A=z+-1|0;else{m=z+-2|0;n=z+-1|0;y=e+n|0;g=a;do{a=m;while(1){w=e+a|0;if(!(i[w>>0]|0))a=a+-1|0;else{B=w;C=a;break}}i[o>>0]=(g&255)+254;i[y>>0]=(i[y>>0]|0)+1<<24>>24;a=e+(C+1)|0;i[a>>0]=(l[a>>0]|0)+2;i[B>>0]=(i[B>>0]|0)+-1<<24>>24;g=i[o>>0]|0}while(g<<24>>24!=0);A=n}if((A|0)>16)z=A;else{D=16;break}}while(1){A=e+D|0;z=i[A>>0]|0;if(!(z<<24>>24))D=D+-1|0;else{E=A;F=z;break}}i[E>>0]=F+-1<<24>>24;h=b;F=e;j=h+17|0;do{i[h>>0]=i[F>>0]|0;h=h+1|0;F=F+1|0}while((h|0)<(j|0));F=1;h=0;while(1){j=0;e=h;while(1){if((k[f+(j<<2)>>2]|0)==(F|0)){i[b+17+e>>0]=j;G=e+1|0}else G=e;j=j+1|0;if((j|0)==256){H=G;break}else e=G}e=F+1|0;if((e|0)==33)break;else{F=e;h=H}}k[b+276>>2]=0;r=d;return}function Dn(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,192)|0;k[a+468>>2]=c;k[c>>2]=63;k[c+8>>2]=64;k[c+60>>2]=0;k[c+124>>2]=0;k[c+64>>2]=0;k[c+128>>2]=0;k[c+68>>2]=0;k[c+132>>2]=0;k[c+72>>2]=0;k[c+136>>2]=0;k[c+76>>2]=0;k[c+140>>2]=0;k[c+80>>2]=0;k[c+144>>2]=0;k[c+84>>2]=0;k[c+148>>2]=0;k[c+88>>2]=0;k[c+152>>2]=0;k[c+92>>2]=0;k[c+156>>2]=0;k[c+96>>2]=0;k[c+160>>2]=0;k[c+100>>2]=0;k[c+164>>2]=0;k[c+104>>2]=0;k[c+168>>2]=0;k[c+108>>2]=0;k[c+172>>2]=0;k[c+112>>2]=0;k[c+176>>2]=0;k[c+116>>2]=0;k[c+180>>2]=0;k[c+120>>2]=0;k[c+184>>2]=0;i[c+188>>0]=113;if(!(k[a+224>>2]|0))return;c=a+36|0;d=nb[k[k[b>>2]>>2]&63](a,1,k[c>>2]<<8)|0;k[a+160>>2]=d;if((k[c>>2]|0)>0)e=0;else return;do{qr(d+(e<<8)|0,-1,256)|0;e=e+1|0}while((e|0)<(k[c>>2]|0));return}function En(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;b=k[a+468>>2]|0;c=a+224|0;d=a+412|0;e=k[d>>2]|0;f=(e|0)==0;do if(k[c>>2]|0){g=a+416|0;h=k[g>>2]|0;if(f)if(!h)j=7;else j=11;else if(((h|0)>=(e|0)?(h|0)<=(k[a+436>>2]|0):0)?(k[a+340>>2]|0)==1:0)j=7;else j=11;do if((j|0)==7){h=k[a+420>>2]|0;if(h){l=h+-1|0;if((l|0)==(k[a+424>>2]|0))m=l;else{j=11;break}}else m=k[a+424>>2]|0;if((m|0)>13)j=11}while(0);if((j|0)==11){l=k[a>>2]|0;k[l+20>>2]=17;k[l+24>>2]=e;k[l+28>>2]=k[g>>2];k[l+32>>2]=k[a+420>>2];k[l+36>>2]=k[a+424>>2];qb[k[l>>2]&127](a)}l=a+340|0;h=k[l>>2]|0;if((h|0)>0){n=a+160|0;o=a+420|0;p=a+424|0;q=0;do{r=k[(k[a+344+(q<<2)>>2]|0)+4>>2]|0;s=k[n>>2]|0;t=k[d>>2]|0;if(t)if((k[s+(r<<8)>>2]|0)<0){u=k[a>>2]|0;k[u+20>>2]=118;k[u+24>>2]=r;k[u+28>>2]=0;rb[k[u+4>>2]&31](a,-1);v=k[d>>2]|0}else v=t;else v=0;if((v|0)<=(k[g>>2]|0)){t=v;while(1){u=s+(r<<8)+(t<<2)|0;w=k[u>>2]|0;if((k[o>>2]|0)!=(((w|0)<0?0:w)|0)){w=k[a>>2]|0;k[w+20>>2]=118;k[w+24>>2]=r;k[w+28>>2]=t;rb[k[w+4>>2]&31](a,-1)}k[u>>2]=k[p>>2];if((t|0)<(k[g>>2]|0))t=t+1|0;else break}}q=q+1|0;t=k[l>>2]|0}while((q|0)<(t|0));x=o;y=t}else{x=a+420|0;y=h}o=(k[d>>2]|0)==0;q=b+4|0;if(!(k[x>>2]|0))if(o){k[q>>2]=56;z=l;A=y;break}else{k[q>>2]=57;z=l;A=y;break}else if(o){k[q>>2]=58;z=l;A=y;break}else{k[q>>2]=59;z=l;A=y;break}}else{if((f?(k[a+420>>2]|0)==0:0)?(k[a+424>>2]|0)==0:0){q=k[a+416>>2]|0;if((q|0)<64?(q|0)!=(k[a+436>>2]|0):0)j=35}else j=35;if((j|0)==35){q=k[a>>2]|0;k[q+20>>2]=125;rb[k[q+4>>2]&31](a,-1)}k[b+4>>2]=60;q=a+340|0;z=q;A=k[q>>2]|0}while(0);if((A|0)<=0){B=b+12|0;k[B>>2]=0;C=b+16|0;k[C>>2]=0;D=b+20|0;k[D>>2]=-16;E=a+280|0;F=k[E>>2]|0;G=b+56|0;k[G>>2]=F;return}A=a+4|0;f=a+436|0;y=a+420|0;x=0;do{v=k[a+344+(x<<2)>>2]|0;if(k[c>>2]|0)if(!(k[d>>2]|0))if(!(k[y>>2]|0))j=42;else j=48;else j=49;else j=42;if((j|0)==42){j=0;e=k[v+20>>2]|0;if(e>>>0>15){m=k[a>>2]|0;k[m+20>>2]=50;k[m+24>>2]=e;qb[k[m>>2]&127](a)}m=b+60+(e<<2)|0;e=k[m>>2]|0;if(!e){q=nb[k[k[A>>2]>>2]&63](a,1,64)|0;k[m>>2]=q;H=q}else H=e;e=H;q=e+64|0;do{i[e>>0]=0;e=e+1|0}while((e|0)<(q|0));k[b+24+(x<<2)>>2]=0;k[b+40+(x<<2)>>2]=0;if(!(k[c>>2]|0)){if(k[f>>2]|0)j=49}else j=48}if((j|0)==48?(j=0,(k[d>>2]|0)!=0):0)j=49;if((j|0)==49){j=0;e=k[v+24>>2]|0;if(e>>>0>15){q=k[a>>2]|0;k[q+20>>2]=50;k[q+24>>2]=e;qb[k[q>>2]&127](a)}q=b+124+(e<<2)|0;e=k[q>>2]|0;if(!e){l=nb[k[k[A>>2]>>2]&63](a,1,256)|0;k[q>>2]=l;I=l}else I=e;qr(I|0,0,256)|0}x=x+1|0}while((x|0)<(k[z>>2]|0));B=b+12|0;k[B>>2]=0;C=b+16|0;k[C>>2]=0;D=b+20|0;k[D>>2]=-16;E=a+280|0;F=k[E>>2]|0;G=b+56|0;k[G>>2]=F;return}function Fn(a){a=a|0;return}function Gn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;c=k[a+468>>2]|0;if(k[a+280>>2]|0){d=c+56|0;e=k[d>>2]|0;if(!e){Ln(a);f=k[d>>2]|0}else f=e;k[d>>2]=f+-1}f=c+20|0;if((k[f>>2]|0)==-1)return 1;d=a+368|0;if((k[d>>2]|0)<=0)return 1;e=a+424|0;g=0;a:while(1){h=k[b+(g<<2)>>2]|0;i=k[a+372+(g<<2)>>2]|0;m=k[(k[a+344+(i<<2)>>2]|0)+20>>2]|0;n=c+60+(m<<2)|0;o=k[n>>2]|0;p=c+40+(i<<2)|0;q=k[p>>2]|0;if(!(Mn(a,o+q|0)|0)){k[p>>2]=0;r=k[c+24+(i<<2)>>2]|0}else{s=Mn(a,o+(q+1)|0)|0;t=o+(q+2+s)|0;q=Mn(a,t)|0;if(q){o=(k[n>>2]|0)+20|0;if(!(Mn(a,o)|0)){u=q;v=o}else{n=q;q=o;while(1){o=n<<1;if((o|0)==32768)break a;w=q+1|0;if(!(Mn(a,w)|0)){u=o;v=w;break}else{n=o;q=w}}}}else{u=0;v=t}do if((u|0)>=(1<<(l[a+232+m>>0]|0)>>1|0)){q=s<<2;if((u|0)>(1<<(l[a+248+m>>0]|0)>>1|0)){k[p>>2]=q+12;break}else{k[p>>2]=q+4;break}}else k[p>>2]=0;while(0);p=v+14|0;m=u>>1;if(!m)x=u;else{t=m;m=u;while(1){q=(Mn(a,p)|0)==0;n=(q?0:t)|m;t=t>>1;if(!t){x=n;break}else m=n}}m=c+24+(i<<2)|0;t=(k[m>>2]|0)+((s|0)==0?x+1|0:~x)|0;k[m>>2]=t;r=t}j[h>>1]=r<<k[e>>2];g=g+1|0;if((g|0)>=(k[d>>2]|0)){y=24;break}}if((y|0)==24)return 1;y=k[a>>2]|0;k[y+20>>2]=117;rb[k[y+4>>2]&31](a,-1);k[f>>2]=-1;return 1}function Hn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;c=k[a+468>>2]|0;if(k[a+280>>2]|0){d=c+56|0;e=k[d>>2]|0;if(!e){Ln(a);f=k[d>>2]|0}else f=e;k[d>>2]=f+-1}f=c+20|0;if((k[f>>2]|0)==-1)return 1;d=k[a+432>>2]|0;e=k[b>>2]|0;b=k[(k[a+344>>2]|0)+24>>2]|0;g=c+124+(b<<2)|0;h=a+416|0;i=c+188|0;c=a+424|0;m=a+264+b|0;b=(k[a+412>>2]|0)+-1|0;a:while(1){n=(k[g>>2]|0)+(b*3|0)|0;if(!(Mn(a,n)|0)){o=b;p=n}else{q=20;break}while(1){n=o;o=o+1|0;if(Mn(a,p+1|0)|0){r=o;s=n;t=p;break}if((o|0)>=(k[h>>2]|0)){q=10;break a}else p=p+3|0}n=Mn(a,i)|0;u=t+2|0;v=Mn(a,u)|0;if(v){if(Mn(a,u)|0){w=v<<1;x=(k[g>>2]|0)+((s|0)<(l[m>>0]|0|0)?189:217)|0;if(!(Mn(a,x)|0)){y=w;z=x}else{A=w;w=x;while(1){x=A<<1;if((x|0)==32768){q=15;break a}B=w+1|0;if(!(Mn(a,B)|0)){y=x;z=B;break}else{A=x;w=B}}}}else{y=v;z=u}w=z+14|0;A=y>>1;if(!A)C=y;else{B=A;A=y;while(1){x=(Mn(a,w)|0)==0;D=(x?0:B)|A;B=B>>1;if(!B){C=D;break}else A=D}}}else C=0;j[e+(k[d+(r<<2)>>2]<<1)>>1]=((n|0)==0?C+1|0:~C)<<k[c>>2];if((r|0)<(k[h>>2]|0))b=r;else{q=20;break}}if((q|0)==10){r=k[a>>2]|0;k[r+20>>2]=117;rb[k[r+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((q|0)==15){r=k[a>>2]|0;k[r+20>>2]=117;rb[k[r+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((q|0)==20)return 1;return 0}function In(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=k[a+468>>2]|0;if(k[a+280>>2]|0){d=c+56|0;e=k[d>>2]|0;if(!e){Ln(a);f=k[d>>2]|0}else f=e;k[d>>2]=f+-1}f=c+188|0;c=1<<k[a+424>>2];d=a+368|0;if((k[d>>2]|0)>0)g=0;else return 1;do{if(Mn(a,f)|0){e=k[b+(g<<2)>>2]|0;j[e>>1]=m[e>>1]|0|c}g=g+1|0}while((g|0)<(k[d>>2]|0));return 1}function Jn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=k[a+468>>2]|0;if(k[a+280>>2]|0){d=c+56|0;e=k[d>>2]|0;if(!e){Ln(a);f=k[d>>2]|0}else f=e;k[d>>2]=f+-1}f=c+20|0;if((k[f>>2]|0)==-1)return 1;d=k[a+432>>2]|0;e=k[b>>2]|0;b=k[(k[a+344>>2]|0)+24>>2]|0;g=k[a+424>>2]|0;h=1<<g;i=-1<<g;g=a+416|0;l=k[g>>2]|0;while(1){if(j[e+(k[d+(l<<2)>>2]<<1)>>1]|0){m=l;break}l=l+-1|0;if(!l){m=0;break}}l=c+124+(b<<2)|0;b=c+188|0;c=h&65535;n=i&65535;o=(k[a+412>>2]|0)+-1|0;a:while(1){p=(k[l>>2]|0)+(o*3|0)|0;if((o|0)>=(m|0)?(Mn(a,p)|0)!=0:0){q=24;break}else{r=o;s=p}while(1){r=r+1|0;p=e+(k[d+(r<<2)>>2]<<1)|0;if(j[p>>1]|0){t=r;u=p;v=s;q=13;break}if(Mn(a,s+1|0)|0){w=r;x=p;q=18;break}if((r|0)>=(k[g>>2]|0)){q=22;break a}else s=s+3|0}do if((q|0)==13){q=0;if(Mn(a,v+2|0)|0){p=j[u>>1]|0;y=p<<16>>16;if(p<<16>>16<0){j[u>>1]=y+i;z=t;break}else{j[u>>1]=y+h;z=t;break}}else z=t}else if((q|0)==18){q=0;if(!(Mn(a,b)|0)){j[x>>1]=c;z=w;break}else{j[x>>1]=n;z=w;break}}while(0);if((z|0)<(k[g>>2]|0))o=z;else{q=24;break}}if((q|0)==22){z=k[a>>2]|0;k[z+20>>2]=117;rb[k[z+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((q|0)==24)return 1;return 0}function Kn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;c=k[a+468>>2]|0;if(k[a+280>>2]|0){d=c+56|0;e=k[d>>2]|0;if(!e){Ln(a);f=k[d>>2]|0}else f=e;k[d>>2]=f+-1}f=c+20|0;if((k[f>>2]|0)==-1)return 1;d=k[a+432>>2]|0;e=a+368|0;if((k[e>>2]|0)<=0)return 1;g=a+436|0;h=c+188|0;i=0;a:while(1){m=k[b+(i<<2)>>2]|0;n=k[a+372+(i<<2)>>2]|0;o=k[a+344+(n<<2)>>2]|0;p=k[o+20>>2]|0;q=c+60+(p<<2)|0;r=k[q>>2]|0;s=c+40+(n<<2)|0;t=k[s>>2]|0;if(!(Mn(a,r+t|0)|0)){k[s>>2]=0;u=k[c+24+(n<<2)>>2]|0}else{v=Mn(a,r+(t+1)|0)|0;w=r+(t+2+v)|0;t=Mn(a,w)|0;if(t){r=(k[q>>2]|0)+20|0;if(!(Mn(a,r)|0)){x=t;y=r}else{q=t;t=r;while(1){r=q<<1;if((r|0)==32768){z=13;break a}A=t+1|0;if(!(Mn(a,A)|0)){x=r;y=A;break}else{q=r;t=A}}}}else{x=0;y=w}do if((x|0)>=(1<<(l[a+232+p>>0]|0)>>1|0)){t=v<<2;if((x|0)>(1<<(l[a+248+p>>0]|0)>>1|0)){k[s>>2]=t+12;break}else{k[s>>2]=t+4;break}}else k[s>>2]=0;while(0);s=y+14|0;p=x>>1;if(!p)B=x;else{w=p;p=x;while(1){t=(Mn(a,s)|0)==0;q=(t?0:w)|p;w=w>>1;if(!w){B=q;break}else p=q}}p=c+24+(n<<2)|0;w=(k[p>>2]|0)+((v|0)==0?B+1|0:~B)|0;k[p>>2]=w;u=w}j[m>>1]=u;b:do if(k[g>>2]|0){w=k[o+24>>2]|0;p=c+124+(w<<2)|0;s=a+264+w|0;w=0;while(1){q=(k[p>>2]|0)+(w*3|0)|0;if(!(Mn(a,q)|0)){C=w;D=q}else break b;while(1){q=C;C=C+1|0;if(Mn(a,D+1|0)|0){E=C;F=q;G=D;break}if((C|0)>=(k[g>>2]|0)){z=28;break a}else D=D+3|0}q=Mn(a,h)|0;t=G+2|0;A=Mn(a,t)|0;if(A){if(Mn(a,t)|0){r=A<<1;H=(k[p>>2]|0)+((F|0)<(l[s>>0]|0|0)?189:217)|0;if(!(Mn(a,H)|0)){I=r;J=H}else{K=r;r=H;while(1){H=K<<1;if((H|0)==32768){z=33;break a}L=r+1|0;if(!(Mn(a,L)|0)){I=H;J=L;break}else{K=H;r=L}}}}else{I=A;J=t}r=J+14|0;K=I>>1;if(!K)M=I;else{L=K;K=I;while(1){H=(Mn(a,r)|0)==0;N=(H?0:L)|K;L=L>>1;if(!L){M=N;break}else K=N}}}else M=0;j[m+(k[d+(E<<2)>>2]<<1)>>1]=(q|0)==0?M+1|0:M^65535;if((E|0)<(k[g>>2]|0))w=E;else break}}while(0);i=i+1|0;if((i|0)>=(k[e>>2]|0)){z=39;break}}if((z|0)==13){e=k[a>>2]|0;k[e+20>>2]=117;rb[k[e+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((z|0)==28){e=k[a>>2]|0;k[e+20>>2]=117;rb[k[e+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((z|0)==33){e=k[a>>2]|0;k[e+20>>2]=117;rb[k[e+4>>2]&31](a,-1);k[f>>2]=-1;return 1}else if((z|0)==39)return 1;return 0}function Ln(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;b=k[a+468>>2]|0;if(!(ub[k[(k[a+464>>2]|0)+8>>2]&63](a)|0)){c=k[a>>2]|0;k[c+20>>2]=25;qb[k[c>>2]&127](a)}c=a+340|0;if((k[c>>2]|0)<=0){d=b+12|0;k[d>>2]=0;e=b+16|0;k[e>>2]=0;f=b+20|0;k[f>>2]=-16;g=a+280|0;h=k[g>>2]|0;j=b+56|0;k[j>>2]=h;return}l=a+224|0;m=a+436|0;n=a+412|0;o=a+420|0;p=0;do{q=k[a+344+(p<<2)>>2]|0;if(k[l>>2]|0)if(!(k[n>>2]|0))if(!(k[o>>2]|0))r=8;else r=10;else r=11;else r=8;if((r|0)==8){r=0;s=k[b+60+(k[q+20>>2]<<2)>>2]|0;t=s+64|0;do{i[s>>0]=0;s=s+1|0}while((s|0)<(t|0));k[b+24+(p<<2)>>2]=0;k[b+40+(p<<2)>>2]=0;if(!(k[l>>2]|0)){if(k[m>>2]|0)r=11}else r=10}if((r|0)==10?(r=0,(k[n>>2]|0)!=0):0)r=11;if((r|0)==11){r=0;qr(k[b+124+(k[q+24>>2]<<2)>>2]|0,0,256)|0}p=p+1|0}while((p|0)<(k[c>>2]|0));d=b+12|0;k[d>>2]=0;e=b+16|0;k[e>>2]=0;f=b+20|0;k[f>>2]=-16;g=a+280|0;h=k[g>>2]|0;j=b+56|0;k[j>>2]=h;return}function Mn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;c=k[a+468>>2]|0;d=c+16|0;e=k[d>>2]|0;f=c+20|0;if((e|0)<32768){g=a+440|0;h=a+24|0;j=c+12|0;m=k[f>>2]|0;while(1){n=m+-1|0;k[f>>2]=n;if((m|0)<1){a:do if(!(k[g>>2]|0)){o=k[h>>2]|0;p=o+4|0;if((k[p>>2]|0)==0?(ub[k[o+12>>2]&63](a)|0)==0:0){q=k[a>>2]|0;k[q+20>>2]=25;qb[k[q>>2]&127](a)}k[p>>2]=(k[p>>2]|0)+-1;p=k[o>>2]|0;k[o>>2]=p+1;o=i[p>>0]|0;p=o&255;if(o<<24>>24==-1){b:while(1){o=k[h>>2]|0;q=o+4|0;if((k[q>>2]|0)==0?(ub[k[o+12>>2]&63](a)|0)==0:0){r=k[a>>2]|0;k[r+20>>2]=25;qb[k[r>>2]&127](a)}k[q>>2]=(k[q>>2]|0)+-1;q=k[o>>2]|0;k[o>>2]=q+1;o=l[q>>0]|0;switch(o|0){case 0:{s=255;break a;break}case 255:break;default:{t=o;break b}}}k[g>>2]=t;s=0}else s=p}else s=0;while(0);k[j>>2]=k[j>>2]<<8|s;o=k[f>>2]|0;q=o+8|0;k[f>>2]=q;if((o|0)<-8){r=o+9|0;k[f>>2]=r;if(!r){k[d>>2]=32768;u=0}else u=r}else u=q}else u=n;q=k[d>>2]<<1;k[d>>2]=q;if((q|0)<32768)m=u;else{v=q;w=j;x=u;break}}}else{v=e;w=c+12|0;x=k[f>>2]|0}f=l[b>>0]|0;c=k[122136+((f&127)<<2)>>2]|0;e=c>>8;u=c>>16;j=v-u|0;k[d>>2]=j;v=j<<x;x=k[w>>2]|0;if((x|0)>=(v|0)){k[w>>2]=x-v;k[d>>2]=u;d=f&128;if((j|0)<(u|0)){i[b>>0]=d^e;y=f;z=y>>7;return z|0}else{i[b>>0]=d^c;y=f^128;z=y>>7;return z|0}}if((j|0)>=32768){y=f;z=y>>7;return z|0}d=f&128;if((j|0)<(u|0)){i[b>>0]=d^c;y=f^128;z=y>>7;return z|0}else{i[b>>0]=d^e;y=f;z=y>>7;return z|0}return 0}function Nn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;c=a+4|0;d=nb[k[k[c>>2]>>2]&63](a,1,116)|0;k[a+452>>2]=d;k[d>>2]=65;k[d+8>>2]=66;k[d+112>>2]=0;if(!b){b=nb[k[(k[c>>2]|0)+4>>2]&63](a,1,1280)|0;k[d+32>>2]=b;k[d+36>>2]=b+128;k[d+40>>2]=b+256;k[d+44>>2]=b+384;k[d+48>>2]=b+512;k[d+52>>2]=b+640;k[d+56>>2]=b+768;k[d+60>>2]=b+896;k[d+64>>2]=b+1024;k[d+68>>2]=b+1152;if(!(k[a+436>>2]|0))qr(b|0,0,1280)|0;k[d+4>>2]=52;k[d+12>>2]=62;k[d+16>>2]=0;return}b=a+36|0;if((k[b>>2]|0)>0){e=a+224|0;f=d+72|0;g=0;h=k[a+216>>2]|0;while(1){i=h+12|0;j=k[i>>2]|0;l=(k[e>>2]|0)==0?j:j*3|0;j=k[(k[c>>2]|0)+20>>2]|0;m=qm(k[h+28>>2]|0,k[h+8>>2]|0)|0;n=qm(k[h+32>>2]|0,k[i>>2]|0)|0;i=sb[j&3](a,1,1,m,n,l)|0;k[f+(g<<2)>>2]=i;g=g+1|0;if((g|0)>=(k[b>>2]|0)){o=f;break}else h=h+88|0}}else o=d+72|0;k[d+4>>2]=51;k[d+12>>2]=61;k[d+16>>2]=o;return}function On(a){a=a|0;var b=0,c=0;k[a+148>>2]=0;b=k[a+452>>2]|0;do if((k[a+340>>2]|0)<=1){c=k[a+344>>2]|0;if((k[a+332>>2]|0)==1){k[b+28>>2]=k[c+76>>2];break}else{k[b+28>>2]=k[c+12>>2];break}}else k[b+28>>2]=1;while(0);k[b+20>>2]=0;k[b+24>>2]=0;return}function Pn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;b=k[a+452>>2]|0;if(!(k[b+16>>2]|0)){c=a+156|0;k[c>>2]=0;return}a:do if(((k[a+80>>2]|0)!=0?(k[a+224>>2]|0)!=0:0)?(d=a+160|0,(k[d>>2]|0)!=0):0){e=b+112|0;f=k[e>>2]|0;if(!f){g=a+36|0;h=nb[k[k[a+4>>2]>>2]&63](a,1,(k[g>>2]|0)*24|0)|0;k[e>>2]=h;i=g;l=h}else{i=a+36|0;l=f}if((k[i>>2]|0)>0){f=0;h=l;g=k[a+216>>2]|0;e=0;while(1){m=k[g+80>>2]|0;if(!m)break a;if(!(j[m>>1]|0))break a;if(!(j[m+2>>1]|0))break a;if(!(j[m+16>>1]|0))break a;if(!(j[m+32>>1]|0))break a;if(!(j[m+18>>1]|0))break a;if(!(j[m+4>>1]|0))break a;m=k[d>>2]|0;if((k[m+(f<<8)>>2]|0)<0)break a;n=m+(f<<8)+4|0;k[h+4>>2]=k[n>>2];o=k[n>>2]|0;n=m+(f<<8)+8|0;k[h+8>>2]=k[n>>2];p=k[n>>2]|o;o=m+(f<<8)+12|0;k[h+12>>2]=k[o>>2];n=p|k[o>>2];o=m+(f<<8)+16|0;k[h+16>>2]=k[o>>2];p=n|k[o>>2];o=m+(f<<8)+20|0;k[h+20>>2]=k[o>>2];m=(p|k[o>>2]|0)==0?e:1;f=f+1|0;if((f|0)>=(k[i>>2]|0)){q=m;break}else{h=h+24|0;g=g+88|0;e=m}}if(q){k[b+12>>2]=63;c=a+156|0;k[c>>2]=0;return}}}while(0);k[b+12>>2]=61;c=a+156|0;k[c>>2]=0;return}function Qn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;b=r;r=r+16|0;c=b;d=a+452|0;e=k[d>>2]|0;f=a+340|0;if((k[f>>2]|0)>0){g=a+4|0;h=a+148|0;i=0;do{j=k[a+344+(i<<2)>>2]|0;l=k[j+12>>2]|0;m=ha(l,k[h>>2]|0)|0;n=zb[k[(k[g>>2]|0)+32>>2]&3](a,k[e+72+(k[j+4>>2]<<2)>>2]|0,m,l,1)|0;k[c+(i<<2)>>2]=n;i=i+1|0}while((i|0)<(k[f>>2]|0))}i=e+24|0;g=k[i>>2]|0;h=e+28|0;n=k[h>>2]|0;a:do if((g|0)<(n|0)){l=e+20|0;m=a+360|0;j=a+468|0;o=e+32|0;p=n;q=k[l>>2]|0;s=k[m>>2]|0;t=g;b:while(1){if(q>>>0<s>>>0){u=q;while(1){v=k[f>>2]|0;if((v|0)>0){w=0;x=0;while(1){y=k[a+344+(x<<2)>>2]|0;z=k[y+56>>2]|0;A=ha(z,u)|0;B=k[y+60>>2]|0;if((B|0)>0?(y=k[c+(x<<2)>>2]|0,(z|0)>0):0){C=(z|0)>1?z:1;D=w;E=0;while(1){F=D;G=(k[y+(E+t<<2)>>2]|0)+(A<<7)|0;H=0;while(1){k[e+32+(F<<2)>>2]=G;H=H+1|0;if((H|0)>=(z|0))break;else{F=F+1|0;G=G+128|0}}G=D+C|0;E=E+1|0;if((E|0)>=(B|0)){I=G;break}else D=G}}else I=w;x=x+1|0;if((x|0)>=(v|0))break;else w=I}}if(!(yb[k[(k[j>>2]|0)+4>>2]&127](a,o)|0)){J=u;K=t;break b}u=u+1|0;w=k[m>>2]|0;if(u>>>0>=w>>>0){L=w;break}}M=L;N=k[h>>2]|0}else{M=s;N=p}k[l>>2]=0;t=t+1|0;if((t|0)>=(N|0))break a;else{p=N;q=0;s=M}}k[i>>2]=K;k[l>>2]=J;O=0;r=b;return O|0}while(0);J=a+148|0;K=(k[J>>2]|0)+1|0;k[J>>2]=K;J=k[a+332>>2]|0;if(K>>>0>=J>>>0){qb[k[(k[a+460>>2]|0)+12>>2]&127](a);O=4;r=b;return O|0}i=k[d>>2]|0;do if((k[f>>2]|0)<=1){d=k[a+344>>2]|0;if(K>>>0<(J+-1|0)>>>0){k[i+28>>2]=k[d+12>>2];break}else{k[i+28>>2]=k[d+76>>2];break}}else k[i+28>>2]=1;while(0);k[i+20>>2]=0;k[i+24>>2]=0;O=3;r=b;return O|0}function Rn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;c=k[a+452>>2]|0;d=a+332|0;e=(k[d>>2]|0)+-1|0;f=a+144|0;g=a+152|0;h=a+460|0;i=a+148|0;j=a+156|0;while(1){l=k[f>>2]|0;m=k[g>>2]|0;if((l|0)>=(m|0)){if((l|0)!=(m|0))break;if((k[i>>2]|0)>>>0>(k[j>>2]|0)>>>0)break}if(!(ub[k[k[h>>2]>>2]&63](a)|0)){n=0;o=21;break}}if((o|0)==21)return n|0;o=a+36|0;h=k[o>>2]|0;if((h|0)>0){i=a+4|0;g=a+472|0;f=h;h=0;m=k[a+216>>2]|0;while(1){if(!(k[m+52>>2]|0))p=f;else{l=m+12|0;q=k[l>>2]|0;r=ha(q,k[j>>2]|0)|0;s=zb[k[(k[i>>2]|0)+32>>2]&3](a,k[c+72+(h<<2)>>2]|0,r,q,0)|0;if((k[j>>2]|0)>>>0<e>>>0)t=k[l>>2]|0;else{q=k[l>>2]|0;l=((k[m+32>>2]|0)>>>0)%(q>>>0)|0;t=(l|0)==0?q:l}l=k[(k[g>>2]|0)+4+(h<<2)>>2]|0;if((t|0)>0){q=m+28|0;r=m+40|0;u=m+36|0;v=k[q>>2]|0;w=0;x=k[b+(h<<2)>>2]|0;while(1){if(!v)y=0;else{z=0;A=k[s+(w<<2)>>2]|0;B=0;while(1){pb[l&63](a,m,A,x,B);z=z+1|0;C=k[q>>2]|0;if(z>>>0>=C>>>0){y=C;break}else{A=A+128|0;B=(k[u>>2]|0)+B|0}}}w=w+1|0;if((w|0)==(t|0))break;else{v=y;x=x+(k[r>>2]<<2)|0}}}p=k[o>>2]|0}h=h+1|0;if((h|0)>=(p|0))break;else{f=p;m=m+88|0}}}m=(k[j>>2]|0)+1|0;k[j>>2]=m;n=m>>>0<(k[d>>2]|0)>>>0?3:4;return n|0}function Sn(a){a=a|0;return 0}function Tn(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;c=a+452|0;d=k[c>>2]|0;e=(k[a+360>>2]|0)+-1|0;f=a+332|0;g=k[f>>2]|0;h=g+-1|0;i=d+24|0;j=k[i>>2]|0;l=d+28|0;do if((j|0)<(k[l>>2]|0)){m=d+20|0;n=a+436|0;o=a+468|0;p=d+32|0;q=a+340|0;r=a+472|0;s=a+148|0;t=a+368|0;u=k[m>>2]|0;v=j;a:while(1){if(u>>>0<=e>>>0){w=u;do{if(k[n>>2]|0)qr(k[p>>2]|0,0,k[t>>2]<<7|0)|0;if(!(yb[k[(k[o>>2]|0)+4>>2]&127](a,p)|0)){x=w;y=v;break a}if((k[q>>2]|0)>0){z=w>>>0<e>>>0;A=0;B=0;while(1){C=k[a+344+(B<<2)>>2]|0;b:do if(k[C+52>>2]|0){D=k[C+4>>2]|0;E=k[(k[r>>2]|0)+4+(D<<2)>>2]|0;F=C+56|0;G=k[(z?F:C+72|0)>>2]|0;H=C+40|0;I=k[H>>2]|0;J=ha(k[C+68>>2]|0,w)|0;K=C+60|0;L=k[K>>2]|0;if((L|0)>0){M=C+76|0;N=C+36|0;if((G|0)<=0){O=k[F>>2]|0;P=A;Q=0;while(1){R=O+P|0;Q=Q+1|0;if((Q|0)>=(L|0)){S=R;break b}else P=R}}P=L;Q=I;O=A;R=(k[b+(D<<2)>>2]|0)+((ha(I,v)|0)<<2)|0;T=0;while(1){if((k[s>>2]|0)>>>0>=h>>>0?(T+v|0)>=(k[M>>2]|0):0){U=Q;V=P}else{W=J;X=0;Y=20}if((Y|0)==20){while(1){Y=0;pb[E&63](a,C,k[d+32+(X+O<<2)>>2]|0,R,W);X=X+1|0;if((X|0)==(G|0))break;else{W=(k[N>>2]|0)+W|0;Y=20}}U=k[H>>2]|0;V=k[K>>2]|0}Z=(k[F>>2]|0)+O|0;T=T+1|0;if((T|0)>=(V|0)){S=Z;break}else{P=V;Q=U;O=Z;R=R+(U<<2)|0}}}else S=A}else S=(k[C+64>>2]|0)+A|0;while(0);B=B+1|0;if((B|0)>=(k[q>>2]|0))break;else A=S}}w=w+1|0}while(w>>>0<=e>>>0)}k[m>>2]=0;v=v+1|0;if((v|0)>=(k[l>>2]|0)){Y=26;break}else u=0}if((Y|0)==26){_=s;$=k[f>>2]|0;break}k[i>>2]=y;k[m>>2]=x;aa=0;return aa|0}else{_=a+148|0;$=g}while(0);g=a+156|0;k[g>>2]=(k[g>>2]|0)+1;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(g>>>0>=$>>>0){qb[k[(k[a+460>>2]|0)+12>>2]&127](a);aa=4;return aa|0}_=k[c>>2]|0;do if((k[a+340>>2]|0)<=1){c=k[a+344>>2]|0;if(g>>>0<($+-1|0)>>>0){k[_+28>>2]=k[c+12>>2];break}else{k[_+28>>2]=k[c+76>>2];break}}else k[_+28>>2]=1;while(0);k[_+20>>2]=0;k[_+24>>2]=0;aa=3;return aa|0}function Un(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0;c=r;r=r+128|0;d=c;e=k[a+452>>2]|0;f=a+332|0;g=(k[f>>2]|0)+-1|0;h=a+144|0;i=a+152|0;l=a+460|0;n=a+412|0;o=a+148|0;p=a+156|0;while(1){q=k[h>>2]|0;s=k[i>>2]|0;if((q|0)>(s|0))break;t=k[l>>2]|0;if(k[t+20>>2]|0)break;if((q|0)==(s|0)?(k[o>>2]|0)>>>0>((k[p>>2]|0)+((k[n>>2]|0)==0&1)|0)>>>0:0)break;if(!(ub[k[t>>2]&63](a)|0)){u=0;v=70;break}}if((v|0)==70){r=c;return u|0}v=a+36|0;n=k[v>>2]|0;if((n|0)>0){o=a+4|0;l=e+112|0;i=a+472|0;h=d+4|0;t=d+18|0;s=d+32|0;q=d+16|0;w=d+2|0;x=n;n=0;y=k[a+216>>2]|0;while(1){if(!(k[y+52>>2]|0))z=x;else{A=k[p>>2]|0;B=y+12|0;C=k[B>>2]|0;if(A>>>0<g>>>0){D=C<<1;E=C;F=0}else{G=((k[y+32>>2]|0)>>>0)%(C>>>0)|0;H=(G|0)==0?C:G;D=H;E=H;F=1}if(!A){I=zb[k[(k[o>>2]|0)+32>>2]&3](a,k[e+72+(n<<2)>>2]|0,0,D,0)|0;J=1}else{H=ha(C,A+-1|0)|0;A=zb[k[(k[o>>2]|0)+32>>2]&3](a,k[e+72+(n<<2)>>2]|0,H,C+D|0,0)|0;I=A+(k[B>>2]<<2)|0;J=0}B=k[l>>2]|0;A=n*6|0;C=k[y+80>>2]|0;H=m[C>>1]|0;G=m[C+2>>1]|0;K=m[C+16>>1]|0;L=m[C+32>>1]|0;M=m[C+18>>1]|0;N=m[C+4>>1]|0;C=k[(k[i>>2]|0)+4+(n<<2)>>2]|0;if((E|0)>0){O=(J|0)!=0;P=(F|0)!=0;Q=E+-1|0;R=y+28|0;S=B+((A|1)<<2)|0;T=B+(A+2<<2)|0;U=B+(A+3<<2)|0;V=B+(A+4<<2)|0;W=B+(A+5<<2)|0;A=y+36|0;B=H*9|0;X=N<<7;Y=N<<8;N=H*5|0;Z=M<<7;_=M<<8;M=L<<7;$=L<<8;L=H*36|0;H=K<<7;aa=K<<8;K=G<<7;ba=G<<8;G=y+40|0;ca=0;da=k[b+(n<<2)>>2]|0;while(1){ea=k[I+(ca<<2)>>2]|0;if(O&(ca|0)==0)fa=ea;else fa=k[I+(ca+-1<<2)>>2]|0;if(P&(ca|0)==(Q|0))ga=ea;else ga=k[I+(ca+1<<2)>>2]|0;ia=j[fa>>1]|0;ja=j[ea>>1]|0;ka=j[ga>>1]|0;la=(k[R>>2]|0)+-1|0;ma=ia;na=ia;ia=ja;oa=ja;ja=ka;pa=ka;ka=0;qa=ea;ea=ga;ra=0;sa=fa;while(1){sm(qa,d,1);if(ka>>>0<la>>>0){ta=j[sa+128>>1]|0;ua=j[qa+128>>1]|0;va=j[ea+128>>1]|0}else{ta=na;ua=oa;va=pa}wa=k[S>>2]|0;if((wa|0)!=0&(j[w>>1]|0)==0){xa=ha(L,ia-ua|0)|0;if((xa|0)>-1){ya=(xa+K|0)/(ba|0)|0;if((wa|0)>0){za=1<<wa;Aa=(ya|0)<(za|0)?ya:za+-1|0}else Aa=ya}else{ya=(K-xa|0)/(ba|0)|0;if((wa|0)>0){xa=1<<wa;Ba=(ya|0)<(xa|0)?ya:xa+-1|0}else Ba=ya;Aa=0-Ba|0}j[w>>1]=Aa}ya=k[T>>2]|0;if((ya|0)!=0&(j[q>>1]|0)==0){xa=ha(L,na-pa|0)|0;if((xa|0)>-1){wa=(xa+H|0)/(aa|0)|0;if((ya|0)>0){za=1<<ya;Ca=(wa|0)<(za|0)?wa:za+-1|0}else Ca=wa}else{wa=(H-xa|0)/(aa|0)|0;if((ya|0)>0){xa=1<<ya;Da=(wa|0)<(xa|0)?wa:xa+-1|0}else Da=wa;Ca=0-Da|0}j[q>>1]=Ca}wa=k[U>>2]|0;if((wa|0)!=0&(j[s>>1]|0)==0){xa=ha(B,na-(oa<<1)+pa|0)|0;do if((xa|0)>-1){ya=(xa+M|0)/($|0)|0;if((wa|0)<=0){Ea=ya;break}za=1<<wa;Ea=(ya|0)<(za|0)?ya:za+-1|0}else{za=(M-xa|0)/($|0)|0;if((wa|0)>0){ya=1<<wa;Fa=(za|0)<(ya|0)?za:ya+-1|0}else Fa=za;Ea=0-Fa|0}while(0);j[s>>1]=Ea}wa=k[V>>2]|0;if((wa|0)!=0&(j[t>>1]|0)==0){xa=ha(N,ma-ja-ta+va|0)|0;do if((xa|0)>-1){za=(xa+Z|0)/(_|0)|0;if((wa|0)<=0){Ga=za;break}ya=1<<wa;Ga=(za|0)<(ya|0)?za:ya+-1|0}else{ya=(Z-xa|0)/(_|0)|0;if((wa|0)>0){za=1<<wa;Ha=(ya|0)<(za|0)?ya:za+-1|0}else Ha=ya;Ga=0-Ha|0}while(0);j[t>>1]=Ga}wa=k[W>>2]|0;if((wa|0)!=0&(j[h>>1]|0)==0){xa=ha(B,ia-(oa<<1)+ua|0)|0;do if((xa|0)>-1){ya=(xa+X|0)/(Y|0)|0;if((wa|0)<=0){Ia=ya;break}za=1<<wa;Ia=(ya|0)<(za|0)?ya:za+-1|0}else{za=(X-xa|0)/(Y|0)|0;if((wa|0)>0){ya=1<<wa;Ja=(za|0)<(ya|0)?za:ya+-1|0}else Ja=za;Ia=0-Ja|0}while(0);j[h>>1]=Ia}pb[C&63](a,y,d,da,ra);ka=ka+1|0;if(ka>>>0>la>>>0)break;else{wa=pa;xa=oa;za=na;na=ta;oa=ua;pa=va;qa=qa+128|0;ea=ea+128|0;ra=(k[A>>2]|0)+ra|0;sa=sa+128|0;ja=wa;ia=xa;ma=za}}ca=ca+1|0;if((ca|0)==(E|0))break;else da=da+(k[G>>2]<<2)|0}}z=k[v>>2]|0}n=n+1|0;if((n|0)>=(z|0))break;else{x=z;y=y+88|0}}}y=(k[p>>2]|0)+1|0;k[p>>2]=y;u=y>>>0<(k[f>>2]|0)>>>0?3:4;r=c;return u|0}
89
+function qp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;f=r;r=r+352|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;q=(o-p|0)*20862|0;s=(o-n|0)*3529|0;t=p+n|0;u=t-o|0;v=(u*11116|0)+m|0;w=s+q+v+(ha(o,-14924)|0)|0;x=q+(p*17333|0)+v|0;q=v+(ha(n,-12399)|0)+s|0;s=v+(ha(t,-9467)|0)|0;t=s+(ha(p,-6461)|0)|0;p=s+((o*15929|0)+(ha(n,-11395)|0))|0;n=m+(ha(u,-11585)|0)|0;u=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;o=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;s=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;v=m+u|0;y=(o+v+s|0)*3264|0;z=v*7274|0;v=(o+u|0)*5492|0;A=y+((s+u|0)*3e3|0)|0;B=z+v+A+(ha(u,-7562)|0)|0;u=y+(ha(o+m|0,-9527)|0)|0;C=u+(ha(o,-9766)|0)+v|0;v=ha(s+m|0,-14731)|0;D=z+(m*16984|0)+v+u|0;u=v+(s*17223|0)+A|0;A=y+((ha(m,-12019)|0)+(o*8203|0)+(ha(s,-13802)|0))|0;k[b>>2]=B+x>>11;k[b+320>>2]=x-B>>11;k[b+32>>2]=D+w>>11;k[b+288>>2]=w-D>>11;k[b+64>>2]=C+t>>11;k[b+256>>2]=t-C>>11;k[b+96>>2]=u+q>>11;k[b+224>>2]=q-u>>11;k[b+128>>2]=A+p>>11;k[b+192>>2]=p-A>>11;k[b+160>>2]=n>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+10|0;c=e+1|0;l=e+9|0;a=e+2|0;n=e+8|0;A=e+3|0;p=e+7|0;u=e+4|0;q=e+6|0;C=e+5|0;t=0;D=g;while(1){g=k[d+(t<<2)>>2]|0;w=(k[D>>2]<<13)+134348800|0;B=k[D+8>>2]|0;x=k[D+16>>2]|0;s=k[D+24>>2]|0;o=(x-s|0)*20862|0;m=(x-B|0)*3529|0;y=s+B|0;v=y-x|0;z=(v*11116|0)+w|0;E=m+o+z+(ha(x,-14924)|0)|0;F=o+(s*17333|0)+z|0;o=z+(ha(B,-12399)|0)+m|0;m=z+(ha(y,-9467)|0)|0;y=m+(ha(s,-6461)|0)|0;s=m+((x*15929|0)+(ha(B,-11395)|0))|0;B=w+(ha(v,-11585)|0)|0;v=k[D+4>>2]|0;w=k[D+12>>2]|0;x=k[D+20>>2]|0;m=k[D+28>>2]|0;z=w+v|0;G=(z+x+m|0)*3264|0;H=z*7274|0;z=(x+v|0)*5492|0;I=G+((m+v|0)*3e3|0)|0;J=H+z+I+(ha(v,-7562)|0)|0;v=G+(ha(x+w|0,-9527)|0)|0;K=v+(ha(x,-9766)|0)+z|0;z=ha(m+w|0,-14731)|0;L=H+(w*16984|0)+z+v|0;v=z+(m*17223|0)+I|0;I=G+((ha(w,-12019)|0)+(x*8203|0)+(ha(m,-13802)|0))|0;i[g+e>>0]=i[h+(((J+F|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((F-J|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((L+E|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((E-L|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((K+y|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((y-K|0)>>>18&1023)+-384)>>0]|0;i[g+A>>0]=i[h+(((v+o|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((o-v|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((I+s|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((s-I|0)>>>18&1023)+-384)>>0]|0;i[g+C>>0]=i[h+((B>>>18&1023)+-384)>>0]|0;t=t+1|0;if((t|0)==11)break;else D=D+32|0}r=f;return}function rp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;f=r;r=r+384|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+128>>2]|0)*10033|0,j[l+64>>1]|0)|0;o=n+m|0;p=m-n|0;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;q=ha(k[c+192>>2]<<13,j[l+96>>1]|0)|0;s=(n<<13)-q|0;t=s+m|0;u=m-s|0;s=q+(n*11190|0)|0;m=s+o|0;v=o-s|0;s=(n*2998|0)-q|0;q=s+p|0;n=p-s|0;s=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;o=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;x=p*10703|0;y=ha(p,-4433)|0;z=o+s|0;A=(w+z|0)*7053|0;B=A+(z*2139|0)|0;z=x+(s*2295|0)+B|0;C=ha(w+o|0,-8565)|0;D=y+C+(ha(o,-12112)|0)+B|0;B=(w*12998|0)-x+A+C|0;C=A+((ha(s,-5540)|0)+y+(ha(w,-16244)|0))|0;y=s-w|0;w=p-o|0;o=(y+w|0)*4433|0;p=o+(y*6270|0)|0;y=o+(ha(w,-15137)|0)|0;k[b>>2]=z+m>>11;k[b+352>>2]=m-z>>11;k[b+32>>2]=p+t>>11;k[b+320>>2]=t-p>>11;k[b+64>>2]=D+q>>11;k[b+288>>2]=q-D>>11;k[b+96>>2]=B+n>>11;k[b+256>>2]=n-B>>11;k[b+128>>2]=y+u>>11;k[b+224>>2]=u-y>>11;k[b+160>>2]=C+v>>11;k[b+192>>2]=v-C>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+11|0;c=e+1|0;l=e+10|0;a=e+2|0;C=e+9|0;v=e+3|0;y=e+8|0;u=e+4|0;B=e+7|0;n=e+5|0;D=e+6|0;q=0;p=g;while(1){g=k[d+(q<<2)>>2]|0;t=(k[p>>2]<<13)+134348800|0;z=(k[p+16>>2]|0)*10033|0;m=t+z|0;w=t-z|0;z=k[p+8>>2]|0;o=k[p+24>>2]<<13;s=(z<<13)-o|0;A=s+t|0;x=t-s|0;s=o+(z*11190|0)|0;t=s+m|0;E=m-s|0;s=(z*2998|0)-o|0;o=s+w|0;z=w-s|0;s=k[p+4>>2]|0;w=k[p+12>>2]|0;m=k[p+20>>2]|0;F=k[p+28>>2]|0;G=w*10703|0;H=ha(w,-4433)|0;I=m+s|0;J=(I+F|0)*7053|0;K=J+(I*2139|0)|0;I=G+(s*2295|0)+K|0;L=ha(F+m|0,-8565)|0;M=H+L+(ha(m,-12112)|0)+K|0;K=(F*12998|0)-G+J+L|0;L=J+((ha(s,-5540)|0)+H+(ha(F,-16244)|0))|0;H=s-F|0;F=w-m|0;m=(H+F|0)*4433|0;w=m+(H*6270|0)|0;H=m+(ha(F,-15137)|0)|0;i[g+e>>0]=i[h+(((I+t|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((t-I|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((w+A|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((A-w|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((M+o|0)>>>18&1023)+-384)>>0]|0;i[g+C>>0]=i[h+(((o-M|0)>>>18&1023)+-384)>>0]|0;i[g+v>>0]=i[h+(((K+z|0)>>>18&1023)+-384)>>0]|0;i[g+y>>0]=i[h+(((z-K|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((H+x|0)>>>18&1023)+-384)>>0]|0;i[g+B>>0]=i[h+(((x-H|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((L+E|0)>>>18&1023)+-384)>>0]|0;i[g+D>>0]=i[h+(((E-L|0)>>>18&1023)+-384)>>0]|0;q=q+1|0;if((q|0)==12)break;else p=p+32|0}r=f;return}function sp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;f=r;r=r+416|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;q=p+o|0;s=o-p|0;p=q*9465|0;o=(s*793|0)+m|0;t=p+(n*11249|0)+o|0;u=(n*4108|0)-p+o|0;o=q*2592|0;p=(s*3989|0)+m|0;v=(n*8672|0)-o+p|0;w=o+(ha(n,-10258)|0)+p|0;p=q*3570|0;q=m+(ha(s,-7678)|0)|0;o=(ha(n,-1396)|0)-p+q|0;x=p+(ha(n,-6581)|0)+q|0;q=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;y=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;z=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;A=(p+q|0)*10832|0;B=(y+q|0)*9534|0;C=z+q|0;D=C*7682|0;E=A+B+D+(ha(q,-16549)|0)|0;F=ha(y+p|0,-2773)|0;G=ha(z+p|0,-9534)|0;H=A+(p*6859|0)+F+G|0;A=ha(z+y|0,-5384)|0;I=F+(ha(y,-12879)|0)+B+A|0;B=G+(z*18068|0)+D+A|0;A=C*2773|0;C=(y-p|0)*7682|0;D=(q*2611|0)+A+(ha(p,-3818)|0)+C|0;p=A+((y*3150|0)+C+(ha(z,-14273)|0))|0;k[b>>2]=E+t>>11;k[b+384>>2]=t-E>>11;k[b+32>>2]=H+v>>11;k[b+352>>2]=v-H>>11;k[b+64>>2]=I+u>>11;k[b+320>>2]=u-I>>11;k[b+96>>2]=B+o>>11;k[b+288>>2]=o-B>>11;k[b+128>>2]=D+x>>11;k[b+256>>2]=x-D>>11;k[b+160>>2]=p+w>>11;k[b+224>>2]=w-p>>11;k[b+192>>2]=((s-n|0)*11585|0)+m>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+12|0;c=e+1|0;l=e+11|0;a=e+2|0;m=e+10|0;n=e+3|0;s=e+9|0;p=e+4|0;w=e+8|0;D=e+5|0;x=e+7|0;B=e+6|0;o=0;I=g;while(1){g=k[d+(o<<2)>>2]|0;u=(k[I>>2]<<13)+134348800|0;H=k[I+8>>2]|0;v=k[I+16>>2]|0;E=k[I+24>>2]|0;t=E+v|0;z=v-E|0;E=t*9465|0;v=(z*793|0)+u|0;C=E+(H*11249|0)+v|0;y=(H*4108|0)-E+v|0;v=t*2592|0;E=(z*3989|0)+u|0;A=(H*8672|0)-v+E|0;q=v+(ha(H,-10258)|0)+E|0;E=t*3570|0;t=u+(ha(z,-7678)|0)|0;v=(ha(H,-1396)|0)-E+t|0;G=E+(ha(H,-6581)|0)+t|0;t=k[I+4>>2]|0;E=k[I+12>>2]|0;F=k[I+20>>2]|0;J=k[I+28>>2]|0;K=(E+t|0)*10832|0;L=(F+t|0)*9534|0;M=J+t|0;N=M*7682|0;O=K+L+N+(ha(t,-16549)|0)|0;P=ha(F+E|0,-2773)|0;Q=ha(J+E|0,-9534)|0;R=K+(E*6859|0)+P+Q|0;K=ha(J+F|0,-5384)|0;S=P+(ha(F,-12879)|0)+L+K|0;L=Q+(J*18068|0)+N+K|0;K=M*2773|0;M=(F-E|0)*7682|0;N=(t*2611|0)+K+(ha(E,-3818)|0)+M|0;E=(F*3150|0)+M+(ha(J,-14273)|0)+K|0;i[g+e>>0]=i[h+(((O+C|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((C-O|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((R+A|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((A-R|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((S+y|0)>>>18&1023)+-384)>>0]|0;i[g+m>>0]=i[h+(((y-S|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((L+v|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((v-L|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((N+G|0)>>>18&1023)+-384)>>0]|0;i[g+w>>0]=i[h+(((G-N|0)>>>18&1023)+-384)>>0]|0;i[g+D>>0]=i[h+(((E+q|0)>>>18&1023)+-384)>>0]|0;i[g+x>>0]=i[h+(((q-E|0)>>>18&1023)+-384)>>0]|0;i[g+B>>0]=i[h+(((((z-H|0)*11585|0)+u|0)>>>18&1023)+-384)>>0]|0;o=o+1|0;if((o|0)==13)break;else I=I+32|0}r=f;return}function tp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;f=r;r=r+448|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=(n*10438|0)+m|0;p=(n*2578|0)+m|0;q=m+(ha(n,-7223)|0)|0;s=m+(ha(n,-11586)|0)>>11;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;t=(m+n|0)*9058|0;u=t+(n*2237|0)|0;v=t+(ha(m,-14084)|0)|0;t=(n*5027|0)+(ha(m,-11295)|0)|0;m=u+o|0;n=o-u|0;u=v+p|0;o=p-v|0;v=t+q|0;p=q-t|0;t=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;q=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;w=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;x=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;y=x<<13;z=w+t|0;A=(q+t|0)*10935|0;B=z*9810|0;C=A+B+y+(ha(t,-9232)|0)|0;D=z*6164|0;z=t-q|0;E=(z*3826|0)-y|0;F=E+(D+(ha(t,-8693)|0))|0;t=(ha(w+q|0,-1297)|0)-y|0;G=t+(ha(q,-3474)|0)+A|0;A=t+(ha(w,-19447)|0)+B|0;B=(w-q|0)*11512|0;t=B+y+(ha(w,-13850)|0)+D|0;D=B+(q*5529|0)+E|0;E=z-w+x<<2;k[b>>2]=C+m>>11;k[b+416>>2]=m-C>>11;k[b+32>>2]=G+u>>11;k[b+384>>2]=u-G>>11;k[b+64>>2]=A+v>>11;k[b+352>>2]=v-A>>11;k[b+96>>2]=E+s;k[b+320>>2]=s-E;k[b+128>>2]=t+p>>11;k[b+288>>2]=p-t>>11;k[b+160>>2]=D+o>>11;k[b+256>>2]=o-D>>11;k[b+192>>2]=F+n>>11;k[b+224>>2]=n-F>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+13|0;c=e+1|0;l=e+12|0;a=e+2|0;F=e+11|0;n=e+3|0;D=e+10|0;o=e+4|0;t=e+9|0;p=e+5|0;E=e+8|0;s=e+6|0;A=e+7|0;v=0;G=g;while(1){g=k[d+(v<<2)>>2]|0;u=(k[G>>2]<<13)+134348800|0;C=k[G+16>>2]|0;m=u+(C*10438|0)|0;x=u+(C*2578|0)|0;w=u+(ha(C,-7223)|0)|0;z=u+(ha(C,-11586)|0)|0;C=k[G+8>>2]|0;u=k[G+24>>2]|0;q=(u+C|0)*9058|0;B=q+(C*2237|0)|0;y=q+(ha(u,-14084)|0)|0;q=(C*5027|0)+(ha(u,-11295)|0)|0;u=B+m|0;C=m-B|0;B=y+x|0;m=x-y|0;y=q+w|0;x=w-q|0;q=k[G+4>>2]|0;w=k[G+12>>2]|0;H=k[G+20>>2]|0;I=k[G+28>>2]<<13;J=H+q|0;K=(w+q|0)*10935|0;L=J*9810|0;M=I+(K+L)+(ha(q,-9232)|0)|0;N=J*6164|0;J=q-w|0;O=(J*3826|0)-I|0;P=N+(ha(q,-8693)|0)+O|0;q=(ha(H+w|0,-1297)|0)-I|0;Q=q+(ha(w,-3474)|0)+K|0;K=q+(ha(H,-19447)|0)+L|0;L=(H-w|0)*11512|0;q=L+I+(ha(H,-13850)|0)+N|0;N=L+(w*5529|0)+O|0;O=(J-H<<13)+I|0;i[g+e>>0]=i[h+(((M+u|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((u-M|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((Q+B|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((B-Q|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((K+y|0)>>>18&1023)+-384)>>0]|0;i[g+F>>0]=i[h+(((y-K|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((O+z|0)>>>18&1023)+-384)>>0]|0;i[g+D>>0]=i[h+(((z-O|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((q+x|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((x-q|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((N+m|0)>>>18&1023)+-384)>>0]|0;i[g+E>>0]=i[h+(((m-N|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((P+C|0)>>>18&1023)+-384)>>0]|0;i[g+A>>0]=i[h+(((C-P|0)>>>18&1023)+-384)>>0]|0;v=v+1|0;if((v|0)==14)break;else G=G+32|0}r=f;return}function up(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;f=r;r=r+480|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;q=m+(ha(p,-3580)|0)|0;s=(p*9373|0)+m|0;t=m+(ha(p,-11586)|0)|0;p=n-o|0;m=o+n|0;o=m*10958|0;u=p*374|0;v=n*11795|0;n=u+o+s|0;w=v-o+u+q|0;u=m*4482|0;o=ha(p,-3271)|0;x=s-u+o|0;y=u-v+o+q|0;o=m*6476|0;m=p*2896|0;v=m+o+q|0;q=s-o+m|0;m=t+(p*5792|0)|0;o=(ha(p,-11584)|0)+t|0;t=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;s=ha((k[c+160>>2]|0)*10033|0,j[l+80>>1]|0)|0;u=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;z=p-u|0;A=(z+t|0)*6810|0;B=A+(t*4209|0)|0;C=A+(ha(z,-17828)|0)|0;z=ha(p,-6810)|0;A=ha(p,-11018)|0;p=t-u|0;D=(p*11522|0)+s|0;E=(u*20131|0)-A+D|0;F=D+(ha(t,-9113)|0)+z|0;D=(p*10033|0)-s|0;p=(u+t|0)*4712|0;G=z+(t*3897|0)-s+p|0;t=s+A+(ha(u,-7121)|0)+p|0;k[b>>2]=E+n>>11;k[b+448>>2]=n-E>>11;k[b+32>>2]=B+v>>11;k[b+416>>2]=v-B>>11;k[b+64>>2]=D+m>>11;k[b+384>>2]=m-D>>11;k[b+96>>2]=G+w>>11;k[b+352>>2]=w-G>>11;k[b+128>>2]=C+q>>11;k[b+320>>2]=q-C>>11;k[b+160>>2]=t+x>>11;k[b+288>>2]=x-t>>11;k[b+192>>2]=F+y>>11;k[b+256>>2]=y-F>>11;k[b+224>>2]=o>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+14|0;c=e+1|0;l=e+13|0;a=e+2|0;o=e+12|0;F=e+3|0;y=e+11|0;t=e+4|0;x=e+10|0;C=e+5|0;q=e+9|0;G=e+6|0;w=e+8|0;D=e+7|0;m=0;B=g;while(1){g=k[d+(m<<2)>>2]|0;v=(k[B>>2]<<13)+134348800|0;E=k[B+8>>2]|0;n=k[B+16>>2]|0;p=k[B+24>>2]|0;u=v+(ha(p,-3580)|0)|0;A=(p*9373|0)+v|0;s=v+(ha(p,-11586)|0)|0;p=E-n|0;v=n+E|0;n=v*10958|0;z=p*374|0;H=E*11795|0;E=z+n+A|0;I=H-n+z+u|0;z=v*4482|0;n=ha(p,-3271)|0;J=A-z+n|0;K=z-H+n+u|0;n=v*6476|0;v=p*2896|0;H=v+n+u|0;u=A-n+v|0;v=s+(p*5792|0)|0;n=(ha(p,-11584)|0)+s|0;s=k[B+4>>2]|0;p=k[B+12>>2]|0;A=(k[B+20>>2]|0)*10033|0;z=k[B+28>>2]|0;L=p-z|0;M=(L+s|0)*6810|0;N=M+(s*4209|0)|0;O=M+(ha(L,-17828)|0)|0;L=ha(p,-6810)|0;M=ha(p,-11018)|0;p=s-z|0;P=(p*11522|0)+A|0;Q=(z*20131|0)-M+P|0;R=P+(ha(s,-9113)|0)+L|0;P=(p*10033|0)-A|0;p=(z+s|0)*4712|0;S=L+(s*3897|0)-A+p|0;s=A+M+(ha(z,-7121)|0)+p|0;i[g+e>>0]=i[h+(((Q+E|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((E-Q|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((N+H|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((H-N|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((P+v|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((v-P|0)>>>18&1023)+-384)>>0]|0;i[g+F>>0]=i[h+(((S+I|0)>>>18&1023)+-384)>>0]|0;i[g+y>>0]=i[h+(((I-S|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((O+u|0)>>>18&1023)+-384)>>0]|0;i[g+x>>0]=i[h+(((u-O|0)>>>18&1023)+-384)>>0]|0;i[g+C>>0]=i[h+(((s+J|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((J-s|0)>>>18&1023)+-384)>>0]|0;i[g+G>>0]=i[h+(((R+K|0)>>>18&1023)+-384)>>0]|0;i[g+w>>0]=i[h+(((K-R|0)>>>18&1023)+-384)>>0]|0;i[g+D>>0]=i[h+((n>>>18&1023)+-384)>>0]|0;m=m+1|0;if((m|0)==15)break;else B=B+32|0}r=f;return}function vp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;f=r;r=r+512|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=n*10703|0;p=n*4433|0;n=o+m|0;q=m-o|0;o=p+m|0;s=m-p|0;p=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;t=p-m|0;u=t*2260|0;v=t*11363|0;t=v+(m*20995|0)|0;w=u+(p*7373|0)|0;x=v+(ha(p,-4926)|0)|0;p=u+(ha(m,-4176)|0)|0;m=t+n|0;u=n-t|0;t=w+o|0;n=o-w|0;w=x+s|0;o=s-x|0;x=p+q|0;s=q-p|0;p=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;q=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;y=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;z=v+p|0;A=(q+p|0)*11086|0;B=z*10217|0;C=(y+p|0)*8956|0;D=(p-y|0)*7350|0;E=z*5461|0;z=(p-q|0)*3363|0;F=A+B+C+(ha(p,-18730)|0)|0;G=z+(E+D)+(ha(p,-15038)|0)|0;p=(v+q|0)*1136|0;H=(v-q|0)*11529|0;I=y+q|0;J=ha(I,-5461)|0;K=A+(q*589|0)+p+J|0;A=ha(I,-10217)|0;I=z+(q*16154|0)+H+A|0;q=ha(y+v|0,-11086)|0;z=p+(ha(v,-9222)|0)+B+q|0;B=J+(y*8728|0)+C+q|0;q=(y-v|0)*3363|0;C=A+(y*25733|0)+D+q|0;D=H+(ha(v,-6278)|0)+E+q|0;k[b>>2]=F+m>>11;k[b+480>>2]=m-F>>11;k[b+32>>2]=K+t>>11;k[b+448>>2]=t-K>>11;k[b+64>>2]=z+w>>11;k[b+416>>2]=w-z>>11;k[b+96>>2]=B+x>>11;k[b+384>>2]=x-B>>11;k[b+128>>2]=C+s>>11;k[b+352>>2]=s-C>>11;k[b+160>>2]=D+o>>11;k[b+320>>2]=o-D>>11;k[b+192>>2]=I+n>>11;k[b+288>>2]=n-I>>11;k[b+224>>2]=G+u>>11;k[b+256>>2]=u-G>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+15|0;c=e+1|0;l=e+14|0;a=e+2|0;G=e+13|0;u=e+3|0;I=e+12|0;n=e+4|0;D=e+11|0;o=e+5|0;C=e+10|0;s=e+6|0;B=e+9|0;x=e+7|0;z=e+8|0;w=0;K=g;while(1){g=k[d+(w<<2)>>2]|0;t=(k[K>>2]<<13)+134348800|0;F=k[K+16>>2]|0;m=F*10703|0;q=F*4433|0;F=t+m|0;E=t-m|0;m=t+q|0;v=t-q|0;q=k[K+8>>2]|0;t=k[K+24>>2]|0;H=q-t|0;y=H*2260|0;A=H*11363|0;H=A+(t*20995|0)|0;J=y+(q*7373|0)|0;p=A+(ha(q,-4926)|0)|0;q=y+(ha(t,-4176)|0)|0;t=H+F|0;y=F-H|0;H=J+m|0;F=m-J|0;J=p+v|0;m=v-p|0;p=q+E|0;v=E-q|0;q=k[K+4>>2]|0;E=k[K+12>>2]|0;A=k[K+20>>2]|0;L=k[K+28>>2]|0;M=A+q|0;N=(E+q|0)*11086|0;O=M*10217|0;P=(L+q|0)*8956|0;Q=(q-L|0)*7350|0;R=M*5461|0;M=(q-E|0)*3363|0;S=N+O+P+(ha(q,-18730)|0)|0;T=M+(R+Q)+(ha(q,-15038)|0)|0;q=(A+E|0)*1136|0;U=(A-E|0)*11529|0;V=L+E|0;W=ha(V,-5461)|0;X=N+(E*589|0)+q+W|0;N=ha(V,-10217)|0;V=M+(E*16154|0)+U+N|0;E=ha(L+A|0,-11086)|0;M=q+(ha(A,-9222)|0)+O+E|0;O=W+(L*8728|0)+P+E|0;E=(L-A|0)*3363|0;P=N+(L*25733|0)+Q+E|0;Q=U+(ha(A,-6278)|0)+R+E|0;i[g+e>>0]=i[h+(((S+t|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((t-S|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((X+H|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((H-X|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((M+J|0)>>>18&1023)+-384)>>0]|0;i[g+G>>0]=i[h+(((J-M|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((O+p|0)>>>18&1023)+-384)>>0]|0;i[g+I>>0]=i[h+(((p-O|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((P+v|0)>>>18&1023)+-384)>>0]|0;i[g+D>>0]=i[h+(((v-P|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((Q+m|0)>>>18&1023)+-384)>>0]|0;i[g+C>>0]=i[h+(((m-Q|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((V+F|0)>>>18&1023)+-384)>>0]|0;i[g+B>>0]=i[h+(((F-V|0)>>>18&1023)+-384)>>0]|0;i[g+x>>0]=i[h+(((T+y|0)>>>18&1023)+-384)>>0]|0;i[g+z>>0]=i[h+(((y-T|0)>>>18&1023)+-384)>>0]|0;w=w+1|0;if((w|0)==16)break;else K=K+32|0}r=f;return}function wp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;f=r;r=r+256|0;g=f;h=k[a+336>>2]|0;a=8;l=c;c=k[b+84>>2]|0;b=g;while(1){m=j[l+16>>1]|0;n=j[l+32>>1]|0;if(!((m|n)<<16>>16))if(((((j[l+48>>1]|0)==0?(j[l+64>>1]|0)==0:0)?(j[l+80>>1]|0)==0:0)?(j[l+96>>1]|0)==0:0)?(j[l+112>>1]|0)==0:0){o=ha(k[c>>2]<<2,j[l>>1]|0)|0;k[b>>2]=o;k[b+32>>2]=o;k[b+64>>2]=o;k[b+96>>2]=o;k[b+128>>2]=o;k[b+160>>2]=o;k[b+192>>2]=o;k[b+224>>2]=o}else{p=0;q=10}else{p=n;q=10}if((q|0)==10){q=0;n=ha(p<<16>>16,k[c+64>>2]|0)|0;o=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;s=(o+n|0)*4433|0;t=s+(n*6270|0)|0;n=s+(ha(o,-15137)|0)|0;o=ha(k[c+128>>2]<<13,j[l+64>>1]|0)|0;s=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;u=o+s|0;v=s-o|0;o=u+t|0;s=u-t|0;t=v+n|0;u=v-n|0;n=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;x=ha(m<<16>>16,k[c+32>>2]|0)|0;m=w+n|0;y=x+v|0;z=(y+m|0)*9633|0;A=z+(ha(m,-16069)|0)|0;m=z+(ha(y,-3196)|0)|0;y=ha(x+n|0,-7373)|0;z=y+(n*2446|0)+A|0;n=y+(x*12299|0)+m|0;x=ha(w+v|0,-20995)|0;y=x+(v*16819|0)+m|0;m=x+(w*25172|0)+A|0;k[b>>2]=n+o>>11;k[b+224>>2]=o-n>>11;k[b+32>>2]=m+t>>11;k[b+192>>2]=t-m>>11;k[b+64>>2]=y+u>>11;k[b+160>>2]=u-y>>11;k[b+96>>2]=z+s>>11;k[b+128>>2]=s-z>>11}if((a|0)>1){a=a+-1|0;l=l+2|0;c=c+4|0;b=b+4|0}else break}b=e+15|0;c=e+1|0;l=e+14|0;a=e+2|0;p=e+13|0;q=e+3|0;z=e+12|0;s=e+4|0;y=e+11|0;u=e+5|0;m=e+10|0;t=e+6|0;n=e+9|0;o=e+7|0;A=e+8|0;w=0;x=g;while(1){g=k[d+(w<<2)>>2]|0;v=(k[x>>2]<<13)+134348800|0;B=k[x+16>>2]|0;C=B*10703|0;D=B*4433|0;B=v+C|0;E=v-C|0;C=v+D|0;F=v-D|0;D=k[x+8>>2]|0;v=k[x+24>>2]|0;G=D-v|0;H=G*2260|0;I=G*11363|0;G=I+(v*20995|0)|0;J=H+(D*7373|0)|0;K=I+(ha(D,-4926)|0)|0;D=H+(ha(v,-4176)|0)|0;v=G+B|0;H=B-G|0;G=J+C|0;B=C-J|0;J=K+F|0;C=F-K|0;K=D+E|0;F=E-D|0;D=k[x+4>>2]|0;E=k[x+12>>2]|0;I=k[x+20>>2]|0;L=k[x+28>>2]|0;M=I+D|0;N=(E+D|0)*11086|0;O=M*10217|0;P=(L+D|0)*8956|0;Q=(D-L|0)*7350|0;R=M*5461|0;M=(D-E|0)*3363|0;S=N+O+P+(ha(D,-18730)|0)|0;T=M+(R+Q)+(ha(D,-15038)|0)|0;D=(I+E|0)*1136|0;U=(I-E|0)*11529|0;V=L+E|0;W=ha(V,-5461)|0;X=N+(E*589|0)+D+W|0;N=ha(V,-10217)|0;V=M+(E*16154|0)+U+N|0;E=ha(L+I|0,-11086)|0;M=D+(ha(I,-9222)|0)+O+E|0;O=W+(L*8728|0)+P+E|0;E=(L-I|0)*3363|0;P=N+(L*25733|0)+Q+E|0;Q=U+(ha(I,-6278)|0)+R+E|0;i[g+e>>0]=i[h+(((S+v|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((v-S|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((X+G|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((G-X|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((M+J|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((J-M|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((O+K|0)>>>18&1023)+-384)>>0]|0;i[g+z>>0]=i[h+(((K-O|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((P+F|0)>>>18&1023)+-384)>>0]|0;i[g+y>>0]=i[h+(((F-P|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((Q+C|0)>>>18&1023)+-384)>>0]|0;i[g+m>>0]=i[h+(((C-Q|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((V+B|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((B-V|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((T+H|0)>>>18&1023)+-384)>>0]|0;i[g+A>>0]=i[h+(((H-T|0)>>>18&1023)+-384)>>0]|0;w=w+1|0;if((w|0)==8)break;else x=x+32|0}r=f;return}function xp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;f=r;r=r+224|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;q=(o-p|0)*7223|0;s=(n-o|0)*2578|0;t=m+(s+q)+(ha(o,-15083)|0)|0;u=p+n|0;v=(u*10438|0)+m|0;w=v+(ha(p,-637)|0)+q|0;q=v+(ha(n,-20239)|0)+s|0;s=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;n=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;p=(n+s|0)*7663|0;x=(s-n|0)*1395|0;y=ha(v+n|0,-11295)|0;n=p+x+y|0;z=(v+s|0)*5027|0;s=z+(p-x)|0;x=z+(v*15326|0)+y|0;k[b>>2]=s+w>>11;k[b+192>>2]=w-s>>11;k[b+32>>2]=n+t>>11;k[b+160>>2]=t-n>>11;k[b+64>>2]=x+q>>11;k[b+128>>2]=q-x>>11;k[b+96>>2]=((o-u|0)*11585|0)+m>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+13|0;c=e+1|0;l=e+12|0;a=e+2|0;m=e+11|0;u=e+3|0;o=e+10|0;x=e+4|0;q=e+9|0;n=e+5|0;t=e+8|0;s=e+6|0;w=e+7|0;y=0;v=g;while(1){g=k[d+(y<<2)>>2]|0;z=(k[v>>2]<<13)+134348800|0;p=k[v+16>>2]|0;A=z+(p*10438|0)|0;B=z+(p*2578|0)|0;C=z+(ha(p,-7223)|0)|0;D=z+(ha(p,-11586)|0)|0;p=k[v+8>>2]|0;z=k[v+24>>2]|0;E=(z+p|0)*9058|0;F=E+(p*2237|0)|0;G=E+(ha(z,-14084)|0)|0;E=(p*5027|0)+(ha(z,-11295)|0)|0;z=F+A|0;p=A-F|0;F=G+B|0;A=B-G|0;G=E+C|0;B=C-E|0;E=k[v+4>>2]|0;C=k[v+12>>2]|0;H=k[v+20>>2]|0;I=k[v+28>>2]<<13;J=H+E|0;K=(C+E|0)*10935|0;L=J*9810|0;M=I+(K+L)+(ha(E,-9232)|0)|0;N=J*6164|0;J=E-C|0;O=(J*3826|0)-I|0;P=N+(ha(E,-8693)|0)+O|0;E=(ha(H+C|0,-1297)|0)-I|0;Q=E+(ha(C,-3474)|0)+K|0;K=E+(ha(H,-19447)|0)+L|0;L=(H-C|0)*11512|0;E=L+I+(ha(H,-13850)|0)+N|0;N=L+(C*5529|0)+O|0;O=(J-H<<13)+I|0;i[g+e>>0]=i[h+(((M+z|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((z-M|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((Q+F|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((F-Q|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((K+G|0)>>>18&1023)+-384)>>0]|0;i[g+m>>0]=i[h+(((G-K|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((O+D|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((D-O|0)>>>18&1023)+-384)>>0]|0;i[g+x>>0]=i[h+(((E+B|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((B-E|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((N+A|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((A-N|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((P+p|0)>>>18&1023)+-384)>>0]|0;i[g+w>>0]=i[h+(((p-P|0)>>>18&1023)+-384)>>0]|0;y=y+1|0;if((y|0)==7)break;else v=v+32|0}r=f;return}function yp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;f=r;r=r+192|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+128>>2]|0)*5793|0,j[l+64>>1]|0)|0;o=n+m|0;p=(ha(n,-2)|0)+m>>11;m=ha((k[c+64>>2]|0)*10033|0,j[l+32>>1]|0)|0;n=m+o|0;q=o-m|0;m=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;o=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;s=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;t=(s+m|0)*2998|0;u=t+(o+m<<13)|0;v=t+(s-o<<13)|0;t=m-o-s<<2;k[b>>2]=u+n>>11;k[b+160>>2]=n-u>>11;k[b+32>>2]=t+p;k[b+128>>2]=p-t;k[b+64>>2]=v+q>>11;k[b+96>>2]=q-v>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+11|0;c=e+1|0;l=e+10|0;a=e+2|0;v=e+9|0;q=e+3|0;t=e+8|0;p=e+4|0;u=e+7|0;n=e+5|0;s=e+6|0;o=0;m=g;while(1){g=k[d+(o<<2)>>2]|0;w=(k[m>>2]<<13)+134348800|0;x=(k[m+16>>2]|0)*10033|0;y=w+x|0;z=w-x|0;x=k[m+8>>2]|0;A=k[m+24>>2]<<13;B=(x<<13)-A|0;C=B+w|0;D=w-B|0;B=A+(x*11190|0)|0;w=B+y|0;E=y-B|0;B=(x*2998|0)-A|0;A=B+z|0;x=z-B|0;B=k[m+4>>2]|0;z=k[m+12>>2]|0;y=k[m+20>>2]|0;F=k[m+28>>2]|0;G=z*10703|0;H=ha(z,-4433)|0;I=y+B|0;J=(I+F|0)*7053|0;K=J+(I*2139|0)|0;I=G+(B*2295|0)+K|0;L=ha(F+y|0,-8565)|0;M=H+L+(ha(y,-12112)|0)+K|0;K=(F*12998|0)-G+J+L|0;L=J+((ha(B,-5540)|0)+H+(ha(F,-16244)|0))|0;H=B-F|0;F=z-y|0;y=(H+F|0)*4433|0;z=y+(H*6270|0)|0;H=y+(ha(F,-15137)|0)|0;i[g+e>>0]=i[h+(((I+w|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((w-I|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((z+C|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((C-z|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((M+A|0)>>>18&1023)+-384)>>0]|0;i[g+v>>0]=i[h+(((A-M|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((K+x|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((x-K|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((H+D|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((D-H|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((L+E|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((E-L|0)>>>18&1023)+-384)>>0]|0;o=o+1|0;if((o|0)==6)break;else m=m+32|0}r=f;return}function zp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=r;r=r+160|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=(o+n|0)*6476|0;q=n-o|0;o=(q*2896|0)+m|0;n=o+p|0;s=o-p|0;p=m+(ha(q,-11584)|0)|0;q=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;o=(m+q|0)*6810|0;t=o+(q*4209|0)|0;q=o+(ha(m,-17828)|0)|0;k[b>>2]=t+n>>11;k[b+128>>2]=n-t>>11;k[b+32>>2]=q+s>>11;k[b+96>>2]=s-q>>11;k[b+64>>2]=p>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+9|0;c=e+1|0;l=e+8|0;a=e+2|0;p=e+7|0;q=e+3|0;s=e+6|0;t=e+4|0;n=e+5|0;m=0;o=g;while(1){g=k[d+(m<<2)>>2]|0;u=(k[o>>2]<<13)+134348800|0;v=k[o+16>>2]|0;w=u+(v*9373|0)|0;x=u+(ha(v,-3580)|0)|0;y=u+(ha(v,-11586)|0)|0;v=k[o+8>>2]|0;u=k[o+24>>2]|0;z=(u+v|0)*6810|0;A=z+(v*4209|0)|0;v=z+(ha(u,-17828)|0)|0;u=A+w|0;z=w-A|0;A=v+x|0;w=x-v|0;v=k[o+4>>2]|0;x=k[o+12>>2]|0;B=k[o+20>>2]<<13;C=k[o+28>>2]|0;D=C+x|0;E=x-C|0;C=E*2531|0;x=D*7791|0;F=C+B|0;G=x+(v*11443|0)+F|0;H=(v*1812|0)-x+F|0;F=D*4815|0;D=B-C-(E<<12)|0;C=(v-E<<13)-B|0;B=(v*10323|0)-F-D|0;E=D+((v*5260|0)-F)|0;i[g+e>>0]=i[h+(((G+u|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((u-G|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((B+A|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((A-B|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((C+y|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((y-C|0)>>>18&1023)+-384)>>0]|0;i[g+q>>0]=i[h+(((E+w|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((w-E|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((H+z|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((z-H|0)>>>18&1023)+-384)>>0]|0;m=m+1|0;if((m|0)==5)break;else o=o+32|0}r=f;return}function Ap(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=r;r=r+128|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(j[l>>1]|0,k[c>>2]|0)|0;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=n+m<<2;p=m-n<<2;n=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;q=((m+n|0)*4433|0)+1024|0;s=q+(n*6270|0)>>11;n=q+(ha(m,-15137)|0)>>11;k[b>>2]=s+o;k[b+96>>2]=o-s;k[b+32>>2]=n+p;k[b+64>>2]=p-n;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+7|0;c=e+1|0;l=e+6|0;a=e+2|0;n=e+5|0;p=e+3|0;s=e+4|0;o=0;m=g;while(1){g=k[d+(o<<2)>>2]|0;q=(k[m>>2]|0)+16400|0;t=k[m+16>>2]|0;u=q+t<<13;v=q-t<<13;t=k[m+8>>2]|0;q=k[m+24>>2]|0;w=(q+t|0)*4433|0;x=w+(t*6270|0)|0;t=w+(ha(q,-15137)|0)|0;q=x+u|0;w=u-x|0;x=t+v|0;u=v-t|0;t=k[m+28>>2]|0;v=k[m+20>>2]|0;y=k[m+12>>2]|0;z=k[m+4>>2]|0;A=y+t|0;B=z+v|0;C=(B+A|0)*9633|0;D=C+(ha(A,-16069)|0)|0;A=C+(ha(B,-3196)|0)|0;B=ha(z+t|0,-7373)|0;C=B+(t*2446|0)+D|0;t=B+(z*12299|0)+A|0;z=ha(y+v|0,-20995)|0;B=z+(v*16819|0)+A|0;A=z+(y*25172|0)+D|0;i[g+e>>0]=i[h+(((t+q|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((q-t|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((A+x|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((x-A|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((B+u|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((u-B|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((C+w|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((w-C|0)>>>18&1023)+-384)>>0]|0;o=o+1|0;if((o|0)==4)break;else m=m+32|0}r=f;return}function Bp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=r;r=r+80|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+64>>2]|0)*5793|0,j[l+32>>1]|0)|0;o=n+m|0;p=(ha(n,-2)|0)+m|0;m=ha((k[c+32>>2]|0)*10033|0,j[l+16>>1]|0)|0;k[b>>2]=m+o>>11;k[b+48>>2]=o-m>>11;k[b+24>>2]=p>>11;a=a+1|0;if((a|0)==6)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+5|0;c=e+1|0;l=e+4|0;a=e+2|0;p=e+3|0;m=0;o=g;while(1){g=k[d+(m<<2)>>2]|0;n=(k[o>>2]<<13)+134348800|0;q=(k[o+16>>2]|0)*5793|0;s=n+q|0;t=n-q-q|0;q=(k[o+8>>2]|0)*10033|0;n=s+q|0;u=s-q|0;q=k[o+4>>2]|0;s=k[o+12>>2]|0;v=k[o+20>>2]|0;w=(v+q|0)*2998|0;x=w+(s+q<<13)|0;y=w+(v-s<<13)|0;w=q-s-v<<13;i[g+e>>0]=i[h+(((x+n|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((n-x|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((w+t|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((t-w|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((y+u|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((u-y|0)>>>18&1023)+-384)>>0]|0;m=m+1|0;if((m|0)==3)break;else o=o+24|0}r=f;return}function Cp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;f=r;r=r+32|0;g=f;h=k[a+336>>2]|0;a=k[b+84>>2]|0;b=ha(j[c>>1]|0,k[a>>2]|0)|0;l=ha(j[c+16>>1]|0,k[a+32>>2]|0)|0;m=l+b|0;k[g>>2]=m;n=g+16|0;k[n>>2]=b-l;l=ha(j[c+2>>1]|0,k[a+4>>2]|0)|0;b=ha(j[c+18>>1]|0,k[a+36>>2]|0)|0;o=b+l|0;k[g+4>>2]=o;p=l-b|0;k[g+20>>2]=p;b=ha(j[c+4>>1]|0,k[a+8>>2]|0)|0;l=ha(j[c+20>>1]|0,k[a+40>>2]|0)|0;q=l+b|0;k[g+8>>2]=q;s=b-l|0;k[g+24>>2]=s;l=ha(j[c+6>>1]|0,k[a+12>>2]|0)|0;b=ha(j[c+22>>1]|0,k[a+44>>2]|0)|0;a=b+l|0;k[g+12>>2]=a;c=l-b|0;k[g+28>>2]=c;g=e+3|0;b=e+1|0;l=e+2|0;t=k[d>>2]|0;u=m+4100|0;m=u+q<<13;v=u-q<<13;q=(a+o|0)*4433|0;u=q+(o*6270|0)|0;o=q+(ha(a,-15137)|0)|0;i[t+e>>0]=i[h+(((u+m|0)>>>16&1023)+-384)>>0]|0;i[t+g>>0]=i[h+(((m-u|0)>>>16&1023)+-384)>>0]|0;i[t+b>>0]=i[h+(((o+v|0)>>>16&1023)+-384)>>0]|0;i[t+l>>0]=i[h+(((v-o|0)>>>16&1023)+-384)>>0]|0;o=k[d+4>>2]|0;d=(k[n>>2]|0)+4100|0;n=d+s<<13;v=d-s<<13;s=(c+p|0)*4433|0;d=s+(p*6270|0)|0;p=s+(ha(c,-15137)|0)|0;i[o+e>>0]=i[h+(((d+n|0)>>>16&1023)+-384)>>0]|0;i[o+g>>0]=i[h+(((n-d|0)>>>16&1023)+-384)>>0]|0;i[o+b>>0]=i[h+(((p+v|0)>>>16&1023)+-384)>>0]|0;i[o+l>>0]=i[h+(((v-p|0)>>>16&1023)+-384)>>0]|0;r=f;return}function Dp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=k[a+336>>2]|0;a=k[b+84>>2]|0;b=k[d>>2]|0;d=(ha(j[c>>1]|0,k[a>>2]|0)|0)+4100|0;g=ha(j[c+2>>1]|0,k[a+4>>2]|0)|0;i[b+e>>0]=i[f+(((g+d|0)>>>3&1023)+-384)>>0]|0;i[b+(e+1)>>0]=i[f+(((d-g|0)>>>3&1023)+-384)>>0]|0;return}function Ep(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;f=r;r=r+512|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=n*10703|0;p=n*4433|0;n=o+m|0;q=m-o|0;o=p+m|0;s=m-p|0;p=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;t=p-m|0;u=t*2260|0;v=t*11363|0;t=v+(m*20995|0)|0;w=u+(p*7373|0)|0;x=v+(ha(p,-4926)|0)|0;p=u+(ha(m,-4176)|0)|0;m=t+n|0;u=n-t|0;t=w+o|0;n=o-w|0;w=x+s|0;o=s-x|0;x=p+q|0;s=q-p|0;p=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;q=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;y=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;z=v+p|0;A=(q+p|0)*11086|0;B=z*10217|0;C=(y+p|0)*8956|0;D=(p-y|0)*7350|0;E=z*5461|0;z=(p-q|0)*3363|0;F=A+B+C+(ha(p,-18730)|0)|0;G=z+(E+D)+(ha(p,-15038)|0)|0;p=(v+q|0)*1136|0;H=(v-q|0)*11529|0;I=y+q|0;J=ha(I,-5461)|0;K=A+(q*589|0)+p+J|0;A=ha(I,-10217)|0;I=z+(q*16154|0)+H+A|0;q=ha(y+v|0,-11086)|0;z=p+(ha(v,-9222)|0)+B+q|0;B=J+(y*8728|0)+C+q|0;q=(y-v|0)*3363|0;C=A+(y*25733|0)+D+q|0;D=H+(ha(v,-6278)|0)+E+q|0;k[b>>2]=F+m>>11;k[b+480>>2]=m-F>>11;k[b+32>>2]=K+t>>11;k[b+448>>2]=t-K>>11;k[b+64>>2]=z+w>>11;k[b+416>>2]=w-z>>11;k[b+96>>2]=B+x>>11;k[b+384>>2]=x-B>>11;k[b+128>>2]=C+s>>11;k[b+352>>2]=s-C>>11;k[b+160>>2]=D+o>>11;k[b+320>>2]=o-D>>11;k[b+192>>2]=I+n>>11;k[b+288>>2]=n-I>>11;k[b+224>>2]=G+u>>11;k[b+256>>2]=u-G>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+7|0;c=e+1|0;l=e+6|0;a=e+2|0;G=e+5|0;u=e+3|0;I=e+4|0;n=0;D=g;while(1){g=k[d+(n<<2)>>2]|0;o=(k[D>>2]|0)+16400|0;C=k[D+16>>2]|0;s=o+C<<13;B=o-C<<13;C=k[D+8>>2]|0;o=k[D+24>>2]|0;x=(o+C|0)*4433|0;z=x+(C*6270|0)|0;C=x+(ha(o,-15137)|0)|0;o=z+s|0;x=s-z|0;z=C+B|0;s=B-C|0;C=k[D+28>>2]|0;B=k[D+20>>2]|0;w=k[D+12>>2]|0;K=k[D+4>>2]|0;t=w+C|0;F=K+B|0;m=(F+t|0)*9633|0;q=m+(ha(t,-16069)|0)|0;t=m+(ha(F,-3196)|0)|0;F=ha(K+C|0,-7373)|0;m=F+(C*2446|0)+q|0;C=F+(K*12299|0)+t|0;K=ha(w+B|0,-20995)|0;F=K+(B*16819|0)+t|0;t=K+(w*25172|0)+q|0;i[g+e>>0]=i[h+(((C+o|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((o-C|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((t+z|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((z-t|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((F+s|0)>>>18&1023)+-384)>>0]|0;i[g+G>>0]=i[h+(((s-F|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((m+x|0)>>>18&1023)+-384)>>0]|0;i[g+I>>0]=i[h+(((x-m|0)>>>18&1023)+-384)>>0]|0;n=n+1|0;if((n|0)==16)break;else D=D+32|0}r=f;return}function Fp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+400|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=(n*10438|0)+m|0;p=(n*2578|0)+m|0;q=m+(ha(n,-7223)|0)|0;s=m+(ha(n,-11586)|0)>>11;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;t=(m+n|0)*9058|0;u=t+(n*2237|0)|0;v=t+(ha(m,-14084)|0)|0;t=(n*5027|0)+(ha(m,-11295)|0)|0;m=u+o|0;n=o-u|0;u=v+p|0;o=p-v|0;v=t+q|0;p=q-t|0;t=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;q=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;w=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;x=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;y=x<<13;z=w+t|0;A=(q+t|0)*10935|0;B=z*9810|0;C=A+B+y+(ha(t,-9232)|0)|0;D=z*6164|0;z=t-q|0;E=(z*3826|0)-y|0;F=E+(D+(ha(t,-8693)|0))|0;t=(ha(w+q|0,-1297)|0)-y|0;G=t+(ha(q,-3474)|0)+A|0;A=t+(ha(w,-19447)|0)+B|0;B=(w-q|0)*11512|0;t=B+y+(ha(w,-13850)|0)+D|0;D=B+(q*5529|0)+E|0;E=z-w+x<<2;k[b>>2]=C+m>>11;k[b+364>>2]=m-C>>11;k[b+28>>2]=G+u>>11;k[b+336>>2]=u-G>>11;k[b+56>>2]=A+v>>11;k[b+308>>2]=v-A>>11;k[b+84>>2]=E+s;k[b+280>>2]=s-E;k[b+112>>2]=t+p>>11;k[b+252>>2]=p-t>>11;k[b+140>>2]=D+o>>11;k[b+224>>2]=o-D>>11;k[b+168>>2]=F+n>>11;k[b+196>>2]=n-F>>11;a=a+1|0;if((a|0)==7)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+6|0;c=e+1|0;l=e+5|0;a=e+2|0;F=e+4|0;n=e+3|0;D=0;o=g;while(1){g=k[d+(D<<2)>>2]|0;t=(k[o>>2]<<13)+134348800|0;p=k[o+8>>2]|0;E=k[o+16>>2]|0;s=k[o+24>>2]|0;A=(E-s|0)*7223|0;v=(p-E|0)*2578|0;G=t+(v+A)+(ha(E,-15083)|0)|0;u=s+p|0;C=(u*10438|0)+t|0;m=C+(ha(s,-637)|0)+A|0;A=C+(ha(p,-20239)|0)+v|0;v=k[o+4>>2]|0;p=k[o+12>>2]|0;C=k[o+20>>2]|0;s=(p+v|0)*7663|0;x=(v-p|0)*1395|0;w=ha(C+p|0,-11295)|0;p=s+x+w|0;z=(C+v|0)*5027|0;v=s-x+z|0;x=z+(C*15326|0)+w|0;i[g+e>>0]=i[h+(((v+m|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((m-v|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((p+G|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((G-p|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((x+A|0)>>>18&1023)+-384)>>0]|0;i[g+F>>0]=i[h+(((A-x|0)>>>18&1023)+-384)>>0]|0;i[g+n>>0]=i[h+(((((E-u|0)*11585|0)+t|0)>>>18&1023)+-384)>>0]|0;D=D+1|0;if((D|0)==14)break;else o=o+28|0}r=f;return}function Gp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=r;r=r+288|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+128>>2]|0)*10033|0,j[l+64>>1]|0)|0;o=n+m|0;p=m-n|0;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;q=ha(k[c+192>>2]<<13,j[l+96>>1]|0)|0;s=(n<<13)-q|0;t=s+m|0;u=m-s|0;s=q+(n*11190|0)|0;m=s+o|0;v=o-s|0;s=(n*2998|0)-q|0;q=s+p|0;n=p-s|0;s=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;o=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;x=p*10703|0;y=ha(p,-4433)|0;z=o+s|0;A=(w+z|0)*7053|0;B=A+(z*2139|0)|0;z=x+(s*2295|0)+B|0;C=ha(w+o|0,-8565)|0;D=y+C+(ha(o,-12112)|0)+B|0;B=(w*12998|0)-x+A+C|0;C=A+((ha(s,-5540)|0)+y+(ha(w,-16244)|0))|0;y=s-w|0;w=p-o|0;o=(y+w|0)*4433|0;p=o+(y*6270|0)|0;y=o+(ha(w,-15137)|0)|0;k[b>>2]=z+m>>11;k[b+264>>2]=m-z>>11;k[b+24>>2]=p+t>>11;k[b+240>>2]=t-p>>11;k[b+48>>2]=D+q>>11;k[b+216>>2]=q-D>>11;k[b+72>>2]=B+n>>11;k[b+192>>2]=n-B>>11;k[b+96>>2]=y+u>>11;k[b+168>>2]=u-y>>11;k[b+120>>2]=C+v>>11;k[b+144>>2]=v-C>>11;a=a+1|0;if((a|0)==6)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+5|0;c=e+1|0;l=e+4|0;a=e+2|0;C=e+3|0;v=0;y=g;while(1){g=k[d+(v<<2)>>2]|0;u=(k[y>>2]<<13)+134348800|0;B=(k[y+16>>2]|0)*5793|0;n=u+B|0;D=u-B-B|0;B=(k[y+8>>2]|0)*10033|0;u=n+B|0;q=n-B|0;B=k[y+4>>2]|0;n=k[y+12>>2]|0;p=k[y+20>>2]|0;t=(p+B|0)*2998|0;z=t+(n+B<<13)|0;m=t+(p-n<<13)|0;t=B-n-p<<13;i[g+e>>0]=i[h+(((z+u|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((u-z|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((t+D|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((D-t|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((m+q|0)>>>18&1023)+-384)>>0]|0;i[g+C>>0]=i[h+(((q-m|0)>>>18&1023)+-384)>>0]|0;v=v+1|0;if((v|0)==12)break;else y=y+24|0}r=f;return}function Hp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;f=r;r=r+208|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=(n*9373|0)+m|0;p=m+(ha(n,-3580)|0)|0;q=m+(ha(n,-11586)|0)>>11;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;s=(m+n|0)*6810|0;t=s+(n*4209|0)|0;n=s+(ha(m,-17828)|0)|0;m=t+o|0;s=o-t|0;t=n+p|0;o=p-n|0;n=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;u=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;v=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;w=v+p|0;x=p-v|0;v=x*2531|0;p=u<<13;y=w*7791|0;z=v+p|0;A=y+(n*11443|0)+z|0;B=(n*1812|0)-y+z|0;z=w*4815|0;w=p-v-(x<<12)|0;v=n-u-x<<2;x=(n*10323|0)-z-w|0;u=w+((n*5260|0)-z)|0;k[b>>2]=A+m>>11;k[b+180>>2]=m-A>>11;k[b+20>>2]=x+t>>11;k[b+160>>2]=t-x>>11;k[b+40>>2]=v+q;k[b+140>>2]=q-v;k[b+60>>2]=u+o>>11;k[b+120>>2]=o-u>>11;k[b+80>>2]=B+s>>11;k[b+100>>2]=s-B>>11;a=a+1|0;if((a|0)==5)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+4|0;c=e+1|0;l=e+3|0;a=e+2|0;B=0;s=g;while(1){g=k[d+(B<<2)>>2]|0;u=(k[s>>2]<<13)+134348800|0;o=k[s+8>>2]|0;v=k[s+16>>2]|0;q=(v+o|0)*6476|0;x=o-v|0;v=(x*2896|0)+u|0;o=v+q|0;t=v-q|0;q=u+(ha(x,-11584)|0)|0;x=k[s+4>>2]|0;u=k[s+12>>2]|0;v=(u+x|0)*6810|0;A=v+(x*4209|0)|0;x=v+(ha(u,-17828)|0)|0;i[g+e>>0]=i[h+(((A+o|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((o-A|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((x+t|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((t-x|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+((q>>>18&1023)+-384)>>0]|0;B=B+1|0;if((B|0)==10)break;else s=s+20|0}r=f;return}function Ip(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=r;r=r+128|0;g=f;h=k[a+336>>2]|0;a=4;l=c;c=k[b+84>>2]|0;b=g;while(1){m=j[l+16>>1]|0;n=j[l+32>>1]|0;if(!((m|n)<<16>>16))if(((((j[l+48>>1]|0)==0?(j[l+64>>1]|0)==0:0)?(j[l+80>>1]|0)==0:0)?(j[l+96>>1]|0)==0:0)?(j[l+112>>1]|0)==0:0){o=ha(k[c>>2]<<2,j[l>>1]|0)|0;k[b>>2]=o;k[b+16>>2]=o;k[b+32>>2]=o;k[b+48>>2]=o;k[b+64>>2]=o;k[b+80>>2]=o;k[b+96>>2]=o;k[b+112>>2]=o}else{p=0;q=10}else{p=n;q=10}if((q|0)==10){q=0;n=ha(p<<16>>16,k[c+64>>2]|0)|0;o=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;s=(o+n|0)*4433|0;t=s+(n*6270|0)|0;n=s+(ha(o,-15137)|0)|0;o=ha(k[c+128>>2]<<13,j[l+64>>1]|0)|0;s=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;u=o+s|0;v=s-o|0;o=u+t|0;s=u-t|0;t=v+n|0;u=v-n|0;n=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;x=ha(m<<16>>16,k[c+32>>2]|0)|0;m=w+n|0;y=x+v|0;z=(y+m|0)*9633|0;A=z+(ha(m,-16069)|0)|0;m=z+(ha(y,-3196)|0)|0;y=ha(x+n|0,-7373)|0;z=y+(n*2446|0)+A|0;n=y+(x*12299|0)+m|0;x=ha(w+v|0,-20995)|0;y=x+(v*16819|0)+m|0;m=x+(w*25172|0)+A|0;k[b>>2]=n+o>>11;k[b+112>>2]=o-n>>11;k[b+16>>2]=m+t>>11;k[b+96>>2]=t-m>>11;k[b+32>>2]=y+u>>11;k[b+80>>2]=u-y>>11;k[b+48>>2]=z+s>>11;k[b+64>>2]=s-z>>11}if((a|0)>1){a=a+-1|0;l=l+2|0;c=c+4|0;b=b+4|0}else break}b=e+3|0;c=e+1|0;l=e+2|0;a=0;p=g;while(1){g=k[d+(a<<2)>>2]|0;q=(k[p>>2]|0)+16400|0;z=k[p+8>>2]|0;s=q+z<<13;y=q-z<<13;z=k[p+4>>2]|0;q=k[p+12>>2]|0;u=(q+z|0)*4433|0;m=u+(z*6270|0)|0;z=u+(ha(q,-15137)|0)|0;i[g+e>>0]=i[h+(((m+s|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((s-m|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((z+y|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((y-z|0)>>>18&1023)+-384)>>0]|0;a=a+1|0;if((a|0)==8)break;else p=p+16|0}r=f;return}function Jp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;f=r;r=r+80|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+128>>2]|0)*5793|0,j[l+64>>1]|0)|0;o=n+m|0;p=(ha(n,-2)|0)+m>>11;m=ha((k[c+64>>2]|0)*10033|0,j[l+32>>1]|0)|0;n=m+o|0;q=o-m|0;m=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;o=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;s=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;t=(s+m|0)*2998|0;u=t+(o+m<<13)|0;v=t+(s-o<<13)|0;t=m-o-s<<2;k[b>>2]=u+n>>11;k[b+60>>2]=n-u>>11;k[b+12>>2]=t+p;k[b+48>>2]=p-t;k[b+24>>2]=v+q>>11;k[b+36>>2]=q-v>>11;a=a+1|0;if((a|0)==3)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+2|0;c=e+1|0;l=0;a=g;while(1){g=k[d+(l<<2)>>2]|0;v=(k[a>>2]<<13)+134348800|0;q=k[a+8>>2]|0;t=v+(q*5793|0)|0;p=(ha(q,-11586)|0)+v|0;v=(k[a+4>>2]|0)*10033|0;i[g+e>>0]=i[h+(((t+v|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((t-v|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+((p>>>18&1023)+-384)>>0]|0;l=l+1|0;if((l|0)==6)break;else a=a+12|0}r=f;return}function Kp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;f=r;r=r+32|0;g=f;h=k[a+336>>2]|0;a=k[b+84>>2]|0;b=ha(j[c>>1]|0,k[a>>2]|0)|0;l=ha(j[c+32>>1]|0,k[a+64>>2]|0)|0;m=l+b<<13;n=b-l<<13;l=ha(j[c+16>>1]|0,k[a+32>>2]|0)|0;b=ha(j[c+48>>1]|0,k[a+96>>2]|0)|0;o=(b+l|0)*4433|0;p=o+(l*6270|0)|0;l=o+(ha(b,-15137)|0)|0;b=p+m|0;k[g>>2]=b;k[g+24>>2]=m-p;p=l+n|0;k[g+8>>2]=p;m=n-l|0;k[g+16>>2]=m;l=ha(j[c+2>>1]|0,k[a+4>>2]|0)|0;n=ha(j[c+34>>1]|0,k[a+68>>2]|0)|0;o=n+l<<13;q=l-n<<13;n=ha(j[c+18>>1]|0,k[a+36>>2]|0)|0;l=ha(j[c+50>>1]|0,k[a+100>>2]|0)|0;a=(l+n|0)*4433|0;c=a+(n*6270|0)|0;n=a+(ha(l,-15137)|0)|0;l=c+o|0;k[g+4>>2]=l;a=o-c|0;k[g+28>>2]=a;c=n+q|0;k[g+12>>2]=c;o=q-n|0;k[g+20>>2]=o;n=e+1|0;q=k[d>>2]|0;s=b+33587200|0;i[q+e>>0]=i[h+(((s+l|0)>>>16&1023)+-384)>>0]|0;i[q+n>>0]=i[h+(((s-l|0)>>>16&1023)+-384)>>0]|0;l=k[d+4>>2]|0;s=p+33587200|0;i[l+e>>0]=i[h+(((s+c|0)>>>16&1023)+-384)>>0]|0;i[l+n>>0]=i[h+(((s-c|0)>>>16&1023)+-384)>>0]|0;c=k[d+8>>2]|0;s=m+33587200|0;i[c+e>>0]=i[h+(((s+o|0)>>>16&1023)+-384)>>0]|0;i[c+n>>0]=i[h+(((s-o|0)>>>16&1023)+-384)>>0]|0;o=k[d+12>>2]|0;d=(k[g+24>>2]|0)+33587200|0;i[o+e>>0]=i[h+(((d+a|0)>>>16&1023)+-384)>>0]|0;i[o+n>>0]=i[h+(((d-a|0)>>>16&1023)+-384)>>0]|0;r=f;return}function Lp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=k[a+336>>2]|0;a=k[b+84>>2]|0;b=(ha(j[c>>1]|0,k[a>>2]|0)|0)+4100|0;g=ha(j[c+16>>1]|0,k[a+32>>2]|0)|0;i[(k[d>>2]|0)+e>>0]=i[f+(((g+b|0)>>>3&1023)+-384)>>0]|0;i[(k[d+4>>2]|0)+e>>0]=i[f+(((b-g|0)>>>3&1023)+-384)>>0]|0;return}function Mp(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function Np(){var a=0,b=0;if(!(k[30648]|0)){a=122848;return a|0}b=(Wa()|0)+60|0;a=k[b>>2]|0;return a|0}function Op(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=0;while(1){if((l[161247+b>>0]|0)==(a|0)){c=b;d=2;break}b=b+1|0;if((b|0)==87){e=87;f=161335;break}}if((d|0)==2)if(!c){g=161335;return g|0}else{e=c;f=161335}while(1){c=f;while(1){d=c+1|0;if(!(i[c>>0]|0)){h=d;break}else c=d}e=e+-1|0;if(!e){g=h;break}else f=h}return g|0}function Pp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+32|0;e=d;f=d+16|0;k[f>>2]=c;c=(k[f>>2]|0)+(4-1)&~(4-1);g=k[c>>2]|0;k[f>>2]=c+4;k[e>>2]=a;k[e+4>>2]=b|32768;k[e+8>>2]=g;g=Vp(eb(5,e|0)|0)|0;r=d;return g|0}function Qp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0.0,V=0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0.0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0.0,qa=0,ra=0.0,sa=0.0,ta=0,ua=0.0,va=0,wa=0.0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0.0,Ha=0,Ia=0,Ja=0,Ka=0,La=0.0,Ma=0,Na=0,Oa=0,Pa=0.0,Qa=0.0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0.0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0.0,bd=0.0,cd=0.0,dd=0.0,ed=0.0,fd=0.0,gd=0.0,hd=0,id=0,jd=0.0,kd=0,ld=0.0;d=r;r=r+512|0;e=d;switch(b|0){case 0:{f=24;g=-149;break}case 1:{f=53;g=-1074;break}case 2:{f=53;g=-1074;break}default:{h=0.0;r=d;return +h}}b=a+4|0;j=a+100|0;do{m=k[b>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[b>>2]=m+1;n=l[m>>0]|0}else n=Up(a)|0}while((Mp(n)|0)!=0);o=n;a:do switch(o|0){case 43:case 45:{n=1-(((o|0)==45&1)<<1)|0;m=k[b>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[b>>2]=m+1;p=l[m>>0]|0;q=n;break a}else{p=Up(a)|0;q=n;break a}break}default:{p=o;q=1}}while(0);o=p;p=0;while(1){if((o|32|0)!=(i[163139+p>>0]|0)){s=o;t=p;break}do if(p>>>0<7){n=k[b>>2]|0;if(n>>>0<(k[j>>2]|0)>>>0){k[b>>2]=n+1;u=l[n>>0]|0;break}else{u=Up(a)|0;break}}else u=o;while(0);n=p+1|0;if(n>>>0<8){o=u;p=n}else{s=u;t=n;break}}b:do switch(t|0){case 8:break;case 3:{v=23;break}default:{u=(c|0)!=0;if(u&t>>>0>3)if((t|0)==8)break b;else{v=23;break b}do if(!t){if((s|32|0)==110){p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;w=l[p>>0]|0}else w=Up(a)|0;if((w|32|0)!=97)break;p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;x=l[p>>0]|0}else x=Up(a)|0;if((x|32|0)!=110)break;p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;y=l[p>>0]|0}else y=Up(a)|0;if((y|0)==40)z=1;else{if(!(k[j>>2]|0)){h=A;r=d;return +h}k[b>>2]=(k[b>>2]|0)+-1;h=A;r=d;return +h}while(1){p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;C=l[p>>0]|0}else C=Up(a)|0;if(!((C+-48|0)>>>0<10|(C+-65|0)>>>0<26)?!((C|0)==95|(C+-97|0)>>>0<26):0){D=C;E=z;break}z=z+1|0}if((D|0)==41){h=A;r=d;return +h}p=(k[j>>2]|0)==0;if(!p)k[b>>2]=(k[b>>2]|0)+-1;if(!u){o=Np()|0;k[o>>2]=22;Tp(a,0);h=0.0;r=d;return +h}if(!E){h=A;r=d;return +h}else F=E;do{F=F+-1|0;if(!p)k[b>>2]=(k[b>>2]|0)+-1}while((F|0)!=0);h=A;r=d;return +h}do if((s|0)==48){p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;G=l[p>>0]|0}else G=Up(a)|0;if((G|32|0)!=120){if(!(k[j>>2]|0)){H=48;break}k[b>>2]=(k[b>>2]|0)+-1;H=48;break}p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;I=l[p>>0]|0;J=0}else{I=Up(a)|0;J=0}c:while(1){switch(I|0){case 46:{K=J;v=72;break c;break}case 48:break;default:{M=0;N=0;O=0;P=0;Q=I;R=J;S=0;T=0;U=1.0;V=0;X=0.0;break c}}p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;I=l[p>>0]|0;J=1;continue}else{I=Up(a)|0;J=1;continue}}if((v|0)==72){p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;Y=l[p>>0]|0}else Y=Up(a)|0;if((Y|0)==48){p=0;o=0;while(1){n=k[b>>2]|0;if(n>>>0<(k[j>>2]|0)>>>0){k[b>>2]=n+1;Z=l[n>>0]|0}else Z=Up(a)|0;n=sr(p|0,o|0,-1,-1)|0;m=L;if((Z|0)==48){p=n;o=m}else{M=0;N=0;O=n;P=m;Q=Z;R=1;S=1;T=0;U=1.0;V=0;X=0.0;break}}}else{M=0;N=0;O=0;P=0;Q=Y;R=K;S=1;T=0;U=1.0;V=0;X=0.0}}while(1){o=Q+-48|0;p=Q|32;if(o>>>0>=10){m=(Q|0)==46;if(!(m|(p+-97|0)>>>0<6)){_=N;$=O;aa=M;ba=P;ca=Q;da=R;ea=S;fa=V;ga=X;break}if(m)if(!S){ia=N;ja=M;ka=N;la=M;ma=R;na=1;oa=T;pa=U;qa=V;ra=X}else{_=N;$=O;aa=M;ba=P;ca=46;da=R;ea=S;fa=V;ga=X;break}else v=84}else v=84;if((v|0)==84){v=0;m=(Q|0)>57?p+-87|0:o;do if(!((M|0)<0|(M|0)==0&N>>>0<8)){if((M|0)<0|(M|0)==0&N>>>0<14){sa=U*.0625;ta=T;ua=sa;va=V;wa=X+sa*+(m|0);break}if((T|0)!=0|(m|0)==0){ta=T;ua=U;va=V;wa=X}else{ta=1;ua=U;va=V;wa=X+U*.5}}else{ta=T;ua=U;va=m+(V<<4)|0;wa=X}while(0);m=sr(N|0,M|0,1,0)|0;ia=O;ja=P;ka=m;la=L;ma=1;na=S;oa=ta;pa=ua;qa=va;ra=wa}m=k[b>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[b>>2]=m+1;M=la;N=ka;O=ia;P=ja;Q=l[m>>0]|0;R=ma;S=na;T=oa;U=pa;V=qa;X=ra;continue}else{M=la;N=ka;O=ia;P=ja;Q=Up(a)|0;R=ma;S=na;T=oa;U=pa;V=qa;X=ra;continue}}if(!da){m=(k[j>>2]|0)==0;if(!m)k[b>>2]=(k[b>>2]|0)+-1;if(c){if(!m?(m=k[b>>2]|0,k[b>>2]=m+-1,(ea|0)!=0):0)k[b>>2]=m+-2}else Tp(a,0);h=+(q|0)*0.0;r=d;return +h}m=(ea|0)==0;o=m?_:$;p=m?aa:ba;if((aa|0)<0|(aa|0)==0&_>>>0<8){m=_;n=aa;xa=fa;while(1){ya=xa<<4;m=sr(m|0,n|0,1,0)|0;n=L;if(!((n|0)<0|(n|0)==0&m>>>0<8)){za=ya;break}else xa=ya}}else za=fa;do if((ca|32|0)==112){xa=Xq(a,c)|0;m=L;if((xa|0)==0&(m|0)==-2147483648)if(!c){Tp(a,0);h=0.0;r=d;return +h}else{if(!(k[j>>2]|0)){Aa=0;Ba=0;break}k[b>>2]=(k[b>>2]|0)+-1;Aa=0;Ba=0;break}else{Aa=xa;Ba=m}}else if(!(k[j>>2]|0)){Aa=0;Ba=0}else{k[b>>2]=(k[b>>2]|0)+-1;Aa=0;Ba=0}while(0);m=rr(o|0,p|0,2)|0;xa=sr(m|0,L|0,-32,-1)|0;m=sr(xa|0,L|0,Aa|0,Ba|0)|0;xa=L;if(!za){h=+(q|0)*0.0;r=d;return +h}if((xa|0)>0|(xa|0)==0&m>>>0>(0-g|0)>>>0){n=Np()|0;k[n>>2]=34;h=+(q|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;r=d;return +h}n=g+-106|0;ya=((n|0)<0)<<31>>31;if((xa|0)<(ya|0)|(xa|0)==(ya|0)&m>>>0<n>>>0){n=Np()|0;k[n>>2]=34;h=+(q|0)*2.2250738585072014e-308*2.2250738585072014e-308;r=d;return +h}if((za|0)>-1){n=m;ya=xa;Ca=za;sa=ga;while(1){Da=!(sa>=.5);Ea=Da&1|Ca<<1;Fa=Ea^1;Ga=sa+(Da?sa:sa+-1.0);Da=sr(n|0,ya|0,-1,-1)|0;Ha=L;if((Ea|0)>-1){n=Da;ya=Ha;Ca=Fa;sa=Ga}else{Ia=Da;Ja=Ha;Ka=Fa;La=Ga;break}}}else{Ia=m;Ja=xa;Ka=za;La=ga}Ca=pr(32,0,g|0,((g|0)<0)<<31>>31|0)|0;ya=sr(Ia|0,Ja|0,Ca|0,L|0)|0;Ca=L;if(0>(Ca|0)|0==(Ca|0)&f>>>0>ya>>>0)if((ya|0)<0){Ma=0;v=125}else{Na=ya;v=123}else{Na=f;v=123}if((v|0)==123)if((Na|0)<53){Ma=Na;v=125}else{Oa=Na;Pa=+(q|0);Qa=0.0}if((v|0)==125){sa=+(q|0);Oa=Ma;Pa=sa;Qa=+Xp(+aq(1.0,84-Ma|0),sa)}ya=(Ka&1|0)==0&(La!=0.0&(Oa|0)<32);sa=Pa*(ya?0.0:La)+(Qa+Pa*+(((ya&1)+Ka|0)>>>0))-Qa;if(!(sa!=0.0)){ya=Np()|0;k[ya>>2]=34}h=+bq(sa,Ia);r=d;return +h}else H=s;while(0);ya=g+f|0;Ca=0-ya|0;n=H;p=0;d:while(1){switch(n|0){case 46:{Ra=p;v=136;break d;break}case 48:break;default:{Sa=n;Ta=0;Ua=0;Va=p;Wa=0;break d}}o=k[b>>2]|0;if(o>>>0<(k[j>>2]|0)>>>0){k[b>>2]=o+1;n=l[o>>0]|0;p=1;continue}else{n=Up(a)|0;p=1;continue}}if((v|0)==136){p=k[b>>2]|0;if(p>>>0<(k[j>>2]|0)>>>0){k[b>>2]=p+1;Xa=l[p>>0]|0}else Xa=Up(a)|0;if((Xa|0)==48){p=0;n=0;while(1){o=sr(p|0,n|0,-1,-1)|0;Fa=L;Ha=k[b>>2]|0;if(Ha>>>0<(k[j>>2]|0)>>>0){k[b>>2]=Ha+1;Ya=l[Ha>>0]|0}else Ya=Up(a)|0;if((Ya|0)==48){p=o;n=Fa}else{Sa=Ya;Ta=o;Ua=Fa;Va=1;Wa=1;break}}}else{Sa=Xa;Ta=0;Ua=0;Va=Ra;Wa=1}}k[e>>2]=0;n=Sa+-48|0;p=(Sa|0)==46;e:do if(p|n>>>0<10){Fa=e+496|0;o=Sa;Ha=0;Da=0;Ea=p;Za=n;_a=Ta;$a=Ua;ab=Va;bb=Wa;cb=0;db=0;eb=0;f:while(1){do if(Ea)if(!bb){fb=Ha;gb=Da;hb=Ha;ib=Da;jb=ab;kb=1;lb=cb;mb=db;nb=eb}else{ob=_a;pb=$a;qb=Ha;rb=Da;sb=ab;tb=cb;ub=db;vb=eb;break f}else{wb=sr(Ha|0,Da|0,1,0)|0;xb=L;yb=(o|0)!=48;if((db|0)>=125){if(!yb){fb=_a;gb=$a;hb=wb;ib=xb;jb=ab;kb=bb;lb=cb;mb=db;nb=eb;break}k[Fa>>2]=k[Fa>>2]|1;fb=_a;gb=$a;hb=wb;ib=xb;jb=ab;kb=bb;lb=cb;mb=db;nb=eb;break}zb=e+(db<<2)|0;if(!cb)Ab=Za;else Ab=o+-48+((k[zb>>2]|0)*10|0)|0;k[zb>>2]=Ab;zb=cb+1|0;Bb=(zb|0)==9;fb=_a;gb=$a;hb=wb;ib=xb;jb=1;kb=bb;lb=Bb?0:zb;mb=(Bb&1)+db|0;nb=yb?wb:eb}while(0);wb=k[b>>2]|0;if(wb>>>0<(k[j>>2]|0)>>>0){k[b>>2]=wb+1;Cb=l[wb>>0]|0}else Cb=Up(a)|0;Za=Cb+-48|0;Ea=(Cb|0)==46;if(!(Ea|Za>>>0<10)){Db=Cb;Eb=hb;Fb=fb;Gb=ib;Hb=gb;Ib=jb;Jb=kb;Kb=lb;Lb=mb;Mb=nb;v=159;break e}else{o=Cb;Ha=hb;Da=ib;_a=fb;$a=gb;ab=jb;bb=kb;cb=lb;db=mb;eb=nb}}Nb=qb;Ob=rb;Pb=ob;Qb=pb;Rb=(sb|0)!=0;Sb=tb;Tb=ub;Ub=vb;v=167}else{Db=Sa;Eb=0;Fb=Ta;Gb=0;Hb=Ua;Ib=Va;Jb=Wa;Kb=0;Lb=0;Mb=0;v=159}while(0);do if((v|0)==159){n=(Jb|0)==0;p=n?Eb:Fb;eb=n?Gb:Hb;n=(Ib|0)!=0;if(!((Db|32|0)==101&n))if((Db|0)>-1){Nb=Eb;Ob=Gb;Pb=p;Qb=eb;Rb=n;Sb=Kb;Tb=Lb;Ub=Mb;v=167;break}else{Vb=Eb;Wb=Gb;Xb=n;Yb=p;Zb=eb;_b=Kb;$b=Lb;ac=Mb;v=169;break}n=Xq(a,c)|0;db=L;if((n|0)==0&(db|0)==-2147483648){if(!c){Tp(a,0);bc=0.0;break}if(!(k[j>>2]|0)){cc=0;dc=0}else{k[b>>2]=(k[b>>2]|0)+-1;cc=0;dc=0}}else{cc=n;dc=db}db=sr(cc|0,dc|0,p|0,eb|0)|0;ec=db;fc=Eb;gc=L;hc=Gb;ic=Kb;jc=Lb;kc=Mb;v=171}while(0);if((v|0)==167)if(k[j>>2]|0){k[b>>2]=(k[b>>2]|0)+-1;if(Rb){ec=Pb;fc=Nb;gc=Qb;hc=Ob;ic=Sb;jc=Tb;kc=Ub;v=171}else v=170}else{Vb=Nb;Wb=Ob;Xb=Rb;Yb=Pb;Zb=Qb;_b=Sb;$b=Tb;ac=Ub;v=169}if((v|0)==169)if(Xb){ec=Yb;fc=Vb;gc=Zb;hc=Wb;ic=_b;jc=$b;kc=ac;v=171}else v=170;do if((v|0)==170){db=Np()|0;k[db>>2]=22;Tp(a,0);bc=0.0}else if((v|0)==171){db=k[e>>2]|0;if(!db){bc=+(q|0)*0.0;break}if(((hc|0)<0|(hc|0)==0&fc>>>0<10)&((ec|0)==(fc|0)&(gc|0)==(hc|0))?f>>>0>30|(db>>>f|0)==0:0){bc=+(q|0)*+(db>>>0);break}db=(g|0)/-2|0;eb=((db|0)<0)<<31>>31;if((gc|0)>(eb|0)|(gc|0)==(eb|0)&ec>>>0>db>>>0){db=Np()|0;k[db>>2]=34;bc=+(q|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}db=g+-106|0;eb=((db|0)<0)<<31>>31;if((gc|0)<(eb|0)|(gc|0)==(eb|0)&ec>>>0<db>>>0){db=Np()|0;k[db>>2]=34;bc=+(q|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(!ic)lc=jc;else{if((ic|0)<9){db=e+(jc<<2)|0;eb=k[db>>2]|0;p=ic;while(1){n=eb*10|0;p=p+1|0;if((p|0)==9){mc=n;break}else eb=n}k[db>>2]=mc}lc=jc+1|0}if((kc|0)<9?(kc|0)<=(ec|0)&(ec|0)<18:0){if((ec|0)==9){bc=+(q|0)*+((k[e>>2]|0)>>>0);break}if((ec|0)<9){bc=+(q|0)*+((k[e>>2]|0)>>>0)/+(k[122852+(8-ec<<2)>>2]|0);break}eb=f+27+(ha(ec,-3)|0)|0;p=k[e>>2]|0;if((eb|0)>30|(p>>>eb|0)==0){bc=+(q|0)*+(p>>>0)*+(k[122852+(ec+-10<<2)>>2]|0);break}}p=(ec|0)%9|0;if(!p){nc=0;oc=0;pc=ec;qc=lc}else{eb=(ec|0)>-1?p:p+9|0;p=k[122852+(8-eb<<2)>>2]|0;if(lc){n=1e9/(p|0)|0;cb=0;bb=0;ab=0;$a=ec;while(1){_a=e+(ab<<2)|0;Da=k[_a>>2]|0;Ha=((Da>>>0)/(p>>>0)|0)+bb|0;k[_a>>2]=Ha;_a=ha((Da>>>0)%(p>>>0)|0,n)|0;Da=(ab|0)==(cb|0)&(Ha|0)==0;ab=ab+1|0;Ha=Da?$a+-9|0:$a;o=Da?ab&127:cb;if((ab|0)==(lc|0)){rc=_a;sc=o;tc=Ha;break}else{cb=o;bb=_a;$a=Ha}}if(!rc){uc=sc;vc=tc;wc=lc}else{k[e+(lc<<2)>>2]=rc;uc=sc;vc=tc;wc=lc+1|0}}else{uc=0;vc=ec;wc=0}nc=uc;oc=0;pc=9-eb+vc|0;qc=wc}g:while(1){$a=(pc|0)<18;bb=(pc|0)==18;cb=e+(nc<<2)|0;ab=oc;n=qc;while(1){if(!$a){if(!bb){xc=nc;yc=ab;zc=pc;Ac=n;break g}if((k[cb>>2]|0)>>>0>=9007199){xc=nc;yc=ab;zc=18;Ac=n;break g}}p=0;db=n+127|0;Ha=n;while(1){_a=db&127;o=e+(_a<<2)|0;Da=rr(k[o>>2]|0,0,29)|0;Za=sr(Da|0,L|0,p|0,0)|0;Da=L;if(Da>>>0>0|(Da|0)==0&Za>>>0>1e9){Ea=Er(Za|0,Da|0,1e9,0)|0;Fa=Fr(Za|0,Da|0,1e9,0)|0;Bc=Fa;Cc=Ea}else{Bc=Za;Cc=0}k[o>>2]=Bc;o=(_a|0)==(nc|0);Za=(_a|0)!=(Ha+127&127|0)|o?Ha:(Bc|0)==0?_a:Ha;if(o){Dc=Cc;Ec=Za;break}else{p=Cc;db=_a+-1|0;Ha=Za}}Ha=ab+-29|0;if(!Dc){ab=Ha;n=Ec}else{Fc=Ha;Gc=Dc;Hc=Ec;break}}n=nc+127&127;if((n|0)==(Hc|0)){ab=Hc+127&127;cb=e+((Hc+126&127)<<2)|0;k[cb>>2]=k[cb>>2]|k[e+(ab<<2)>>2];Ic=ab}else Ic=Hc;k[e+(n<<2)>>2]=Gc;nc=n;oc=Fc;pc=pc+9|0;qc=Ic}h:while(1){Jc=Ac+1&127;eb=e+((Ac+127&127)<<2)|0;n=xc;ab=yc;cb=zc;while(1){bb=(cb|0)==18;$a=(cb|0)>27?9:1;Ha=bb^1;Kc=n;Lc=ab;while(1){Mc=Kc&127;Nc=(Mc|0)==(Ac|0);do if(!Nc){db=k[e+(Mc<<2)>>2]|0;if(db>>>0<9007199){v=217;break}if(db>>>0>9007199)break;db=Kc+1&127;if((db|0)==(Ac|0)){v=217;break}p=k[e+(db<<2)>>2]|0;if(p>>>0<254740991){v=217;break}if(!(p>>>0>254740991|Ha)){Oc=Mc;Pc=Kc;Qc=Lc;Rc=Ac;break h}}else v=217;while(0);if((v|0)==217?(v=0,bb):0){v=218;break h}p=Lc+$a|0;if((Kc|0)==(Ac|0)){Kc=Ac;Lc=p}else{Sc=p;Tc=Kc;break}}bb=(1<<$a)+-1|0;Ha=1e9>>>$a;p=Tc;db=0;Za=Tc;_a=cb;while(1){o=e+(Za<<2)|0;Ea=k[o>>2]|0;Fa=(Ea>>>$a)+db|0;k[o>>2]=Fa;o=ha(Ea&bb,Ha)|0;Ea=(Za|0)==(p|0)&(Fa|0)==0;Za=Za+1&127;Fa=Ea?_a+-9|0:_a;Da=Ea?Za:p;if((Za|0)==(Ac|0)){Uc=o;Vc=Da;Wc=Fa;break}else{p=Da;db=o;_a=Fa}}if(!Uc){n=Vc;ab=Sc;cb=Wc;continue}if((Jc|0)!=(Vc|0)){Xc=Sc;Yc=Uc;Zc=Vc;_c=Wc;break}k[eb>>2]=k[eb>>2]|1;n=Vc;ab=Sc;cb=Wc}k[e+(Ac<<2)>>2]=Yc;xc=Zc;yc=Xc;zc=_c;Ac=Jc}if((v|0)==218)if(Nc){k[e+(Jc+-1<<2)>>2]=0;Oc=Ac;Pc=Kc;Qc=Lc;Rc=Jc}else{Oc=Mc;Pc=Kc;Qc=Lc;Rc=Ac}sa=+((k[e+(Oc<<2)>>2]|0)>>>0);cb=Pc+1&127;if((cb|0)==(Rc|0)){ab=Pc+2&127;k[e+(ab+-1<<2)>>2]=0;$c=ab}else $c=Rc;Ga=+(q|0);ad=Ga*(sa*1.0e9+ +((k[e+(cb<<2)>>2]|0)>>>0));cb=Qc+53|0;ab=cb-g|0;n=(ab|0)<(f|0);eb=n&1;_a=n?((ab|0)<0?0:ab):f;if((_a|0)<53){sa=+Xp(+aq(1.0,105-_a|0),ad);bd=+Zp(ad,+aq(1.0,53-_a|0));cd=sa;dd=bd;ed=sa+(ad-bd)}else{cd=0.0;dd=0.0;ed=ad}db=Pc+2&127;do if((db|0)==($c|0))fd=dd;else{p=k[e+(db<<2)>>2]|0;do if(p>>>0>=5e8){if(p>>>0>5e8){gd=Ga*.75+dd;break}if((Pc+3&127|0)==($c|0)){gd=Ga*.5+dd;break}else{gd=Ga*.75+dd;break}}else{if((p|0)==0?(Pc+3&127|0)==($c|0):0){gd=dd;break}gd=Ga*.25+dd}while(0);if((53-_a|0)<=1){fd=gd;break}if(+Zp(gd,1.0)!=0.0){fd=gd;break}fd=gd+1.0}while(0);Ga=ed+fd-cd;do if((cb&2147483647|0)>(-2-ya|0)){if(!(+W(+Ga)>=9007199254740992.0)){hd=eb;id=Qc;jd=Ga}else{hd=n&(_a|0)==(ab|0)?0:eb;id=Qc+1|0;jd=Ga*.5}if((id+50|0)<=(Ca|0)?!(fd!=0.0&(hd|0)!=0):0){kd=id;ld=jd;break}db=Np()|0;k[db>>2]=34;kd=id;ld=jd}else{kd=Qc;ld=Ga}while(0);bc=+bq(ld,kd)}while(0);h=bc;r=d;return +h}while(0);if(k[j>>2]|0)k[b>>2]=(k[b>>2]|0)+-1;u=Np()|0;k[u>>2]=22;Tp(a,0);h=0.0;r=d;return +h}}while(0);if((v|0)==23){v=(k[j>>2]|0)==0;if(!v)k[b>>2]=(k[b>>2]|0)+-1;if((c|0)!=0&t>>>0>3){c=t;do{if(!v)k[b>>2]=(k[b>>2]|0)+-1;c=c+-1|0}while(c>>>0>3)}}h=+(q|0)*B;r=d;return +h}function Rp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0;if(b>>>0>36){f=Np()|0;k[f>>2]=22;g=0;h=0;L=g;return h|0}f=a+4|0;j=a+100|0;do{m=k[f>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[f>>2]=m+1;n=l[m>>0]|0}else n=Up(a)|0}while((Mp(n)|0)!=0);o=n;a:do switch(o|0){case 43:case 45:{n=((o|0)==45)<<31>>31;m=k[f>>2]|0;if(m>>>0<(k[j>>2]|0)>>>0){k[f>>2]=m+1;p=l[m>>0]|0;q=n;break a}else{p=Up(a)|0;q=n;break a}break}default:{p=o;q=0}}while(0);o=(b|0)==0;do if((b&-17|0)==0&(p|0)==48){n=k[f>>2]|0;if(n>>>0<(k[j>>2]|0)>>>0){k[f>>2]=n+1;r=l[n>>0]|0}else r=Up(a)|0;if((r|32|0)!=120)if(o){s=8;t=r;u=46;break}else{v=b;w=r;u=32;break}n=k[f>>2]|0;if(n>>>0<(k[j>>2]|0)>>>0){k[f>>2]=n+1;x=l[n>>0]|0}else x=Up(a)|0;if((l[163148+(x+1)>>0]|0)>15){n=(k[j>>2]|0)==0;if(!n)k[f>>2]=(k[f>>2]|0)+-1;if(!c){Tp(a,0);g=0;h=0;L=g;return h|0}if(n){g=0;h=0;L=g;return h|0}k[f>>2]=(k[f>>2]|0)+-1;g=0;h=0;L=g;return h|0}else{s=16;t=x;u=46}}else{n=o?10:b;if((l[163148+(p+1)>>0]|0)>>>0<n>>>0){v=n;w=p;u=32}else{if(k[j>>2]|0)k[f>>2]=(k[f>>2]|0)+-1;Tp(a,0);n=Np()|0;k[n>>2]=22;g=0;h=0;L=g;return h|0}}while(0);if((u|0)==32)if((v|0)==10){p=w+-48|0;if(p>>>0<10){b=p;p=0;while(1){o=(p*10|0)+b|0;x=k[f>>2]|0;if(x>>>0<(k[j>>2]|0)>>>0){k[f>>2]=x+1;y=l[x>>0]|0}else y=Up(a)|0;b=y+-48|0;if(!(b>>>0<10&o>>>0<429496729)){z=o;A=y;break}else p=o}B=z;C=0;D=A}else{B=0;C=0;D=w}A=D+-48|0;if(A>>>0<10){z=B;p=C;y=A;A=D;while(1){D=Dr(z|0,p|0,10,0)|0;b=L;o=((y|0)<0)<<31>>31;x=~o;if(b>>>0>x>>>0|(b|0)==(x|0)&D>>>0>~y>>>0){E=y;F=z;G=p;H=A;break}x=sr(D|0,b|0,y|0,o|0)|0;o=L;b=k[f>>2]|0;if(b>>>0<(k[j>>2]|0)>>>0){k[f>>2]=b+1;I=l[b>>0]|0}else I=Up(a)|0;b=I+-48|0;if(b>>>0<10&(o>>>0<429496729|(o|0)==429496729&x>>>0<2576980378)){z=x;p=o;y=b;A=I}else{E=b;F=x;G=o;H=I;break}}if(E>>>0>9){J=G;K=F;M=q}else{N=10;O=F;P=G;Q=H;u=72}}else{J=C;K=B;M=q}}else{s=v;t=w;u=46}b:do if((u|0)==46){if(!(s+-1&s)){w=i[163405+((s*23|0)>>>5&7)>>0]|0;v=i[163148+(t+1)>>0]|0;B=v&255;if(B>>>0<s>>>0){C=B;B=0;while(1){H=C|B<<w;G=k[f>>2]|0;if(G>>>0<(k[j>>2]|0)>>>0){k[f>>2]=G+1;R=l[G>>0]|0}else R=Up(a)|0;G=i[163148+(R+1)>>0]|0;C=G&255;if(!(H>>>0<134217728&C>>>0<s>>>0)){S=H;T=G;U=R;break}else B=H}V=T;W=0;X=S;Y=U}else{V=v;W=0;X=0;Y=t}B=ur(-1,-1,w|0)|0;C=L;if((V&255)>>>0>=s>>>0|(W>>>0>C>>>0|(W|0)==(C|0)&X>>>0>B>>>0)){N=s;O=X;P=W;Q=Y;u=72;break}else{Z=X;_=W;$=V}while(1){H=rr(Z|0,_|0,w|0)|0;G=L;F=$&255|H;H=k[f>>2]|0;if(H>>>0<(k[j>>2]|0)>>>0){k[f>>2]=H+1;aa=l[H>>0]|0}else aa=Up(a)|0;$=i[163148+(aa+1)>>0]|0;if(($&255)>>>0>=s>>>0|(G>>>0>C>>>0|(G|0)==(C|0)&F>>>0>B>>>0)){N=s;O=F;P=G;Q=aa;u=72;break b}else{Z=F;_=G}}}B=i[163148+(t+1)>>0]|0;C=B&255;if(C>>>0<s>>>0){w=C;C=0;while(1){v=w+(ha(C,s)|0)|0;G=k[f>>2]|0;if(G>>>0<(k[j>>2]|0)>>>0){k[f>>2]=G+1;ba=l[G>>0]|0}else ba=Up(a)|0;G=i[163148+(ba+1)>>0]|0;w=G&255;if(!(v>>>0<119304647&w>>>0<s>>>0)){ca=v;da=G;ea=ba;break}else C=v}fa=da;ga=ca;ia=0;ja=ea}else{fa=B;ga=0;ia=0;ja=t}if((fa&255)>>>0<s>>>0){C=Er(-1,-1,s|0,0)|0;w=L;v=ia;G=ga;F=fa;H=ja;while(1){if(v>>>0>w>>>0|(v|0)==(w|0)&G>>>0>C>>>0){N=s;O=G;P=v;Q=H;u=72;break b}E=Dr(G|0,v|0,s|0,0)|0;I=L;A=F&255;if(I>>>0>4294967295|(I|0)==-1&E>>>0>~A>>>0){N=s;O=G;P=v;Q=H;u=72;break b}y=sr(A|0,0,E|0,I|0)|0;I=L;E=k[f>>2]|0;if(E>>>0<(k[j>>2]|0)>>>0){k[f>>2]=E+1;ka=l[E>>0]|0}else ka=Up(a)|0;F=i[163148+(ka+1)>>0]|0;if((F&255)>>>0>=s>>>0){N=s;O=y;P=I;Q=ka;u=72;break}else{v=I;G=y;H=ka}}}else{N=s;O=ga;P=ia;Q=ja;u=72}}while(0);if((u|0)==72)if((l[163148+(Q+1)>>0]|0)>>>0<N>>>0){do{Q=k[f>>2]|0;if(Q>>>0<(k[j>>2]|0)>>>0){k[f>>2]=Q+1;la=l[Q>>0]|0}else la=Up(a)|0}while((l[163148+(la+1)>>0]|0)>>>0<N>>>0);N=Np()|0;k[N>>2]=34;J=e;K=d;M=(d&1|0)==0&0==0?q:0}else{J=P;K=O;M=q}if(k[j>>2]|0)k[f>>2]=(k[f>>2]|0)+-1;if(!(J>>>0<e>>>0|(J|0)==(e|0)&K>>>0<d>>>0)){if(!((d&1|0)!=0|0!=0|(M|0)!=0)){f=Np()|0;k[f>>2]=34;f=sr(d|0,e|0,-1,-1)|0;g=L;h=f;L=g;return h|0}if(J>>>0>e>>>0|(J|0)==(e|0)&K>>>0>d>>>0){f=Np()|0;k[f>>2]=34;g=e;h=d;L=g;return h|0}}d=((M|0)<0)<<31>>31;e=pr(K^M|0,J^d|0,M|0,d|0)|0;g=L;h=e;L=g;return h|0}function Sp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;i[a>>0]=47;i[a+1>>0]=112;i[a+2>>0]=114;i[a+3>>0]=111;i[a+4>>0]=99;i[a+5>>0]=47;i[a+6>>0]=115;i[a+7>>0]=101;i[a+8>>0]=108;i[a+9>>0]=102;i[a+10>>0]=47;i[a+11>>0]=102;i[a+12>>0]=100;i[a+13>>0]=47;c=a+14|0;i[c>>0]=0;if(!b){i[c>>0]=48;i[a+15>>0]=0;return}else{d=14;e=b}while(1){c=d+1|0;if(e>>>0<10){f=c;break}else{d=c;e=(e>>>0)/10|0}}i[a+f>>0]=0;e=b;b=f;while(1){b=b+-1|0;i[a+b>>0]=(e>>>0)%10|0|48;if(e>>>0<10)break;else e=(e>>>0)/10|0}return}function Tp(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a+104>>2]=b;c=k[a+4>>2]|0;d=k[a+8>>2]|0;e=d-c|0;k[a+108>>2]=e;if((b|0)!=0&(e|0)>(b|0)){k[a+100>>2]=c+b;return}else{k[a+100>>2]=d;return}}function Up(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;b=a+104|0;c=k[b>>2]|0;if(!((c|0)!=0?(k[a+108>>2]|0)>=(c|0):0))d=3;if((d|0)==3?(c=uq(a)|0,(c|0)>=0):0){e=k[b>>2]|0;b=a+8|0;if(e){f=k[b>>2]|0;g=k[a+4>>2]|0;h=f;j=e-(k[a+108>>2]|0)+-1|0;if((h-g|0)>(j|0)){k[a+100>>2]=g+j;m=f}else{n=h;o=f;d=9}}else{f=k[b>>2]|0;n=f;o=f;d=9}if((d|0)==9){k[a+100>>2]=n;m=o}o=k[a+4>>2]|0;if(m){n=a+108|0;k[n>>2]=m+1-o+(k[n>>2]|0)}n=o+-1|0;if((l[n>>0]|0|0)==(c|0)){p=c;return p|0}i[n>>0]=c;p=c;return p|0}k[a+100>>2]=0;p=-1;return p|0}function Vp(a){a=a|0;var b=0,c=0;if(a>>>0<=4294963200){b=a;return b|0}c=Np()|0;k[c>>2]=0-a;b=-1;return b|0}function Wp(a,b){a=+a;b=+b;var c=0,d=0,e=0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;p[t>>3]=b;e=k[t+4>>2]&-2147483648|d&2147483647;k[t>>2]=c;k[t+4>>2]=e;return +(+p[t>>3])}function Xp(a,b){a=+a;b=+b;return +(+Wp(a,b))}function Yp(a,b){a=+a;b=+b;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0.0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0.0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;p[t>>3]=b;e=k[t>>2]|0;f=k[t+4>>2]|0;g=ur(c|0,d|0,52)|0;h=g&2047;g=ur(e|0,f|0,52)|0;i=g&2047;g=d&-2147483648;j=rr(e|0,f|0,1)|0;l=L;if(!((j|0)==0&(l|0)==0)?(m=f&2147483647,!(m>>>0>2146435072|(m|0)==2146435072&e>>>0>0|(h|0)==2047)):0){m=rr(c|0,d|0,1)|0;n=L;if(!(n>>>0>l>>>0|(n|0)==(l|0)&m>>>0>j>>>0))return +((m|0)==(j|0)&(n|0)==(l|0)?a*0.0:a);if(!h){l=rr(c|0,d|0,12)|0;n=L;if((n|0)>-1|(n|0)==-1&l>>>0>4294967295){j=l;l=n;n=0;while(1){m=n+-1|0;j=rr(j|0,l|0,1)|0;l=L;if(!((l|0)>-1|(l|0)==-1&j>>>0>4294967295)){o=m;break}else n=m}}else o=0;n=rr(c|0,d|0,1-o|0)|0;q=n;r=L;s=o}else{q=c;r=d&1048575|1048576;s=h}if(!i){h=rr(e|0,f|0,12)|0;d=L;if((d|0)>-1|(d|0)==-1&h>>>0>4294967295){c=h;h=d;d=0;while(1){o=d+-1|0;c=rr(c|0,h|0,1)|0;h=L;if(!((h|0)>-1|(h|0)==-1&c>>>0>4294967295)){u=o;break}else d=o}}else u=0;d=rr(e|0,f|0,1-u|0)|0;v=d;w=L;x=u}else{v=e;w=f&1048575|1048576;x=i}i=pr(q|0,r|0,v|0,w|0)|0;f=L;e=(f|0)>-1|(f|0)==-1&i>>>0>4294967295;a:do if((s|0)>(x|0)){u=e;d=i;c=f;h=q;o=r;n=s;while(1){if(u)if((h|0)==(v|0)&(o|0)==(w|0))break;else{y=d;z=c}else{y=h;z=o}j=rr(y|0,z|0,1)|0;l=L;m=n+-1|0;A=pr(j|0,l|0,v|0,w|0)|0;B=L;C=(B|0)>-1|(B|0)==-1&A>>>0>4294967295;if((m|0)>(x|0)){u=C;d=A;c=B;h=j;o=l;n=m}else{D=C;E=j;F=l;G=A;H=B;I=m;break a}}J=a*0.0;return +J}else{D=e;E=q;F=r;G=i;H=f;I=s}while(0);if(D)if((E|0)==(v|0)&(F|0)==(w|0)){J=a*0.0;return +J}else{K=H;M=G}else{K=F;M=E}if(K>>>0<1048576|(K|0)==1048576&M>>>0<0){E=M;F=K;G=I;while(1){H=rr(E|0,F|0,1)|0;w=L;v=G+-1|0;if(w>>>0<1048576|(w|0)==1048576&H>>>0<0){E=H;F=w;G=v}else{N=H;O=w;P=v;break}}}else{N=M;O=K;P=I}if((P|0)>0){I=sr(N|0,O|0,0,-1048576)|0;K=L;M=rr(P|0,0,52)|0;Q=K|L;R=I|M}else{M=ur(N|0,O|0,1-P|0)|0;Q=L;R=M}k[t>>2]=R;k[t+4>>2]=Q|g;J=+p[t>>3];return +J}S=a*b;J=S/S;return +J}function Zp(a,b){a=+a;b=+b;return +(+Yp(a,b))}function _p(a,b){a=+a;b=b|0;var c=0,d=0,e=0,f=0,g=0.0,h=0.0,i=0,j=0.0;p[t>>3]=a;c=k[t>>2]|0;d=k[t+4>>2]|0;e=ur(c|0,d|0,52)|0;f=e&2047;switch(f|0){case 0:{if(a!=0.0){g=+_p(a*18446744073709551616.0,b);h=g;i=(k[b>>2]|0)+-64|0}else{h=a;i=0}k[b>>2]=i;j=h;return +j}case 2047:{j=a;return +j}default:{k[b>>2]=f+-1022;k[t>>2]=c;k[t+4>>2]=d&-2146435073|1071644672;j=+p[t>>3];return +j}}return +(0.0)}function $p(a,b){a=+a;b=b|0;return +(+_p(a,b))}function aq(a,b){a=+a;b=b|0;var c=0.0,d=0,e=0,f=0,g=0.0;if((b|0)>1023){c=a*8988465674311579538646525.0e283;d=b+-1023|0;if((d|0)>1023){e=b+-2046|0;f=(e|0)>1023?1023:e;g=c*8988465674311579538646525.0e283}else{f=d;g=c}}else if((b|0)<-1022){c=a*2.2250738585072014e-308;d=b+1022|0;if((d|0)<-1022){e=b+2044|0;f=(e|0)<-1022?-1022:e;g=c*2.2250738585072014e-308}else{f=d;g=c}}else{f=b;g=a}b=rr(f+1023|0,0,52)|0;f=L;k[t>>2]=b;k[t+4>>2]=f;return +(g*+p[t>>3])}function bq(a,b){a=+a;b=b|0;return +(+aq(a,b))}function cq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=r;r=r+32|0;h=g;if(!((f&4095|0)==0&(((f|0)<0)<<31>>31&-4096|0)==0)){i=Np()|0;k[i>>2]=22;j=-1;r=g;return j|0}if(b>>>0>2147483646){i=Np()|0;k[i>>2]=12;j=-1;r=g;return j|0}i=(d&16|0)!=0;if(i)cr(-1);k[h>>2]=a;k[h+4>>2]=b;k[h+8>>2]=c;k[h+12>>2]=d;k[h+16>>2]=e;k[h+20>>2]=f>>12;f=Vp(Pa(192,h|0)|0)|0;if(!i){j=f;r=g;return j|0}dr();j=f;r=g;return j|0}function dq(a,b){a=a|0;b=b|0;var c=0,d=0;c=r;r=r+16|0;d=c;cr(-1);k[d>>2]=a;k[d+4>>2]=b;b=Vp(Ma(91,d|0)|0)|0;dr();r=c;return b|0}function eq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;e=r;r=r+16|0;f=e;g=(d|0)==0?122884:d;d=k[g>>2]|0;a:do if(!b){if(!d){h=0;r=e;return h|0}}else{j=(a|0)==0?f:a;if(!c){h=-2;r=e;return h|0}do if(!d){l=i[b>>0]|0;m=l&255;if(l<<24>>24<=-1){n=m+-194|0;if(n>>>0>50)break a;o=k[122636+(n<<2)>>2]|0;n=c+-1|0;if(!n){p=o;break}else{q=n;s=o;t=b+1|0;u=9;break}}else{k[j>>2]=m;h=l<<24>>24!=0&1;r=e;return h|0}}else{q=c;s=d;t=b;u=9}while(0);b:do if((u|0)==9){l=i[t>>0]|0;m=(l&255)>>>3;if((m+-16|m+(s>>26))>>>0>7)break a;else{v=q;w=l;x=s;y=t}while(1){y=y+1|0;x=(w&255)+-128|x<<6;v=v+-1|0;if((x|0)>=0){z=x;A=v;break}if(!v){p=x;break b}w=i[y>>0]|0;if((w&-64)<<24>>24!=-128)break a}k[g>>2]=0;k[j>>2]=z;h=c-A|0;r=e;return h|0}while(0);k[g>>2]=p;h=-2;r=e;return h|0}while(0);k[g>>2]=0;g=Np()|0;k[g>>2]=84;h=-1;r=e;return h|0}function fq(a){a=a|0;var b=0;if(!a)b=1;else b=(k[a>>2]|0)==0;return b&1|0}function gq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(!a){d=1;return d|0}if(b>>>0<128){i[a>>0]=b;d=1;return d|0}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;d=2;return d|0}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;d=3;return d|0}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;d=4;return d|0}else{b=Np()|0;k[b>>2]=84;d=-1;return d|0}return 0}function hq(a,b){a=a|0;b=b|0;var c=0;if(!a)c=0;else c=gq(a,b,0)|0;return c|0}function iq(){var a=0,b=0,c=0;a=72;b=Dr(k[a>>2]|0,k[a+4>>2]|0,1284865837,1481765933)|0;a=sr(b|0,L|0,1,0)|0;b=L;c=72;k[c>>2]=a;k[c+4>>2]=b;c=ur(a|0,b|0,33)|0;return c|0}function jq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=r;r=r+64|0;d=c+16|0;e=c+8|0;f=c;g=c+24|0;k[f>>2]=a;k[f+4>>2]=b;h=Qa(197,f|0)|0;if((h|0)==-9?(k[e>>2]=a,k[e+4>>2]=1,(Ua(221,e|0)|0)>=0):0){Sp(g,a);k[d>>2]=g;k[d+4>>2]=b;i=Vp(Ta(195,d|0)|0)|0;r=c;return i|0}i=Vp(h)|0;r=c;return i|0}function kq(a){a=a|0;return 0}function lq(a){a=a|0;return}function mq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;c=r;r=r+16|0;d=c;e=b&255;i[d>>0]=e;f=a+16|0;g=k[f>>2]|0;do if(!g)if(!(tq(a)|0)){h=k[f>>2]|0;break}else{j=-1;r=c;return j|0}else h=g;while(0);g=a+20|0;f=k[g>>2]|0;if(f>>>0<h>>>0?(h=b&255,(h|0)!=(i[a+75>>0]|0)):0){k[g>>2]=f+1;i[f>>0]=e;j=h;r=c;return j|0}if((nb[k[a+36>>2]&63](a,d,1)|0)!=1){j=-1;r=c;return j|0}j=l[d>>0]|0;r=c;return j|0}function nq(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=Vp(Ga(6,c|0)|0)|0;r=b;return a|0}function oq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+32|0;e=d;f=d+20|0;k[e>>2]=k[a+60>>2];k[e+4>>2]=0;k[e+8>>2]=b;k[e+12>>2]=f;k[e+16>>2]=c;if((Vp(ib(140,e|0)|0)|0)<0){k[f>>2]=-1;g=-1;r=d;return g|0}else{g=k[f>>2]|0;r=d;return g|0}return 0}function pq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=r;r=r+48|0;e=d+16|0;f=d;g=d+32|0;h=a+28|0;i=k[h>>2]|0;k[g>>2]=i;j=a+20|0;l=(k[j>>2]|0)-i|0;k[g+4>>2]=l;k[g+8>>2]=b;k[g+12>>2]=c;b=a+60|0;i=a+44|0;m=g;g=2;n=l+c|0;while(1){if(!(k[30648]|0)){k[e>>2]=k[b>>2];k[e+4>>2]=m;k[e+8>>2]=g;o=Vp(kb(146,e|0)|0)|0}else{Fa(71,a|0);k[f>>2]=k[b>>2];k[f+4>>2]=m;k[f+8>>2]=g;l=Vp(kb(146,f|0)|0)|0;Aa(0);o=l}if((n|0)==(o|0)){p=6;break}if((o|0)<0){q=m;s=g;break}l=n-o|0;t=k[m+4>>2]|0;if(o>>>0<=t>>>0)if((g|0)==2){k[h>>2]=(k[h>>2]|0)+o;u=t;v=o;w=m;x=2}else{u=t;v=o;w=m;x=g}else{y=k[i>>2]|0;k[h>>2]=y;k[j>>2]=y;u=k[m+12>>2]|0;v=o-t|0;w=m+8|0;x=g+-1|0}k[w>>2]=(k[w>>2]|0)+v;k[w+4>>2]=u-v;m=w;g=x;n=l}if((p|0)==6){p=k[i>>2]|0;k[a+16>>2]=p+(k[a+48>>2]|0);i=p;k[h>>2]=i;k[j>>2]=i;z=c;r=d;return z|0}k[a+16>>2]=0;k[h>>2]=0;k[j>>2]=0;k[a>>2]=k[a>>2]|32;if((s|0)==2){z=0;r=d;return z|0}z=c-(k[q+4>>2]|0)|0;r=d;return z|0}function qq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+80|0;e=d;k[a+36>>2]=2;if((k[a>>2]&64|0)==0?(k[e>>2]=k[a+60>>2],k[e+4>>2]=21505,k[e+8>>2]=d+12,(Ea(54,e|0)|0)!=0):0)i[a+75>>0]=-1;e=pq(a,b,c)|0;r=d;return e|0}function rq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=a+84|0;e=k[d>>2]|0;f=c+256|0;g=Kq(e,0,f)|0;h=(g|0)==0?f:g-e|0;g=h>>>0<c>>>0?h:c;wr(b|0,e|0,g|0)|0;k[a+4>>2]=e+g;b=e+h|0;k[a+8>>2]=b;k[d>>2]=b;return g|0}function sq(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;c=a+20|0;b=a+44|0;if((k[c>>2]|0)>>>0>(k[b>>2]|0)>>>0)nb[k[a+36>>2]&63](a,0,0)|0;k[a+16>>2]=0;k[a+28>>2]=0;k[c>>2]=0;c=k[a>>2]|0;if(!(c&20)){d=k[b>>2]|0;k[a+8>>2]=d;k[a+4>>2]=d;e=0;return e|0}if(!(c&4)){e=-1;return e|0}k[a>>2]=c|32;e=-1;return e|0}function tq(a){a=a|0;var b=0,c=0,d=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;c=k[a>>2]|0;if(!(c&8)){k[a+8>>2]=0;k[a+4>>2]=0;b=k[a+44>>2]|0;k[a+28>>2]=b;k[a+20>>2]=b;k[a+16>>2]=b+(k[a+48>>2]|0);d=0;return d|0}else{k[a>>2]=c|32;d=-1;return d|0}return 0}function uq(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;if((k[a+8>>2]|0)==0?(sq(a)|0)!=0:0)d=-1;else if((nb[k[a+32>>2]&63](a,c,1)|0)==1)d=l[c>>0]|0;else d=-1;r=b;return d|0}function vq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;if(a){if((k[a+76>>2]|0)<=-1){b=Zq(a)|0;return b|0}c=(kq(a)|0)==0;d=Zq(a)|0;if(c){b=d;return b|0}lq(a);b=d;return b|0}if(!(k[30711]|0))e=0;else e=vq(k[30711]|0)|0;cb(122620);d=k[30654]|0;if(!d)f=e;else{a=d;d=e;while(1){if((k[a+76>>2]|0)>-1)g=kq(a)|0;else g=0;if((k[a+20>>2]|0)>>>0>(k[a+28>>2]|0)>>>0)h=Zq(a)|0|d;else h=d;if(g)lq(a);a=k[a+56>>2]|0;if(!a){f=h;break}else d=h}}_a(122620);b=f;return b|0}function wq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Dq(a,b,e)|0;r=d;return c|0}function xq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((k[b+76>>2]|0)>=0?(kq(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(c=b+20|0,d=k[c>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[c>>2]=d+1;i[d>>0]=a;e=a&255}else e=mq(b,a)|0;lq(b);f=e;return f|0}if((i[b+75>>0]|0)!=(a|0)?(e=b+20|0,d=k[e>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=d+1;i[d>>0]=a;f=a&255;return f|0}f=mq(b,a)|0;return f|0}function yq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;d=c+16|0;e=k[d>>2]|0;do if(!e)if(!(tq(c)|0)){f=k[d>>2]|0;break}else{g=0;return g|0}else f=e;while(0);e=c+20|0;d=k[e>>2]|0;if((f-d|0)>>>0<b>>>0){g=nb[k[c+36>>2]&63](c,a,b)|0;return g|0}a:do if((i[c+75>>0]|0)>-1){f=b;while(1){if(!f){h=b;j=a;l=d;m=0;break a}n=f+-1|0;if((i[a+n>>0]|0)==10){o=f;break}else f=n}if((nb[k[c+36>>2]&63](c,a,o)|0)>>>0<o>>>0){g=o;return g|0}else{h=b-o|0;j=a+o|0;l=k[e>>2]|0;m=o;break}}else{h=b;j=a;l=d;m=0}while(0);wr(l|0,j|0,h|0)|0;k[e>>2]=(k[e>>2]|0)+h;g=m+h|0;return g|0}function zq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=ha(c,b)|0;if((k[d+76>>2]|0)>-1){f=(kq(d)|0)==0;g=yq(a,e,d)|0;if(f)h=g;else{lq(d);h=g}}else h=yq(a,e,d)|0;if((h|0)==(e|0)){i=c;return i|0}i=(h>>>0)/(b>>>0)|0;return i|0}function Aq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e;k[f>>2]=d;d=Fq(a,b,c,f)|0;r=e;return d|0}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Gq(a,b,e)|0;r=d;return c|0}function Cq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Hq(a,b,e)|0;r=d;return c|0}function Dq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+224|0;e=d+80|0;f=d+96|0;g=d;h=d+136|0;j=f;l=j+40|0;do{k[j>>2]=0;j=j+4|0}while((j|0)<(l|0));k[e>>2]=k[c>>2];if((_q(0,b,e,g,f)|0)<0){m=-1;r=d;return m|0}if((k[a+76>>2]|0)>-1)n=kq(a)|0;else n=0;c=k[a>>2]|0;j=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;c=a+48|0;if(!(k[c>>2]|0)){l=a+44|0;o=k[l>>2]|0;k[l>>2]=h;p=a+28|0;k[p>>2]=h;q=a+20|0;k[q>>2]=h;k[c>>2]=80;s=a+16|0;k[s>>2]=h+80;h=_q(a,b,e,g,f)|0;if(!o)t=h;else{nb[k[a+36>>2]&63](a,0,0)|0;u=(k[q>>2]|0)==0?-1:h;k[l>>2]=o;k[c>>2]=0;k[s>>2]=0;k[p>>2]=0;k[q>>2]=0;t=u}}else t=_q(a,b,e,g,f)|0;f=k[a>>2]|0;k[a>>2]=f|j;if(n)lq(a);m=(f&32|0)==0?t:-1;r=d;return m|0}function Eq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0.0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0;d=r;r=r+304|0;e=d+16|0;f=d+8|0;g=d+33|0;h=d;m=d+32|0;if((k[a+76>>2]|0)>-1)n=kq(a)|0;else n=0;q=i[b>>0]|0;a:do if(q<<24>>24){s=a+4|0;t=a+100|0;u=a+108|0;v=a+8|0;w=g+10|0;x=g+33|0;y=f+4|0;z=g+46|0;A=g+94|0;B=q;C=0;D=b;E=0;F=0;G=0;b:while(1){c:do if(!(Mp(B&255)|0)){H=(i[D>>0]|0)==37;d:do if(H){I=D+1|0;J=i[I>>0]|0;e:do switch(J<<24>>24){case 37:{break d;break}case 42:{K=0;M=D+2|0;break}default:{N=(J&255)+-48|0;if(N>>>0<10?(i[D+2>>0]|0)==36:0){k[e>>2]=k[c>>2];O=N;while(1){N=(k[e>>2]|0)+(4-1)&~(4-1);P=k[N>>2]|0;k[e>>2]=N+4;if(O>>>0>1)O=O+-1|0;else{Q=P;break}}K=Q;M=D+3|0;break e}O=(k[c>>2]|0)+(4-1)&~(4-1);P=k[O>>2]|0;k[c>>2]=O+4;K=P;M=I}}while(0);I=i[M>>0]|0;J=I&255;if((J+-48|0)>>>0<10){P=J;J=M;O=0;while(1){N=(O*10|0)+-48+P|0;R=J+1|0;S=i[R>>0]|0;P=S&255;if((P+-48|0)>>>0>=10){T=S;U=R;V=N;break}else{J=R;O=N}}}else{T=I;U=M;V=0}if(T<<24>>24==109){O=U+1|0;W=i[O>>0]|0;X=(K|0)!=0&1;Y=O;Z=0;_=0}else{W=T;X=0;Y=U;Z=F;_=G}O=Y+1|0;switch(W&255|0){case 104:{J=(i[O>>0]|0)==104;$=J?Y+2|0:O;aa=J?-2:-1;break}case 108:{J=(i[O>>0]|0)==108;$=J?Y+2|0:O;aa=J?3:1;break}case 106:{$=O;aa=3;break}case 116:case 122:{$=O;aa=1;break}case 76:{$=O;aa=2;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{$=Y;aa=0;break}default:{ba=X;ca=C;da=Z;ea=_;fa=152;break b}}O=l[$>>0]|0;J=(O&47|0)==3;P=J?O|32:O;O=J?1:aa;switch(P|0){case 99:{ga=E;ha=(V|0)<1?1:V;break}case 91:{ga=E;ha=V;break}case 110:{if(!K){ia=C;ja=$;ka=E;la=Z;ma=_;break c}switch(O|0){case -2:{i[K>>0]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case -1:{j[K>>1]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 0:{k[K>>2]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 1:{k[K>>2]=E;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}case 3:{J=K;k[J>>2]=E;k[J+4>>2]=((E|0)<0)<<31>>31;ia=C;ja=$;ka=E;la=Z;ma=_;break c;break}default:{ia=C;ja=$;ka=E;la=Z;ma=_;break c}}break}default:{Tp(a,0);do{J=k[s>>2]|0;if(J>>>0<(k[t>>2]|0)>>>0){k[s>>2]=J+1;na=l[J>>0]|0}else na=Up(a)|0}while((Mp(na)|0)!=0);I=k[s>>2]|0;if(!(k[t>>2]|0))oa=I;else{J=I+-1|0;k[s>>2]=J;oa=J}ga=(k[u>>2]|0)+E+oa-(k[v>>2]|0)|0;ha=V}}Tp(a,ha);J=k[s>>2]|0;I=k[t>>2]|0;if(J>>>0<I>>>0){k[s>>2]=J+1;pa=I}else{if((Up(a)|0)<0){ba=X;ca=C;da=Z;ea=_;fa=152;break b}pa=k[t>>2]|0}if(pa)k[s>>2]=(k[s>>2]|0)+-1;f:do switch(P|0){case 91:case 99:case 115:{I=(P|0)==99;g:do if((P&239|0)==99){qr(g|0,-1,257)|0;i[g>>0]=0;if((P|0)==115){i[x>>0]=0;i[w>>0]=0;i[w+1>>0]=0;i[w+2>>0]=0;i[w+3>>0]=0;i[w+4>>0]=0;qa=$}else qa=$}else{J=$+1|0;N=(i[J>>0]|0)==94;R=N&1;S=N?J:$;ra=N?$+2|0:J;qr(g|0,N&1|0,257)|0;i[g>>0]=0;switch(i[ra>>0]|0){case 45:{N=(R^1)&255;i[z>>0]=N;sa=N;ta=S+2|0;break}case 93:{N=(R^1)&255;i[A>>0]=N;sa=N;ta=S+2|0;break}default:{sa=(R^1)&255;ta=ra}}ra=ta;while(1){R=i[ra>>0]|0;h:do switch(R<<24>>24){case 0:{ba=X;ca=C;da=Z;ea=_;fa=152;break b;break}case 93:{qa=ra;break g;break}case 45:{S=ra+1|0;N=i[S>>0]|0;switch(N<<24>>24){case 93:case 0:{ua=45;va=ra;break h;break}default:{}}J=i[ra+-1>>0]|0;if((J&255)<(N&255)){wa=J&255;do{wa=wa+1|0;i[g+wa>>0]=sa;J=i[S>>0]|0}while((wa|0)<(J&255|0));ua=J;va=S}else{ua=N;va=S}break}default:{ua=R;va=ra}}while(0);i[g+((ua&255)+1)>>0]=sa;ra=va+1|0}}while(0);ra=I?ha+1|0:31;R=(O|0)==1;wa=(X|0)!=0;i:do if(R){if(wa){J=jr(ra<<2)|0;if(!J){ba=X;ca=C;da=0;ea=J;fa=152;break b}else xa=J}else xa=K;k[f>>2]=0;k[y>>2]=0;J=0;ya=ra;za=xa;j:while(1){Aa=(za|0)==0;Ba=J;while(1){k:while(1){Ca=k[s>>2]|0;if(Ca>>>0<(k[t>>2]|0)>>>0){k[s>>2]=Ca+1;Da=l[Ca>>0]|0}else Da=Up(a)|0;if(!(i[g+(Da+1)>>0]|0)){Ea=Ba;Fa=za;break j}i[m>>0]=Da;switch(eq(h,m,1,f)|0){case -1:{ba=X;ca=C;da=0;ea=za;fa=152;break b;break}case -2:break;default:break k}}if(Aa)Ga=Ba;else{k[za+(Ba<<2)>>2]=k[h>>2];Ga=Ba+1|0}if(wa&(Ga|0)==(ya|0))break;else Ba=Ga}Ba=ya<<1|1;Aa=lr(za,Ba<<2)|0;if(!Aa){ba=X;ca=C;da=0;ea=za;fa=152;break b}S=ya;ya=Ba;za=Aa;J=S}if(!(fq(f)|0)){ba=X;ca=C;da=0;ea=Fa;fa=152;break b}else{Ha=Ea;Ia=0;Ja=Fa}}else{if(wa){J=jr(ra)|0;if(!J){ba=X;ca=C;da=0;ea=0;fa=152;break b}else{Ka=0;La=ra;Ma=J}while(1){J=Ka;do{za=k[s>>2]|0;if(za>>>0<(k[t>>2]|0)>>>0){k[s>>2]=za+1;Na=l[za>>0]|0}else Na=Up(a)|0;if(!(i[g+(Na+1)>>0]|0)){Ha=J;Ia=Ma;Ja=0;break i}i[Ma+J>>0]=Na;J=J+1|0}while((J|0)!=(La|0));J=La<<1|1;za=lr(Ma,J)|0;if(!za){ba=X;ca=C;da=Ma;ea=0;fa=152;break b}else{ya=La;La=J;Ma=za;Ka=ya}}}if(!K){ya=pa;while(1){za=k[s>>2]|0;if(za>>>0<ya>>>0){k[s>>2]=za+1;Oa=l[za>>0]|0}else Oa=Up(a)|0;if(!(i[g+(Oa+1)>>0]|0)){Ha=0;Ia=0;Ja=0;break i}ya=k[t>>2]|0}}else{ya=pa;za=0;while(1){J=k[s>>2]|0;if(J>>>0<ya>>>0){k[s>>2]=J+1;Pa=l[J>>0]|0}else Pa=Up(a)|0;if(!(i[g+(Pa+1)>>0]|0)){Ha=za;Ia=K;Ja=0;break i}i[K+za>>0]=Pa;ya=k[t>>2]|0;za=za+1|0}}}while(0);ra=k[s>>2]|0;if(!(k[t>>2]|0))Qa=ra;else{za=ra+-1|0;k[s>>2]=za;Qa=za}za=Qa-(k[v>>2]|0)+(k[u>>2]|0)|0;if(!za){Ra=X;Sa=C;Ta=Ia;Ua=Ja;break b}if(!((za|0)==(ha|0)|I^1)){Ra=X;Sa=C;Ta=Ia;Ua=Ja;break b}do if(wa)if(R){k[K>>2]=Ja;break}else{k[K>>2]=Ia;break}while(0);if(I){Va=qa;Wa=Ia;Xa=Ja}else{if(Ja)k[Ja+(Ha<<2)>>2]=0;if(!Ia){Va=qa;Wa=0;Xa=Ja;break f}i[Ia+Ha>>0]=0;Va=qa;Wa=Ia;Xa=Ja}break}case 120:case 88:case 112:{Ya=16;fa=134;break}case 111:{Ya=8;fa=134;break}case 117:case 100:{Ya=10;fa=134;break}case 105:{Ya=0;fa=134;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{Za=+Qp(a,O,0);if((k[u>>2]|0)==((k[v>>2]|0)-(k[s>>2]|0)|0)){Ra=X;Sa=C;Ta=Z;Ua=_;break b}if(!K){Va=$;Wa=Z;Xa=_}else switch(O|0){case 0:{o[K>>2]=Za;Va=$;Wa=Z;Xa=_;break f;break}case 1:{p[K>>3]=Za;Va=$;Wa=Z;Xa=_;break f;break}case 2:{p[K>>3]=Za;Va=$;Wa=Z;Xa=_;break f;break}default:{Va=$;Wa=Z;Xa=_;break f}}break}default:{Va=$;Wa=Z;Xa=_}}while(0);l:do if((fa|0)==134){fa=0;R=Rp(a,Ya,0,-1,-1)|0;if((k[u>>2]|0)==((k[v>>2]|0)-(k[s>>2]|0)|0)){Ra=X;Sa=C;Ta=Z;Ua=_;break b}if((K|0)!=0&(P|0)==112){k[K>>2]=R;Va=$;Wa=Z;Xa=_;break}if(!K){Va=$;Wa=Z;Xa=_}else switch(O|0){case -2:{i[K>>0]=R;Va=$;Wa=Z;Xa=_;break l;break}case -1:{j[K>>1]=R;Va=$;Wa=Z;Xa=_;break l;break}case 0:{k[K>>2]=R;Va=$;Wa=Z;Xa=_;break l;break}case 1:{k[K>>2]=R;Va=$;Wa=Z;Xa=_;break l;break}case 3:{wa=K;k[wa>>2]=R;k[wa+4>>2]=L;Va=$;Wa=Z;Xa=_;break l;break}default:{Va=$;Wa=Z;Xa=_;break l}}}while(0);ia=((K|0)!=0&1)+C|0;ja=Va;ka=(k[u>>2]|0)+ga+(k[s>>2]|0)-(k[v>>2]|0)|0;la=Wa;ma=Xa;break c}while(0);O=D+(H&1)|0;Tp(a,0);P=k[s>>2]|0;if(P>>>0<(k[t>>2]|0)>>>0){k[s>>2]=P+1;_a=l[P>>0]|0}else _a=Up(a)|0;if((_a|0)!=(l[O>>0]|0)){$a=_a;ab=C;bb=F;cb=G;fa=21;break b}ia=C;ja=O;ka=E+1|0;la=F;ma=G}else{O=D;while(1){P=O+1|0;if(!(Mp(l[P>>0]|0)|0)){db=O;break}else O=P}Tp(a,0);do{O=k[s>>2]|0;if(O>>>0<(k[t>>2]|0)>>>0){k[s>>2]=O+1;eb=l[O>>0]|0}else eb=Up(a)|0}while((Mp(eb)|0)!=0);O=k[s>>2]|0;if(!(k[t>>2]|0))fb=O;else{H=O+-1|0;k[s>>2]=H;fb=H}ia=C;ja=db;ka=(k[u>>2]|0)+E+fb-(k[v>>2]|0)|0;la=F;ma=G}while(0);D=ja+1|0;B=i[D>>0]|0;if(!(B<<24>>24)){gb=ia;break a}else{C=ia;E=ka;F=la;G=ma}}if((fa|0)==21){if(k[t>>2]|0)k[s>>2]=(k[s>>2]|0)+-1;if((ab|0)!=0|($a|0)>-1){gb=ab;break}else{hb=0;ib=bb;jb=cb;fa=153}}else if((fa|0)==152)if(!ca){hb=ba;ib=da;jb=ea;fa=153}else{Ra=ba;Sa=ca;Ta=da;Ua=ea}if((fa|0)==153){Ra=hb;Sa=-1;Ta=ib;Ua=jb}if(!Ra)gb=Sa;else{kr(Ta);kr(Ua);gb=Sa}}else gb=0;while(0);if(!n){r=d;return gb|0}lq(a);r=d;return gb|0}function Fq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;e=r;r=r+128|0;f=e+112|0;g=e;h=g;j=122888;l=h+112|0;do{k[h>>2]=k[j>>2];h=h+4|0;j=j+4|0}while((h|0)<(l|0));if((b+-1|0)>>>0>2147483646)if(!b){m=f;n=1}else{f=Np()|0;k[f>>2]=75;o=-1;r=e;return o|0}else{m=a;n=b}b=-2-m|0;a=n>>>0>b>>>0?b:n;k[g+48>>2]=a;n=g+20|0;k[n>>2]=m;k[g+44>>2]=m;b=m+a|0;m=g+16|0;k[m>>2]=b;k[g+28>>2]=b;b=Dq(g,c,d)|0;if(!a){o=b;r=e;return o|0}a=k[n>>2]|0;i[a+(((a|0)==(k[m>>2]|0))<<31>>31)>>0]=0;o=b;r=e;return o|0}function Gq(a,b,c){a=a|0;b=b|0;c=c|0;return Fq(a,2147483647,b,c)|0}function Hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+112|0;e=d;f=e;g=f+112|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));k[e+32>>2]=32;k[e+44>>2]=a;k[e+76>>2]=-1;k[e+84>>2]=a;a=Eq(e,b,c)|0;r=d;return a|0}function Iq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if(!c){f=0;return f|0}else{g=b;h=c}while(1){c=h>>>1;b=g+(ha(c,d)|0)|0;i=yb[e&127](a,b)|0;if(!i){f=b;j=5;break}if((h|0)==1){f=0;j=5;break}k=(i|0)<0;h=k?c:h-c|0;if(!h){f=0;j=5;break}else g=k?g:b}if((j|0)==5)return f|0;return 0}function Jq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;e=r;r=r+208|0;f=e+8|0;g=e;h=ha(c,b)|0;b=g;k[b>>2]=1;k[b+4>>2]=0;if(!h){r=e;return}b=h-c|0;k[f+4>>2]=c;k[f>>2]=c;i=c;j=c;l=2;while(1){m=j+c+i|0;k[f+(l<<2)>>2]=m;if(m>>>0<h>>>0){n=i;i=m;l=l+1|0;j=n}else break}j=0-c|0;l=a+b|0;i=g+4|0;if((b|0)>0){b=l;h=1;n=a;m=1;while(1){do if((h&3|0)==3){ar(n,c,d,m,f);o=k[i>>2]|0;p=o<<30|(k[g>>2]|0)>>>2;k[g>>2]=p;k[i>>2]=o>>>2;q=p;s=m+2|0}else{p=m+-1|0;if((k[f+(p<<2)>>2]|0)>>>0<(b-n|0)>>>0)ar(n,c,d,m,f);else br(n,c,d,g,m,0,f);if((m|0)==1){o=k[g>>2]|0;k[i>>2]=o>>>31|k[i>>2]<<1;t=o<<1;k[g>>2]=t;q=t;s=0;break}if(p>>>0>31){t=k[g>>2]|0;k[i>>2]=t;k[g>>2]=0;u=m+-33|0;v=t;w=0}else{u=p;v=k[i>>2]|0;w=k[g>>2]|0}k[i>>2]=w>>>(32-u|0)|v<<u;p=w<<u;k[g>>2]=p;q=p;s=1}while(0);h=q|1;k[g>>2]=h;p=n+c|0;if(p>>>0>=l>>>0){x=p;y=s;break}else{n=p;m=s}}}else{x=a;y=1}br(x,c,d,g,y,0,f);a=g+4|0;s=k[g>>2]|0;if((y|0)==1&(s|0)==1&(k[a>>2]|0)==0){r=e;return}else{z=s;A=x;B=y}while(1){if((B|0)<2){y=z+-1|0;do if(y){if(!(y&1)){x=y;s=0;while(1){m=s+1|0;x=x>>>1;if(x&1){C=m;break}else s=m}if(C)D=C;else E=24}else E=24;if((E|0)==24){E=0;s=k[i>>2]|0;if(!s){F=64;E=30;break}if(!(s&1)){G=s;H=0}else{I=0;J=z;K=s;L=0;break}while(1){x=H+1|0;G=G>>>1;if(G&1){M=x;N=H;break}else H=x}if(!M){I=0;J=z;K=s;L=0;break}else D=N+33|0}if(D>>>0>31){F=D;E=30}else{I=D;J=z;K=k[i>>2]|0;L=D}}else{F=32;E=30}while(0);if((E|0)==30){E=0;y=k[i>>2]|0;k[g>>2]=y;k[i>>2]=0;I=F+-32|0;J=y;K=0;L=F}k[g>>2]=K<<32-I|J>>>I;k[i>>2]=K>>>I;O=A+j|0;P=L+B|0}else{y=z>>>30;x=y|k[i>>2]<<2;m=B+-2|0;k[g>>2]=(z<<1&2147483646|y<<31)^3;k[i>>2]=x>>>1;br(A+(0-((k[f+(m<<2)>>2]|0)+c))|0,c,d,g,B+-1|0,1,f);x=k[g>>2]|0;k[i>>2]=x>>>31|k[i>>2]<<1;k[g>>2]=x<<1|1;x=A+j|0;br(x,c,d,g,m,1,f);O=x;P=m}z=k[g>>2]|0;if((P|0)==1&(z|0)==1&(k[a>>2]|0)==0)break;else{A=O;B=P}}r=e;return}function Kq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=b&255;e=(c|0)!=0;a:do if(e&(a&3|0)!=0){f=b&255;g=c;h=a;while(1){if((i[h>>0]|0)==f<<24>>24){j=g;l=h;m=6;break a}n=h+1|0;o=g+-1|0;p=(o|0)!=0;if(p&(n&3|0)!=0){g=o;h=n}else{q=o;r=p;s=n;m=5;break}}}else{q=c;r=e;s=a;m=5}while(0);if((m|0)==5)if(r){j=q;l=s;m=6}else{t=0;u=s}b:do if((m|0)==6){s=b&255;if((i[l>>0]|0)==s<<24>>24){t=j;u=l}else{q=ha(d,16843009)|0;c:do if(j>>>0>3){r=j;a=l;while(1){e=k[a>>2]^q;if((e&-2139062144^-2139062144)&e+-16843009){v=r;w=a;break}e=a+4|0;c=r+-4|0;if(c>>>0>3){r=c;a=e}else{x=c;y=e;m=11;break c}}z=v;A=w}else{x=j;y=l;m=11}while(0);if((m|0)==11)if(!x){t=0;u=y;break}else{z=x;A=y}while(1){if((i[A>>0]|0)==s<<24>>24){t=z;u=A;break b}q=A+1|0;z=z+-1|0;if(!z){t=0;u=q;break}else A=q}}}while(0);return ((t|0)!=0?u:0)|0}function Lq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0;if(!c){d=0;return d|0}else{e=c;f=a;g=b}while(1){b=i[f>>0]|0;a=i[g>>0]|0;if(b<<24>>24!=a<<24>>24){h=b;j=a;break}e=e+-1|0;if(!e){d=0;k=5;break}else{f=f+1|0;g=g+1|0}}if((k|0)==5)return d|0;d=(h&255)-(j&255)|0;return d|0}function Mq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;c=b;if(!((c^a)&3)){a:do if(!(c&3)){d=b;e=a}else{f=a;g=b;while(1){h=i[g>>0]|0;i[f>>0]=h;if(!(h<<24>>24)){j=f;break}h=g+1|0;l=f+1|0;if(!(h&3)){d=h;e=l;break a}else{f=l;g=h}}return j|0}while(0);c=k[d>>2]|0;if(!((c&-2139062144^-2139062144)&c+-16843009)){g=c;c=e;f=d;while(1){h=f+4|0;l=c+4|0;k[c>>2]=g;g=k[h>>2]|0;if((g&-2139062144^-2139062144)&g+-16843009){m=l;n=h;break}else{c=l;f=h}}}else{m=e;n=d}o=n;p=m}else{o=b;p=a}a=i[o>>0]|0;i[p>>0]=a;if(!(a<<24>>24)){j=p;return j|0}else{q=p;r=o}while(1){r=r+1|0;o=q+1|0;p=i[r>>0]|0;i[o>>0]=p;if(!(p<<24>>24)){j=o;break}else q=o}return j|0}function Nq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;d=b;if(!((d^a)&3)){e=(c|0)!=0;a:do if(e&(d&3|0)!=0){f=c;g=b;h=a;while(1){j=i[g>>0]|0;i[h>>0]=j;if(!(j<<24>>24)){l=f;m=g;n=h;break a}j=f+-1|0;o=g+1|0;p=h+1|0;q=(j|0)!=0;if(q&(o&3|0)!=0){f=j;g=o;h=p}else{r=j;s=o;t=p;u=q;v=5;break}}}else{r=c;s=b;t=a;u=e;v=5}while(0);if((v|0)==5)if(u){l=r;m=s;n=t}else{w=t;x=0;qr(w|0,0,x|0)|0;return w|0}if(!(i[m>>0]|0)){w=n;x=l;qr(w|0,0,x|0)|0;return w|0}b:do if(l>>>0>3){t=l;s=n;r=m;while(1){u=k[r>>2]|0;if((u&-2139062144^-2139062144)&u+-16843009){y=t;z=s;A=r;break b}k[s>>2]=u;u=t+-4|0;e=r+4|0;d=s+4|0;if(u>>>0>3){t=u;s=d;r=e}else{y=u;z=d;A=e;break}}}else{y=l;z=n;A=m}while(0);B=A;C=z;D=y}else{B=b;C=a;D=c}if(!D){w=C;x=0;qr(w|0,0,x|0)|0;return w|0}else{E=B;F=C;G=D}while(1){D=i[E>>0]|0;i[F>>0]=D;if(!(D<<24>>24)){w=F;x=G;v=14;break}G=G+-1|0;D=F+1|0;if(!G){w=D;x=0;v=14;break}else{E=E+1|0;F=D}}if((v|0)==14){qr(w|0,0,x|0)|0;return w|0}return 0}function Oq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=i[a>>0]|0;d=i[b>>0]|0;if(c<<24>>24==0?1:c<<24>>24!=d<<24>>24){e=c;f=d}else{d=a;a=b;do{d=d+1|0;a=a+1|0;b=i[d>>0]|0;c=i[a>>0]|0}while(!(b<<24>>24==0?1:b<<24>>24!=c<<24>>24));e=b;f=c}return (e&255)-(f&255)|0}function Pq(a,b){a=a|0;b=b|0;Mq(a,b)|0;return a|0}function Qq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;b=a;a:do if(!(b&3))c=a;else{d=a;e=b;while(1){if(!(i[d>>0]|0)){f=e;break}g=d+1|0;e=g;if(!(e&3)){c=g;break a}else d=g}h=f-b|0;return h|0}while(0);a=c;while(1){c=k[a>>2]|0;if(!((c&-2139062144^-2139062144)&c+-16843009))a=a+4|0;else{j=c;l=a;break}}if(!((j&255)<<24>>24))m=l;else{j=l;while(1){l=j+1|0;if(!(i[l>>0]|0)){m=l;break}else j=l}}f=m;h=f-b|0;return h|0}function Rq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,m=0,n=0;if(!c){d=0;return d|0}e=i[a>>0]|0;a:do if(!(e<<24>>24)){f=0;g=b}else{h=c;j=e;k=a;m=b;while(1){h=h+-1|0;n=i[m>>0]|0;if(!(j<<24>>24==n<<24>>24&((h|0)!=0&n<<24>>24!=0))){f=j;g=m;break a}k=k+1|0;n=m+1|0;j=i[k>>0]|0;if(!(j<<24>>24)){f=0;g=n;break}else m=n}}while(0);d=(f&255)-(l[g>>0]|0)|0;return d|0}function Sq(a,b,c){a=a|0;b=b|0;c=c|0;Nq(a,b,c)|0;return a|0}function Tq(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=a;a=Ga(6,c|0)|0;c=Vp((a|0)==-4?-115:a)|0;r=b;return c|0}function Uq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=r;r=r+32|0;e=d;f=d+20|0;k[e>>2]=a;k[e+4>>2]=0;k[e+8>>2]=b;k[e+12>>2]=f;k[e+16>>2]=c;c=(Vp(ib(140,e|0)|0)|0)!=0;r=d;return (c?-1:k[f>>2]|0)|0}function Vq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=a;k[e+4>>2]=b;k[e+8>>2]=c;c=Vp(ab(3,e|0)|0)|0;r=d;return c|0}function Wq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=a;k[e+4>>2]=b;k[e+8>>2]=c;c=Vp(fb(4,e|0)|0)|0;r=d;return c|0}function Xq(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;c=a+4|0;d=k[c>>2]|0;e=a+100|0;if(d>>>0<(k[e>>2]|0)>>>0){k[c>>2]=d+1;f=l[d>>0]|0}else f=Up(a)|0;switch(f|0){case 43:case 45:{d=(f|0)==45&1;g=k[c>>2]|0;if(g>>>0<(k[e>>2]|0)>>>0){k[c>>2]=g+1;h=l[g>>0]|0}else h=Up(a)|0;if((b|0)!=0&(h+-48|0)>>>0>9?(k[e>>2]|0)!=0:0){k[c>>2]=(k[c>>2]|0)+-1;i=h;j=d}else{i=h;j=d}break}default:{i=f;j=0}}if((i+-48|0)>>>0>9){if(!(k[e>>2]|0)){m=-2147483648;n=0;L=m;return n|0}k[c>>2]=(k[c>>2]|0)+-1;m=-2147483648;n=0;L=m;return n|0}else{o=i;p=0}while(1){i=o+-48+(p*10|0)|0;f=k[c>>2]|0;if(f>>>0<(k[e>>2]|0)>>>0){k[c>>2]=f+1;q=l[f>>0]|0}else q=Up(a)|0;if((q+-48|0)>>>0<10&(i|0)<214748364){o=q;p=i}else{r=i;s=q;break}}q=((r|0)<0)<<31>>31;if((s+-48|0)>>>0<10){p=r;o=q;i=s;while(1){f=Dr(p|0,o|0,10,0)|0;d=L;h=sr(i|0,((i|0)<0)<<31>>31|0,-48,-1)|0;b=sr(h|0,L|0,f|0,d|0)|0;d=L;f=k[c>>2]|0;if(f>>>0<(k[e>>2]|0)>>>0){k[c>>2]=f+1;t=l[f>>0]|0}else t=Up(a)|0;if((t+-48|0)>>>0<10&((d|0)<21474836|(d|0)==21474836&b>>>0<2061584302)){p=b;o=d;i=t}else{u=b;v=d;w=t;break}}}else{u=r;v=q;w=s}if((w+-48|0)>>>0<10)do{w=k[c>>2]|0;if(w>>>0<(k[e>>2]|0)>>>0){k[c>>2]=w+1;x=l[w>>0]|0}else x=Up(a)|0}while((x+-48|0)>>>0<10);if(k[e>>2]|0)k[c>>2]=(k[c>>2]|0)+-1;c=(j|0)!=0;j=pr(0,0,u|0,v|0)|0;m=c?L:v;n=c?j:u;L=m;return n|0}function Yq(a){a=a|0;if(k[a+68>>2]|0)return;lq(a);return}function Zq(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;c=a+28|0;if((k[b>>2]|0)>>>0>(k[c>>2]|0)>>>0?(nb[k[a+36>>2]&63](a,0,0)|0,(k[b>>2]|0)==0):0){d=-1;return d|0}e=a+4|0;f=k[e>>2]|0;g=a+8|0;h=k[g>>2]|0;if(f>>>0<h>>>0)nb[k[a+40>>2]&63](a,f-h|0,1)|0;k[a+16>>2]=0;k[c>>2]=0;k[b>>2]=0;k[g>>2]=0;k[e>>2]=0;d=0;return d|0}function _q(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0,o=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0.0,bb=0.0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0.0,ib=0.0,jb=0.0,kb=0.0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0.0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0.0,Wb=0.0,Xb=0.0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0;f=r;r=r+624|0;g=f+24|0;h=f+16|0;m=f+588|0;n=f+576|0;o=f;q=f+536|0;s=f+8|0;u=f+528|0;v=(a|0)!=0;w=q+40|0;x=w;y=q+39|0;q=s+4|0;z=n+12|0;A=n+11|0;n=m;B=z;C=B-n|0;D=-2-n|0;E=B+2|0;F=g+288|0;G=m+9|0;H=G;I=m+8|0;J=0;K=b;b=0;M=0;a:while(1){do if((J|0)>-1)if((b|0)>(2147483647-J|0)){N=Np()|0;k[N>>2]=75;O=-1;break}else{O=b+J|0;break}else O=J;while(0);N=i[K>>0]|0;if(!(N<<24>>24)){P=O;Q=M;R=245;break}else{S=N;T=K}b:while(1){switch(S<<24>>24){case 37:{U=T;V=T;R=9;break b;break}case 0:{W=T;X=T;break b;break}default:{}}N=T+1|0;S=i[N>>0]|0;T=N}c:do if((R|0)==9)while(1){R=0;if((i[U+1>>0]|0)!=37){W=U;X=V;break c}N=V+1|0;Y=U+2|0;if((i[Y>>0]|0)==37){U=Y;V=N;R=9}else{W=Y;X=N;break}}while(0);N=X-K|0;if(v?(k[a>>2]&32|0)==0:0)yq(K,N,a)|0;if((X|0)!=(K|0)){J=O;K=W;b=N;continue}Y=W+1|0;Z=i[Y>>0]|0;_=(Z<<24>>24)+-48|0;if(_>>>0<10){$=(i[W+2>>0]|0)==36;aa=$?W+3|0:Y;ba=i[aa>>0]|0;ca=$?_:-1;da=$?1:M;ea=aa}else{ba=Z;ca=-1;da=M;ea=Y}Y=ba<<24>>24;d:do if((Y&-32|0)==32){Z=Y;aa=ba;$=0;_=ea;while(1){if(!(1<<Z+-32&75913)){fa=aa;ga=$;ia=_;break d}ja=1<<(aa<<24>>24)+-32|$;ka=_+1|0;la=i[ka>>0]|0;Z=la<<24>>24;if((Z&-32|0)!=32){fa=la;ga=ja;ia=ka;break}else{aa=la;$=ja;_=ka}}}else{fa=ba;ga=0;ia=ea}while(0);do if(fa<<24>>24==42){Y=ia+1|0;_=(i[Y>>0]|0)+-48|0;if(_>>>0<10?(i[ia+2>>0]|0)==36:0){k[e+(_<<2)>>2]=10;ma=1;na=ia+3|0;oa=k[d+((i[Y>>0]|0)+-48<<3)>>2]|0}else{if(da){pa=-1;R=252;break a}if(!v){qa=ga;ra=Y;sa=0;ta=0;break}_=(k[c>>2]|0)+(4-1)&~(4-1);$=k[_>>2]|0;k[c>>2]=_+4;ma=0;na=Y;oa=$}if((oa|0)<0){qa=ga|8192;ra=na;sa=ma;ta=0-oa|0}else{qa=ga;ra=na;sa=ma;ta=oa}}else{$=(fa<<24>>24)+-48|0;if($>>>0<10){Y=ia;_=0;aa=$;while(1){$=(_*10|0)+aa|0;Z=Y+1|0;aa=(i[Z>>0]|0)+-48|0;if(aa>>>0>=10){ua=$;va=Z;break}else{Y=Z;_=$}}if((ua|0)<0){pa=-1;R=252;break a}else{qa=ga;ra=va;sa=da;ta=ua}}else{qa=ga;ra=ia;sa=da;ta=0}}while(0);e:do if((i[ra>>0]|0)==46){_=ra+1|0;Y=i[_>>0]|0;if(Y<<24>>24!=42){aa=(Y<<24>>24)+-48|0;if(aa>>>0<10){wa=_;xa=0;ya=aa}else{za=_;Aa=0;break}while(1){_=(xa*10|0)+ya|0;aa=wa+1|0;ya=(i[aa>>0]|0)+-48|0;if(ya>>>0>=10){za=aa;Aa=_;break e}else{wa=aa;xa=_}}}_=ra+2|0;aa=(i[_>>0]|0)+-48|0;if(aa>>>0<10?(i[ra+3>>0]|0)==36:0){k[e+(aa<<2)>>2]=10;za=ra+4|0;Aa=k[d+((i[_>>0]|0)+-48<<3)>>2]|0;break}if(sa){pa=-1;R=252;break a}if(v){aa=(k[c>>2]|0)+(4-1)&~(4-1);Y=k[aa>>2]|0;k[c>>2]=aa+4;za=_;Aa=Y}else{za=_;Aa=0}}else{za=ra;Aa=-1}while(0);_=za;Y=0;while(1){aa=(i[_>>0]|0)+-65|0;if(aa>>>0>57){pa=-1;R=252;break a}$=_+1|0;Z=i[164454+(Y*58|0)+aa>>0]|0;aa=Z&255;if((aa+-1|0)>>>0<8){_=$;Y=aa}else{Ba=$;Ca=Z;Da=aa;Ea=_;Fa=Y;break}}if(!(Ca<<24>>24)){pa=-1;R=252;break}Y=(ca|0)>-1;do if(Ca<<24>>24==19)if(Y){pa=-1;R=252;break a}else R=52;else{if(Y){k[e+(ca<<2)>>2]=Da;_=d+(ca<<3)|0;aa=k[_+4>>2]|0;Z=o;k[Z>>2]=k[_>>2];k[Z+4>>2]=aa;R=52;break}if(!v){pa=0;R=252;break a}gr(o,Da,c)}while(0);if((R|0)==52?(R=0,!v):0){J=O;K=Ba;b=N;M=sa;continue}Y=i[Ea>>0]|0;aa=(Fa|0)!=0&(Y&15|0)==3?Y&-33:Y;Y=qa&-65537;Z=(qa&8192|0)==0?qa:Y;f:do switch(aa|0){case 110:{switch(Fa|0){case 0:{k[k[o>>2]>>2]=O;J=O;K=Ba;b=N;M=sa;continue a;break}case 1:{k[k[o>>2]>>2]=O;J=O;K=Ba;b=N;M=sa;continue a;break}case 2:{_=k[o>>2]|0;k[_>>2]=O;k[_+4>>2]=((O|0)<0)<<31>>31;J=O;K=Ba;b=N;M=sa;continue a;break}case 3:{j[k[o>>2]>>1]=O;J=O;K=Ba;b=N;M=sa;continue a;break}case 4:{i[k[o>>2]>>0]=O;J=O;K=Ba;b=N;M=sa;continue a;break}case 6:{k[k[o>>2]>>2]=O;J=O;K=Ba;b=N;M=sa;continue a;break}case 7:{_=k[o>>2]|0;k[_>>2]=O;k[_+4>>2]=((O|0)<0)<<31>>31;J=O;K=Ba;b=N;M=sa;continue a;break}default:{J=O;K=Ba;b=N;M=sa;continue a}}break}case 112:{Ga=Z|8;Ha=Aa>>>0>8?Aa:8;Ia=120;R=64;break}case 88:case 120:{Ga=Z;Ha=Aa;Ia=aa;R=64;break}case 111:{_=o;$=k[_>>2]|0;ka=k[_+4>>2]|0;if(($|0)==0&(ka|0)==0)Ja=w;else{_=w;ja=$;$=ka;while(1){ka=_+-1|0;i[ka>>0]=ja&7|48;ja=ur(ja|0,$|0,3)|0;$=L;if((ja|0)==0&($|0)==0){Ja=ka;break}else _=ka}}if(!(Z&8)){Ka=Ja;La=Z;Ma=Aa;Na=0;Oa=164934;R=77}else{_=x-Ja+1|0;Ka=Ja;La=Z;Ma=(Aa|0)<(_|0)?_:Aa;Na=0;Oa=164934;R=77}break}case 105:case 100:{_=o;$=k[_>>2]|0;ja=k[_+4>>2]|0;if((ja|0)<0){_=pr(0,0,$|0,ja|0)|0;ka=L;la=o;k[la>>2]=_;k[la+4>>2]=ka;Pa=_;Qa=ka;Ra=1;Sa=164934;R=76;break f}if(!(Z&2048)){ka=Z&1;Pa=$;Qa=ja;Ra=ka;Sa=(ka|0)==0?164934:164936;R=76}else{Pa=$;Qa=ja;Ra=1;Sa=164935;R=76}break}case 117:{ja=o;Pa=k[ja>>2]|0;Qa=k[ja+4>>2]|0;Ra=0;Sa=164934;R=76;break}case 99:{i[y>>0]=k[o>>2];Ta=y;Ua=Y;Va=1;Wa=0;Xa=164934;Ya=w;break}case 109:{ja=Np()|0;Za=Op(k[ja>>2]|0)|0;R=82;break}case 115:{ja=k[o>>2]|0;Za=(ja|0)!=0?ja:164944;R=82;break}case 67:{k[s>>2]=k[o>>2];k[q>>2]=0;k[o>>2]=s;_a=-1;R=86;break}case 83:{if(!Aa){ir(a,32,ta,0,Z);$a=0;R=98}else{_a=Aa;R=86}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{ab=+p[o>>3];k[h>>2]=0;p[t>>3]=ab;if((k[t+4>>2]|0)>=0)if(!(Z&2048)){ja=Z&1;bb=ab;cb=ja;db=(ja|0)==0?164952:164957}else{bb=ab;cb=1;db=164954}else{bb=-ab;cb=1;db=164951}p[t>>3]=bb;ja=k[t+4>>2]&2146435072;do if(ja>>>0<2146435072|(ja|0)==2146435072&0<0){ab=+$p(bb,h)*2.0;$=ab!=0.0;if($)k[h>>2]=(k[h>>2]|0)+-1;ka=aa|32;if((ka|0)==97){_=aa&32;la=(_|0)==0?db:db+9|0;eb=cb|2;fb=12-Aa|0;do if(!(Aa>>>0>11|(fb|0)==0)){gb=fb;hb=8.0;while(1){gb=gb+-1|0;ib=hb*16.0;if(!gb){jb=ib;break}else hb=ib}if((i[la>>0]|0)==45){kb=-(jb+(-ab-jb));break}else{kb=ab+jb-jb;break}}else kb=ab;while(0);fb=k[h>>2]|0;gb=(fb|0)<0?0-fb|0:fb;lb=hr(gb,((gb|0)<0)<<31>>31,z)|0;if((lb|0)==(z|0)){i[A>>0]=48;mb=A}else mb=lb;i[mb+-1>>0]=(fb>>31&2)+43;fb=mb+-2|0;i[fb>>0]=aa+15;lb=(Aa|0)<1;gb=(Z&8|0)==0;hb=kb;nb=m;while(1){ob=~~hb;pb=nb+1|0;i[nb>>0]=l[164918+ob>>0]|_;hb=(hb-+(ob|0))*16.0;do if((pb-n|0)==1){if(gb&(lb&hb==0.0)){qb=pb;break}i[pb>>0]=46;qb=nb+2|0}else qb=pb;while(0);if(!(hb!=0.0)){rb=qb;break}else nb=qb}nb=rb;lb=(Aa|0)!=0&(D+nb|0)<(Aa|0)?E+Aa-fb|0:C-fb+nb|0;gb=lb+eb|0;ir(a,32,ta,gb,Z);if(!(k[a>>2]&32))yq(la,eb,a)|0;ir(a,48,ta,gb,Z^65536);_=nb-n|0;if(!(k[a>>2]&32))yq(m,_,a)|0;nb=B-fb|0;ir(a,48,lb-(_+nb)|0,0,0);if(!(k[a>>2]&32))yq(fb,nb,a)|0;ir(a,32,ta,gb,Z^8192);sb=(gb|0)<(ta|0)?ta:gb;break}gb=(Aa|0)<0?6:Aa;if($){nb=(k[h>>2]|0)+-28|0;k[h>>2]=nb;tb=ab*268435456.0;ub=nb}else{tb=ab;ub=k[h>>2]|0}nb=(ub|0)<0?g:F;_=nb;hb=tb;lb=nb;while(1){pb=~~hb>>>0;k[lb>>2]=pb;ob=lb+4|0;hb=(hb-+(pb>>>0))*1.0e9;if(!(hb!=0.0)){vb=ob;break}else lb=ob}lb=k[h>>2]|0;if((lb|0)>0){$=lb;fb=nb;eb=vb;while(1){la=($|0)>29?29:$;ob=eb+-4|0;do if(ob>>>0<fb>>>0)wb=fb;else{pb=0;xb=ob;while(1){yb=rr(k[xb>>2]|0,0,la|0)|0;zb=sr(yb|0,L|0,pb|0,0)|0;yb=L;Ab=Fr(zb|0,yb|0,1e9,0)|0;k[xb>>2]=Ab;Ab=Er(zb|0,yb|0,1e9,0)|0;xb=xb+-4|0;if(xb>>>0<fb>>>0){Bb=Ab;break}else pb=Ab}if(!Bb){wb=fb;break}pb=fb+-4|0;k[pb>>2]=Bb;wb=pb}while(0);ob=eb;while(1){if(ob>>>0<=wb>>>0){Cb=ob;break}pb=ob+-4|0;if(!(k[pb>>2]|0))ob=pb;else{Cb=ob;break}}ob=(k[h>>2]|0)-la|0;k[h>>2]=ob;if((ob|0)>0){$=ob;fb=wb;eb=Cb}else{Db=ob;Eb=wb;Fb=Cb;break}}}else{Db=lb;Eb=nb;Fb=vb}if((Db|0)<0){eb=((gb+25|0)/9|0)+1|0;fb=(ka|0)==102;$=Db;ob=Eb;pb=Fb;while(1){xb=0-$|0;Ab=(xb|0)>9?9:xb;do if(ob>>>0<pb>>>0){xb=(1<<Ab)+-1|0;yb=1e9>>>Ab;zb=0;Gb=ob;while(1){Hb=k[Gb>>2]|0;k[Gb>>2]=(Hb>>>Ab)+zb;Ib=ha(Hb&xb,yb)|0;Gb=Gb+4|0;if(Gb>>>0>=pb>>>0){Jb=Ib;break}else zb=Ib}zb=(k[ob>>2]|0)==0?ob+4|0:ob;if(!Jb){Kb=zb;Lb=pb;break}k[pb>>2]=Jb;Kb=zb;Lb=pb+4|0}else{Kb=(k[ob>>2]|0)==0?ob+4|0:ob;Lb=pb}while(0);la=fb?nb:Kb;zb=(Lb-la>>2|0)>(eb|0)?la+(eb<<2)|0:Lb;$=(k[h>>2]|0)+Ab|0;k[h>>2]=$;if(($|0)>=0){Mb=Kb;Nb=zb;break}else{ob=Kb;pb=zb}}}else{Mb=Eb;Nb=Fb}do if(Mb>>>0<Nb>>>0){pb=(_-Mb>>2)*9|0;ob=k[Mb>>2]|0;if(ob>>>0<10){Ob=pb;break}else{Pb=pb;Qb=10}while(1){Qb=Qb*10|0;pb=Pb+1|0;if(ob>>>0<Qb>>>0){Ob=pb;break}else Pb=pb}}else Ob=0;while(0);ob=(ka|0)==103;Ab=(gb|0)!=0;pb=gb-((ka|0)!=102?Ob:0)+((Ab&ob)<<31>>31)|0;if((pb|0)<(((Nb-_>>2)*9|0)+-9|0)){$=pb+9216|0;pb=($|0)/9|0;eb=nb+(pb+-1023<<2)|0;fb=(($|0)%9|0)+1|0;if((fb|0)<9){$=10;lb=fb;while(1){fb=$*10|0;lb=lb+1|0;if((lb|0)==9){Rb=fb;break}else $=fb}}else Rb=10;$=k[eb>>2]|0;lb=($>>>0)%(Rb>>>0)|0;if((lb|0)==0?(nb+(pb+-1022<<2)|0)==(Nb|0):0){Sb=Mb;Tb=eb;Ub=Ob}else R=163;do if((R|0)==163){R=0;hb=((($>>>0)/(Rb>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;ka=(Rb|0)/2|0;do if(lb>>>0<ka>>>0)Vb=.5;else{if((lb|0)==(ka|0)?(nb+(pb+-1022<<2)|0)==(Nb|0):0){Vb=1.0;break}Vb=1.5}while(0);do if(!cb){Wb=hb;Xb=Vb}else{if((i[db>>0]|0)!=45){Wb=hb;Xb=Vb;break}Wb=-hb;Xb=-Vb}while(0);ka=$-lb|0;k[eb>>2]=ka;if(!(Wb+Xb!=Wb)){Sb=Mb;Tb=eb;Ub=Ob;break}fb=ka+Rb|0;k[eb>>2]=fb;if(fb>>>0>999999999){fb=Mb;ka=eb;while(1){zb=ka+-4|0;k[ka>>2]=0;if(zb>>>0<fb>>>0){la=fb+-4|0;k[la>>2]=0;Yb=la}else Yb=fb;la=(k[zb>>2]|0)+1|0;k[zb>>2]=la;if(la>>>0>999999999){fb=Yb;ka=zb}else{Zb=Yb;_b=zb;break}}}else{Zb=Mb;_b=eb}ka=(_-Zb>>2)*9|0;fb=k[Zb>>2]|0;if(fb>>>0<10){Sb=Zb;Tb=_b;Ub=ka;break}else{$b=ka;ac=10}while(1){ac=ac*10|0;ka=$b+1|0;if(fb>>>0<ac>>>0){Sb=Zb;Tb=_b;Ub=ka;break}else $b=ka}}while(0);eb=Tb+4|0;bc=Sb;cc=Ub;dc=Nb>>>0>eb>>>0?eb:Nb}else{bc=Mb;cc=Ob;dc=Nb}eb=0-cc|0;lb=dc;while(1){if(lb>>>0<=bc>>>0){ec=0;fc=lb;break}$=lb+-4|0;if(!(k[$>>2]|0))lb=$;else{ec=1;fc=lb;break}}do if(ob){lb=(Ab&1^1)+gb|0;if((lb|0)>(cc|0)&(cc|0)>-5){gc=aa+-1|0;hc=lb+-1-cc|0}else{gc=aa+-2|0;hc=lb+-1|0}lb=Z&8;if(lb){ic=gc;jc=hc;kc=lb;break}do if(ec){lb=k[fc+-4>>2]|0;if(!lb){lc=9;break}if(!((lb>>>0)%10|0)){mc=10;nc=0}else{lc=0;break}while(1){mc=mc*10|0;$=nc+1|0;if((lb>>>0)%(mc>>>0)|0){lc=$;break}else nc=$}}else lc=9;while(0);lb=((fc-_>>2)*9|0)+-9|0;if((gc|32|0)==102){$=lb-lc|0;pb=($|0)<0?0:$;ic=gc;jc=(hc|0)<(pb|0)?hc:pb;kc=0;break}else{pb=lb+cc-lc|0;lb=(pb|0)<0?0:pb;ic=gc;jc=(hc|0)<(lb|0)?hc:lb;kc=0;break}}else{ic=aa;jc=gb;kc=Z&8}while(0);gb=jc|kc;_=(gb|0)!=0&1;Ab=(ic|32|0)==102;if(Ab){oc=(cc|0)>0?cc:0;pc=0}else{ob=(cc|0)<0?eb:cc;lb=hr(ob,((ob|0)<0)<<31>>31,z)|0;if((B-lb|0)<2){ob=lb;while(1){pb=ob+-1|0;i[pb>>0]=48;if((B-pb|0)<2)ob=pb;else{qc=pb;break}}}else qc=lb;i[qc+-1>>0]=(cc>>31&2)+43;ob=qc+-2|0;i[ob>>0]=ic;oc=B-ob|0;pc=ob}ob=cb+1+jc+_+oc|0;ir(a,32,ta,ob,Z);if(!(k[a>>2]&32))yq(db,cb,a)|0;ir(a,48,ta,ob,Z^65536);do if(Ab){eb=bc>>>0>nb>>>0?nb:bc;pb=eb;while(1){$=hr(k[pb>>2]|0,0,G)|0;do if((pb|0)==(eb|0)){if(($|0)!=(G|0)){rc=$;break}i[I>>0]=48;rc=I}else{if($>>>0>m>>>0)sc=$;else{rc=$;break}while(1){fb=sc+-1|0;i[fb>>0]=48;if(fb>>>0>m>>>0)sc=fb;else{rc=fb;break}}}while(0);if(!(k[a>>2]&32))yq(rc,H-rc|0,a)|0;$=pb+4|0;if($>>>0>nb>>>0){tc=$;break}else pb=$}do if(gb){if(k[a>>2]&32)break;yq(164986,1,a)|0}while(0);if((jc|0)>0&tc>>>0<fc>>>0){pb=jc;eb=tc;while(1){$=hr(k[eb>>2]|0,0,G)|0;if($>>>0>m>>>0){fb=$;while(1){ka=fb+-1|0;i[ka>>0]=48;if(ka>>>0>m>>>0)fb=ka;else{uc=ka;break}}}else uc=$;if(!(k[a>>2]&32))yq(uc,(pb|0)>9?9:pb,a)|0;eb=eb+4|0;fb=pb+-9|0;if(!((pb|0)>9&eb>>>0<fc>>>0)){vc=fb;break}else pb=fb}}else vc=jc;ir(a,48,vc+9|0,9,0)}else{pb=ec?fc:bc+4|0;if((jc|0)>-1){eb=(kc|0)==0;fb=jc;ka=bc;while(1){zb=hr(k[ka>>2]|0,0,G)|0;if((zb|0)==(G|0)){i[I>>0]=48;wc=I}else wc=zb;do if((ka|0)==(bc|0)){zb=wc+1|0;if(!(k[a>>2]&32))yq(wc,1,a)|0;if(eb&(fb|0)<1){xc=zb;break}if(k[a>>2]&32){xc=zb;break}yq(164986,1,a)|0;xc=zb}else{if(wc>>>0>m>>>0)yc=wc;else{xc=wc;break}while(1){zb=yc+-1|0;i[zb>>0]=48;if(zb>>>0>m>>>0)yc=zb;else{xc=zb;break}}}while(0);$=H-xc|0;if(!(k[a>>2]&32))yq(xc,(fb|0)>($|0)?$:fb,a)|0;zb=fb-$|0;ka=ka+4|0;if(!(ka>>>0<pb>>>0&(zb|0)>-1)){zc=zb;break}else fb=zb}}else zc=jc;ir(a,48,zc+18|0,18,0);if(k[a>>2]&32)break;yq(pc,B-pc|0,a)|0}while(0);ir(a,32,ta,ob,Z^8192);sb=(ob|0)<(ta|0)?ta:ob}else{gb=(aa&32|0)!=0;nb=bb!=bb|0.0!=0.0;Ab=nb?0:cb;_=Ab+3|0;ir(a,32,ta,_,Y);lb=k[a>>2]|0;if(!(lb&32)){yq(db,Ab,a)|0;Ac=k[a>>2]|0}else Ac=lb;if(!(Ac&32))yq(nb?(gb?164978:164982):gb?164970:164974,3,a)|0;ir(a,32,ta,_,Z^8192);sb=(_|0)<(ta|0)?ta:_}while(0);J=O;K=Ba;b=sb;M=sa;continue a;break}default:{Ta=K;Ua=Z;Va=Aa;Wa=0;Xa=164934;Ya=w}}while(0);g:do if((R|0)==64){R=0;aa=o;N=k[aa>>2]|0;ja=k[aa+4>>2]|0;aa=Ia&32;if(!((N|0)==0&(ja|0)==0)){_=w;gb=N;N=ja;while(1){ja=_+-1|0;i[ja>>0]=l[164918+(gb&15)>>0]|aa;gb=ur(gb|0,N|0,4)|0;N=L;if((gb|0)==0&(N|0)==0){Bc=ja;break}else _=ja}_=o;if((Ga&8|0)==0|(k[_>>2]|0)==0&(k[_+4>>2]|0)==0){Ka=Bc;La=Ga;Ma=Ha;Na=0;Oa=164934;R=77}else{Ka=Bc;La=Ga;Ma=Ha;Na=2;Oa=164934+(Ia>>4)|0;R=77}}else{Ka=w;La=Ga;Ma=Ha;Na=0;Oa=164934;R=77}}else if((R|0)==76){R=0;Ka=hr(Pa,Qa,w)|0;La=Z;Ma=Aa;Na=Ra;Oa=Sa;R=77}else if((R|0)==82){R=0;_=Kq(Za,0,Aa)|0;N=(_|0)==0;Ta=Za;Ua=Y;Va=N?Aa:_-Za|0;Wa=0;Xa=164934;Ya=N?Za+Aa|0:_}else if((R|0)==86){R=0;_=0;N=0;gb=k[o>>2]|0;while(1){aa=k[gb>>2]|0;if(!aa){Cc=_;Dc=N;break}ja=hq(u,aa)|0;if((ja|0)<0|ja>>>0>(_a-_|0)>>>0){Cc=_;Dc=ja;break}aa=ja+_|0;if(_a>>>0>aa>>>0){_=aa;N=ja;gb=gb+4|0}else{Cc=aa;Dc=ja;break}}if((Dc|0)<0){pa=-1;R=252;break a}ir(a,32,ta,Cc,Z);if(!Cc){$a=0;R=98}else{gb=0;N=k[o>>2]|0;while(1){_=k[N>>2]|0;if(!_){$a=Cc;R=98;break g}ja=hq(u,_)|0;gb=ja+gb|0;if((gb|0)>(Cc|0)){$a=Cc;R=98;break g}if(!(k[a>>2]&32))yq(u,ja,a)|0;if(gb>>>0>=Cc>>>0){$a=Cc;R=98;break}else N=N+4|0}}}while(0);if((R|0)==98){R=0;ir(a,32,ta,$a,Z^8192);J=O;K=Ba;b=(ta|0)>($a|0)?ta:$a;M=sa;continue}if((R|0)==77){R=0;Y=(Ma|0)>-1?La&-65537:La;N=o;gb=(k[N>>2]|0)!=0|(k[N+4>>2]|0)!=0;if((Ma|0)!=0|gb){N=(gb&1^1)+(x-Ka)|0;Ta=Ka;Ua=Y;Va=(Ma|0)>(N|0)?Ma:N;Wa=Na;Xa=Oa;Ya=w}else{Ta=w;Ua=Y;Va=0;Wa=Na;Xa=Oa;Ya=w}}Y=Ya-Ta|0;N=(Va|0)<(Y|0)?Y:Va;gb=Wa+N|0;ja=(ta|0)<(gb|0)?gb:ta;ir(a,32,ja,gb,Ua);if(!(k[a>>2]&32))yq(Xa,Wa,a)|0;ir(a,48,ja,gb,Ua^65536);ir(a,48,N,Y,0);if(!(k[a>>2]&32))yq(Ta,Y,a)|0;ir(a,32,ja,gb,Ua^8192);J=O;K=Ba;b=ja;M=sa}if((R|0)==245){if(a){pa=P;r=f;return pa|0}if(!Q){pa=0;r=f;return pa|0}Q=k[e+4>>2]|0;if(Q){gr(d+8|0,Q,c);Q=k[e+8>>2]|0;if(Q){gr(d+16|0,Q,c);Q=k[e+12>>2]|0;if(Q){gr(d+24|0,Q,c);Q=k[e+16>>2]|0;if(Q){gr(d+32|0,Q,c);Q=k[e+20>>2]|0;if(Q){gr(d+40|0,Q,c);Q=k[e+24>>2]|0;if(Q){gr(d+48|0,Q,c);Q=k[e+28>>2]|0;if(Q){gr(d+56|0,Q,c);Q=k[e+32>>2]|0;if(Q){gr(d+64|0,Q,c);Q=k[e+36>>2]|0;if(!Q)Ec=9;else{gr(d+72|0,Q,c);pa=1;r=f;return pa|0}}else Ec=8}else Ec=7}else Ec=6}else Ec=5}else Ec=4}else Ec=3}else Ec=2}else Ec=1;while(1){if(k[e+(Ec<<2)>>2]|0){pa=-1;R=252;break}Ec=Ec+1|0;if((Ec|0)>=10){pa=1;R=252;break}}if((R|0)==252){r=f;return pa|0}}else if((R|0)==252){r=f;return pa|0}return 0}function $q(a,b,c){a=a|0;b=b|0;c=c|0;return rq(a,b,c)|0}function ar(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;f=r;r=r+240|0;g=f;k[g>>2]=a;if((d|0)<=1){h=1;er(b,g,h);r=f;return}i=0-b|0;j=d;d=a;l=a;a=1;while(1){m=d+i|0;n=j+-2|0;o=d+(0-((k[e+(n<<2)>>2]|0)+b))|0;if((yb[c&127](l,o)|0)>-1?(yb[c&127](l,m)|0)>-1:0){h=a;p=10;break}q=a+1|0;s=g+(a<<2)|0;if((yb[c&127](o,m)|0)>-1){k[s>>2]=o;t=o;u=j+-1|0}else{k[s>>2]=m;t=m;u=n}if((u|0)<=1){h=q;p=10;break}j=u;d=t;l=k[g>>2]|0;a=q}if((p|0)==10){er(b,g,h);r=f;return}}function br(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;h=r;r=r+240|0;i=h;j=k[d>>2]|0;l=k[d+4>>2]|0;k[i>>2]=a;d=0-b|0;a:do if((l|0)!=0|(j|0)!=1?(m=a+(0-(k[g+(e<<2)>>2]|0))|0,(yb[c&127](m,a)|0)>=1):0){n=a;o=e;p=(f|0)==0;q=m;m=j;s=l;t=1;while(1){if(p&(o|0)>1){u=k[g+(o+-2<<2)>>2]|0;if((yb[c&127](n+d|0,q)|0)>-1){v=n;w=o;x=t;break a}if((yb[c&127](n+(0-(u+b))|0,q)|0)>-1){v=n;w=o;x=t;break a}}u=t+1|0;k[i+(t<<2)>>2]=q;y=m+-1|0;do if(y){if(!(y&1)){z=y;A=0;while(1){B=A+1|0;z=z>>>1;if(z&1){C=B;break}else A=B}if(C)D=C;else E=11}else E=11;if((E|0)==11){E=0;if(!s){F=64;E=16;break}if(!(s&1)){G=s;H=0}else{I=0;J=m;K=s;L=0;break}while(1){A=H+1|0;G=G>>>1;if(G&1){M=A;N=H;break}else H=A}if(!M){I=0;J=m;K=s;L=0;break}else D=N+33|0}if(D>>>0>31){F=D;E=16}else{I=D;J=m;K=s;L=D}}else{F=32;E=16}while(0);if((E|0)==16){E=0;I=F+-32|0;J=s;K=0;L=F}m=K<<32-I|J>>>I;s=K>>>I;y=L+o|0;if(!((s|0)!=0|(m|0)!=1)){v=q;w=y;x=u;break a}A=q+(0-(k[g+(y<<2)>>2]|0))|0;if((yb[c&127](A,k[i>>2]|0)|0)<1){O=q;P=y;Q=0;R=u;E=19;break}else{z=q;o=y;p=1;q=A;t=u;n=z}}}else{O=a;P=e;Q=f;R=1;E=19}while(0);if((E|0)==19)if(!Q){v=O;w=P;x=R}else{r=h;return}er(b,i,x);ar(v,b,c,w,g);r=h;return}function cr(a){a=a|0;return}function dr(){return}function er(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=r;r=r+256|0;e=d;if((c|0)<2){r=d;return}f=b+(c<<2)|0;k[f>>2]=e;if(!a){r=d;return}else{g=a;h=e}while(1){e=g>>>0>256?256:g;wr(h|0,k[b>>2]|0,e|0)|0;a=0;do{i=b+(a<<2)|0;a=a+1|0;wr(k[i>>2]|0,k[b+(a<<2)>>2]|0,e|0)|0;k[i>>2]=(k[i>>2]|0)+e}while((a|0)!=(c|0));if((g|0)==(e|0))break;g=g-e|0;h=k[f>>2]|0}r=d;return}function fr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=a+20|0;e=k[d>>2]|0;f=(k[a+16>>2]|0)-e|0;a=f>>>0>c>>>0?c:f;wr(e|0,b|0,a|0)|0;k[d>>2]=(k[d>>2]|0)+a;return c|0}function gr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0.0;if(b>>>0>20)return;do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);e=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=e;return}case 10:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;return}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);e=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=e;k[d+4>>2]=0;return}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);e=d;f=k[e>>2]|0;g=k[e+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=f;k[d+4>>2]=g;return}case 13:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=(d&65535)<<16>>16;d=a;k[d>>2]=g;k[d+4>>2]=((g|0)<0)<<31>>31;return}case 14:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=a;k[g>>2]=d&65535;k[g+4>>2]=0;return}case 15:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=(d&255)<<24>>24;d=a;k[d>>2]=g;k[d+4>>2]=((g|0)<0)<<31>>31;return}case 16:{g=(k[c>>2]|0)+(4-1)&~(4-1);d=k[g>>2]|0;k[c>>2]=g+4;g=a;k[g>>2]=d&255;k[g+4>>2]=0;return}case 17:{g=(k[c>>2]|0)+(8-1)&~(8-1);h=+p[g>>3];k[c>>2]=g+8;p[a>>3]=h;return}case 18:{g=(k[c>>2]|0)+(8-1)&~(8-1);h=+p[g>>3];k[c>>2]=g+8;p[a>>3]=h;return}default:return}while(0)}function hr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){d=c;e=a;f=b;while(1){b=Fr(e|0,f|0,10,0)|0;g=d+-1|0;i[g>>0]=b|48;b=Er(e|0,f|0,10,0)|0;if(f>>>0>9|(f|0)==9&e>>>0>4294967295){d=g;e=b;f=L}else{h=g;j=b;break}}k=h;l=j}else{k=c;l=a}if(!l){m=k;return m|0}else{n=k;o=l}while(1){l=n+-1|0;i[l>>0]=(o>>>0)%10|0|48;if(o>>>0<10){m=l;break}else{n=l;o=(o>>>0)/10|0}}return m|0}function ir(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;f=r;r=r+256|0;g=f;if(!((c|0)>(d|0)&(e&73728|0)==0)){r=f;return}e=c-d|0;qr(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;h=(b&32|0)==0;if(e>>>0>255){i=c-d|0;d=e;c=b;b=h;while(1){if(b){yq(g,256,a)|0;j=k[a>>2]|0}else j=c;d=d+-256|0;b=(j&32|0)==0;if(d>>>0<=255)break;else c=j}if(b)l=i&255;else{r=f;return}}else if(h)l=e;else{r=f;return}yq(g,l,a)|0;r=f;return}
90
+function Vn(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,28)|0;d=a+480|0;k[d>>2]=c;k[c>>2]=67;e=a+40|0;switch(k[e>>2]|0){case 1:{if((k[a+36>>2]|0)!=1){f=k[a>>2]|0;k[f+20>>2]=11;qb[k[f>>2]&127](a)}break}case 7:case 6:case 3:case 2:{if((k[a+36>>2]|0)!=3){f=k[a>>2]|0;k[f+20>>2]=11;qb[k[f>>2]&127](a)}break}case 5:case 4:{if((k[a+36>>2]|0)!=4){f=k[a>>2]|0;k[f+20>>2]=11;qb[k[f>>2]&127](a)}break}default:if((k[a+36>>2]|0)<1){f=k[a>>2]|0;k[f+20>>2]=11;qb[k[f>>2]&127](a)}}f=a+304|0;a:do if(k[f>>2]|0){switch(k[e>>2]|0){case 6:case 2:{break a;break}default:{}}g=k[a>>2]|0;k[g+20>>2]=28;qb[k[g>>2]&127](a)}while(0);g=k[a+44>>2]|0;b:do switch(g|0){case 1:{k[a+120>>2]=1;switch(k[e>>2]|0){case 7:case 3:case 1:{k[c+4>>2]=9;h=k[a+36>>2]|0;if((h|0)<=1)break b;i=k[a+216>>2]|0;j=1;do{k[i+(j*88|0)+52>>2]=0;j=j+1|0}while((j|0)<(h|0));break}case 2:{switch(k[f>>2]|0){case 0:{k[c+4>>2]=10;break}case 1:{k[c+4>>2]=11;break}default:{h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a)}}h=k[d>>2]|0;j=nb[k[k[b>>2]>>2]&63](a,1,3072)|0;k[h+24>>2]=j;h=0;do{k[j+(h<<2)>>2]=h*19595;k[j+(h+256<<2)>>2]=h*38470;k[j+(h+512<<2)>>2]=(h*7471|0)+32768;h=h+1|0}while((h|0)!=256);break}default:{h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);break b}}break}case 2:{k[a+120>>2]=3;switch(k[e>>2]|0){case 1:{k[c+4>>2]=12;break b;break}case 3:{k[c+4>>2]=13;h=k[d>>2]|0;j=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;i=h+8|0;k[i>>2]=j;j=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;l=h+12|0;k[l>>2]=j;j=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;m=h+16|0;k[m>>2]=j;j=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;k[h+20>>2]=j;h=k[i>>2]|0;i=k[l>>2]|0;l=k[m>>2]|0;m=0;n=-128;while(1){k[h+(m<<2)>>2]=(n*91881|0)+32768>>16;k[i+(m<<2)>>2]=(n*116130|0)+32768>>16;o=ha(n,-46802)|0;k[l+(m<<2)>>2]=o;o=(ha(n,-22553)|0)+32768|0;k[j+(m<<2)>>2]=o;m=m+1|0;if((m|0)==256)break;else n=n+1|0}break}case 7:{k[c+4>>2]=13;n=k[d>>2]|0;m=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;j=n+8|0;k[j>>2]=m;m=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;l=n+12|0;k[l>>2]=m;m=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;i=n+16|0;k[i>>2]=m;m=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;k[n+20>>2]=m;n=k[j>>2]|0;j=k[l>>2]|0;l=k[i>>2]|0;i=0;h=-128;while(1){k[n+(i<<2)>>2]=(h*183763|0)+32768>>16;k[j+(i<<2)>>2]=(h*232260|0)+32768>>16;o=ha(h,-93603)|0;k[l+(i<<2)>>2]=o;o=(ha(h,-45107)|0)+32768|0;k[m+(i<<2)>>2]=o;i=i+1|0;if((i|0)==256)break;else h=h+1|0}break}case 2:{switch(k[f>>2]|0){case 0:{k[c+4>>2]=14;break b;break}case 1:{k[c+4>>2]=15;break b;break}default:{h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);break b}}break}default:{h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);break b}}break}case 6:{k[a+120>>2]=3;if((k[e>>2]|0)!=6){h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);break b}switch(k[f>>2]|0){case 0:{k[c+4>>2]=14;break b;break}case 1:{k[c+4>>2]=15;break b;break}default:{h=k[a>>2]|0;k[h+20>>2]=28;qb[k[h>>2]&127](a);break b}}break}case 4:{k[a+120>>2]=4;switch(k[e>>2]|0){case 5:{k[c+4>>2]=16;h=k[d>>2]|0;i=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;m=h+8|0;k[m>>2]=i;i=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;l=h+12|0;k[l>>2]=i;i=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;j=h+16|0;k[j>>2]=i;i=nb[k[k[b>>2]>>2]&63](a,1,1024)|0;k[h+20>>2]=i;h=k[m>>2]|0;m=k[l>>2]|0;l=k[j>>2]|0;j=0;n=-128;while(1){k[h+(j<<2)>>2]=(n*91881|0)+32768>>16;k[m+(j<<2)>>2]=(n*116130|0)+32768>>16;o=ha(n,-46802)|0;k[l+(j<<2)>>2]=o;o=(ha(n,-22553)|0)+32768|0;k[i+(j<<2)>>2]=o;j=j+1|0;if((j|0)==256)break;else n=n+1|0}break}case 4:{k[c+4>>2]=17;break b;break}default:{n=k[a>>2]|0;k[n+20>>2]=28;qb[k[n>>2]&127](a);break b}}break}default:if((g|0)==(k[e>>2]|0)){k[a+120>>2]=k[a+36>>2];k[c+4>>2]=17;break b}else{n=k[a>>2]|0;k[n+20>>2]=28;qb[k[n>>2]&127](a);break b}}while(0);if(k[a+84>>2]|0){p=1;q=a+124|0;k[q>>2]=p;return}p=k[a+120>>2]|0;q=a+124|0;k[q>>2]=p;return}function Wn(a){a=a|0;return}function Xn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;rm(k[b>>2]|0,c,d,0,e,k[a+112>>2]|0);return}function Yn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0;f=k[(k[a+480>>2]|0)+24>>2]|0;g=k[a+112>>2]|0;if((e|0)<=0)return;a=b+4|0;h=b+8|0;if(!g)return;else{j=d;m=c;n=e}do{e=n;n=n+-1|0;c=k[(k[b>>2]|0)+(m<<2)>>2]|0;d=k[(k[a>>2]|0)+(m<<2)>>2]|0;o=k[(k[h>>2]|0)+(m<<2)>>2]|0;m=m+1|0;p=k[j>>2]|0;j=j+4|0;q=0;do{i[p+q>>0]=((k[f+((l[d+q>>0]|0|256)<<2)>>2]|0)+(k[f+((l[c+q>>0]|0)<<2)>>2]|0)+(k[f+((l[o+q>>0]|0|512)<<2)>>2]|0)|0)>>>16;q=q+1|0}while((q|0)!=(g|0))}while((e|0)>1);return}function Zn(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0;f=k[(k[a+480>>2]|0)+24>>2]|0;g=k[a+112>>2]|0;if((e|0)<=0)return;a=b+4|0;h=b+8|0;if(!g)return;else{j=d;m=c;n=e}do{e=n;n=n+-1|0;c=k[(k[b>>2]|0)+(m<<2)>>2]|0;d=k[(k[a>>2]|0)+(m<<2)>>2]|0;o=k[(k[h>>2]|0)+(m<<2)>>2]|0;m=m+1|0;p=k[j>>2]|0;j=j+4|0;q=0;do{r=l[d+q>>0]|0;i[p+q>>0]=((k[f+((r|256)<<2)>>2]|0)+(k[f+(((l[c+q>>0]|0)+128+r&255)<<2)>>2]|0)+(k[f+((r+128+(l[o+q>>0]|0)&255|512)<<2)>>2]|0)|0)>>>16;q=q+1|0}while((q|0)!=(g|0))}while((e|0)>1);return}function _n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0;f=k[a+112>>2]|0;if((e|0)<1|(f|0)==0)return;else{g=d;h=c;j=e}do{e=j;j=j+-1|0;c=k[(k[b>>2]|0)+(h<<2)>>2]|0;h=h+1|0;d=0;a=k[g>>2]|0;g=g+4|0;while(1){l=i[c+d>>0]|0;i[a+2>>0]=l;i[a+1>>0]=l;i[a>>0]=l;d=d+1|0;if((d|0)==(f|0))break;else a=a+3|0}}while((e|0)>1);return}function $n(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;f=k[a+480>>2]|0;g=k[a+112>>2]|0;h=k[a+336>>2]|0;a=k[f+8>>2]|0;j=k[f+12>>2]|0;m=k[f+16>>2]|0;n=k[f+20>>2]|0;if((e|0)<=0)return;f=b+4|0;o=b+8|0;if(!g)return;else{p=d;q=c;r=e}do{e=r;r=r+-1|0;c=k[(k[b>>2]|0)+(q<<2)>>2]|0;d=k[(k[f>>2]|0)+(q<<2)>>2]|0;s=k[(k[o>>2]|0)+(q<<2)>>2]|0;q=q+1|0;t=0;u=k[p>>2]|0;p=p+4|0;while(1){v=l[c+t>>0]|0;w=l[d+t>>0]|0;x=l[s+t>>0]|0;i[u>>0]=i[h+((k[a+(x<<2)>>2]|0)+v)>>0]|0;i[u+1>>0]=i[h+(((k[m+(x<<2)>>2]|0)+(k[n+(w<<2)>>2]|0)>>16)+v)>>0]|0;i[u+2>>0]=i[h+((k[j+(w<<2)>>2]|0)+v)>>0]|0;t=t+1|0;if((t|0)==(g|0))break;else u=u+3|0}}while((e|0)>1);return}function ao(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;f=k[a+112>>2]|0;if((e|0)<=0)return;a=b+4|0;g=b+8|0;h=(f|0)==0;j=d;d=c;c=e;do{e=c;c=c+-1|0;l=k[(k[b>>2]|0)+(d<<2)>>2]|0;m=k[(k[a>>2]|0)+(d<<2)>>2]|0;n=k[(k[g>>2]|0)+(d<<2)>>2]|0;d=d+1|0;if(!h){o=0;p=k[j>>2]|0;while(1){i[p>>0]=i[l+o>>0]|0;i[p+1>>0]=i[m+o>>0]|0;i[p+2>>0]=i[n+o>>0]|0;o=o+1|0;if((o|0)==(f|0))break;else p=p+3|0}}j=j+4|0}while((e|0)>1);return}function bo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=k[a+112>>2]|0;if((e|0)<=0)return;a=b+4|0;g=b+8|0;h=(f|0)==0;j=d;d=c;c=e;do{e=c;c=c+-1|0;m=k[(k[b>>2]|0)+(d<<2)>>2]|0;n=k[(k[a>>2]|0)+(d<<2)>>2]|0;o=k[(k[g>>2]|0)+(d<<2)>>2]|0;d=d+1|0;if(!h){p=0;q=k[j>>2]|0;while(1){r=i[n+p>>0]|0;s=r&255;t=l[o+p>>0]|0;i[q>>0]=(l[m+p>>0]|0)+128+s;i[q+1>>0]=r;i[q+2>>0]=s+128+t;p=p+1|0;if((p|0)==(f|0))break;else q=q+3|0}}j=j+4|0}while((e|0)>1);return}function co(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;f=k[a+480>>2]|0;g=k[a+112>>2]|0;h=k[a+336>>2]|0;a=k[f+8>>2]|0;j=k[f+12>>2]|0;m=k[f+16>>2]|0;n=k[f+20>>2]|0;if((e|0)<=0)return;f=b+4|0;o=b+8|0;p=b+12|0;q=(g|0)==0;r=d;d=c;c=e;do{e=c;c=c+-1|0;s=k[(k[b>>2]|0)+(d<<2)>>2]|0;t=k[(k[f>>2]|0)+(d<<2)>>2]|0;u=k[(k[o>>2]|0)+(d<<2)>>2]|0;v=k[(k[p>>2]|0)+(d<<2)>>2]|0;d=d+1|0;if(!q){w=0;x=k[r>>2]|0;while(1){y=l[t+w>>0]|0;z=l[u+w>>0]|0;A=(l[s+w>>0]|0)^255;i[x>>0]=i[h+(A-(k[a+(z<<2)>>2]|0))>>0]|0;i[x+1>>0]=i[h+(A-((k[m+(z<<2)>>2]|0)+(k[n+(y<<2)>>2]|0)>>16))>>0]|0;i[x+2>>0]=i[h+(A-(k[j+(y<<2)>>2]|0))>>0]|0;i[x+3>>0]=i[v+w>>0]|0;w=w+1|0;if((w|0)==(g|0))break;else x=x+4|0}}r=r+4|0}while((e|0)>1);return}function eo(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;f=k[a+36>>2]|0;g=k[a+112>>2]|0;if((e|0)<=0)return;a=(f|0)>0;h=(g|0)==0;j=c;c=d;d=e;while(1){e=d;d=d+-1|0;if(a){l=0;do{if(!h){m=0;n=k[(k[b+(l<<2)>>2]|0)+(j<<2)>>2]|0;o=(k[c>>2]|0)+l|0;while(1){i[o>>0]=i[n>>0]|0;m=m+1|0;if((m|0)==(g|0))break;else{n=n+1|0;o=o+f|0}}}l=l+1|0}while((l|0)!=(f|0))}if((e|0)<=1)break;else{j=j+1|0;c=c+4|0}}return}function fo(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,84)|0;k[a+472>>2]=c;k[c>>2]=68;d=a+36|0;if((k[d>>2]|0)<=0)return;e=c+44|0;c=0;f=k[a+216>>2]|0;while(1){g=nb[k[k[b>>2]>>2]&63](a,1,256)|0;k[f+84>>2]=g;qr(g|0,0,256)|0;k[e+(c<<2)>>2]=-1;c=c+1|0;if((c|0)>=(k[d>>2]|0))break;else f=f+88|0}return}function go(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,q=0,r=0,s=0,t=0.0,u=0,v=0;b=k[a+472>>2]|0;c=a+36|0;if((k[c>>2]|0)<=0)return;d=a+72|0;e=0;f=k[a+216>>2]|0;g=0;h=0;while(1){i=k[f+36>>2]|0;l=f+40|0;a:do switch((i<<8)+(k[l>>2]|0)|0){case 257:{n=0;q=18;break}case 514:{n=0;q=19;break}case 771:{n=0;q=20;break}case 1028:{n=0;q=21;break}case 1285:{n=0;q=22;break}case 1542:{n=0;q=23;break}case 1799:{n=0;q=24;break}case 2313:{n=0;q=25;break}case 2570:{n=0;q=26;break}case 2827:{n=0;q=27;break}case 3084:{n=0;q=28;break}case 3341:{n=0;q=29;break}case 3598:{n=0;q=30;break}case 3855:{n=0;q=31;break}case 4112:{n=0;q=32;break}case 4104:{n=0;q=33;break}case 3591:{n=0;q=34;break}case 3078:{n=0;q=35;break}case 2565:{n=0;q=36;break}case 2052:{n=0;q=37;break}case 1539:{n=0;q=38;break}case 1026:{n=0;q=39;break}case 513:{n=0;q=40;break}case 2064:{n=0;q=41;break}case 1806:{n=0;q=42;break}case 1548:{n=0;q=43;break}case 1290:{n=0;q=44;break}case 1032:{n=0;q=45;break}case 774:{n=0;q=46;break}case 516:{n=0;q=47;break}case 258:{n=0;q=48;break}case 2056:{r=k[d>>2]|0;switch(r|0){case 0:{n=0;q=49;break a;break}case 1:{n=r;q=50;break a;break}case 2:{n=r;q=51;break a;break}default:{r=k[a>>2]|0;k[r+20>>2]=49;qb[k[r>>2]&127](a);n=g;q=h;break a}}break}default:{r=k[a>>2]|0;k[r+20>>2]=7;k[r+24>>2]=i;k[r+28>>2]=k[l>>2];qb[k[r>>2]&127](a);n=g;q=h}}while(0);k[b+4+(e<<2)>>2]=q;b:do if(((k[f+52>>2]|0)!=0?(l=b+44+(e<<2)|0,(k[l>>2]|0)!=(n|0)):0)?(i=k[f+80>>2]|0,(i|0)!=0):0){k[l>>2]=n;switch(n|0){case 0:{l=k[f+84>>2]|0;r=0;do{k[l+(r<<2)>>2]=m[i+(r<<1)>>1];r=r+1|0}while((r|0)!=64);break}case 1:{r=k[f+84>>2]|0;l=0;do{s=(ha(j[128808+(l<<1)>>1]|0,m[i+(l<<1)>>1]|0)|0)+2048>>12;k[r+(l<<2)>>2]=s;l=l+1|0}while((l|0)!=64);break}case 2:{l=k[f+84>>2]|0;r=0;s=0;while(1){t=+p[8+(s<<3)>>3];o[l+(r<<2)>>2]=+(m[i+(r<<1)>>1]|0)*t*.125;u=r|1;o[l+(u<<2)>>2]=+(m[i+(u<<1)>>1]|0)*t*1.387039845*.125;v=u+1|0;o[l+(v<<2)>>2]=+(m[i+(v<<1)>>1]|0)*t*1.306562965*.125;v=r|3;o[l+(v<<2)>>2]=+(m[i+(v<<1)>>1]|0)*t*1.175875602*.125;u=v+1|0;o[l+(u<<2)>>2]=+(m[i+(u<<1)>>1]|0)*t*.125;u=v+2|0;o[l+(u<<2)>>2]=+(m[i+(u<<1)>>1]|0)*t*.785694958*.125;u=v+3|0;o[l+(u<<2)>>2]=+(m[i+(u<<1)>>1]|0)*t*.5411961*.125;u=r|7;o[l+(u<<2)>>2]=+(m[i+(u<<1)>>1]|0)*t*.275899379*.125;s=s+1|0;if((s|0)==8)break;else r=r+8|0}break}default:{r=k[a>>2]|0;k[r+20>>2]=49;qb[k[r>>2]&127](a);break b}}}while(0);e=e+1|0;if((e|0)>=(k[c>>2]|0))break;else{f=f+88|0;g=n;h=q}}return}function ho(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+4|0;c=nb[k[k[b>>2]>>2]&63](a,1,220)|0;k[a+468>>2]=c;k[c>>2]=69;k[c+8>>2]=70;if(!(k[a+224>>2]|0)){k[c+84>>2]=0;k[c+68>>2]=0;k[c+88>>2]=0;k[c+72>>2]=0;k[c+92>>2]=0;k[c+76>>2]=0;k[c+96>>2]=0;k[c+80>>2]=0;return}d=a+36|0;e=nb[k[k[b>>2]>>2]&63](a,1,k[d>>2]<<8)|0;k[a+160>>2]=e;if((k[d>>2]|0)>0){a=0;do{qr(e+(a<<8)|0,-1,256)|0;a=a+1|0}while((a|0)<(k[d>>2]|0))}d=c+48|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;return}function io(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;b=k[a+468>>2]|0;c=a+412|0;d=k[c>>2]|0;e=(d|0)==0;if(!(k[a+224>>2]|0)){if((e?(k[a+420>>2]|0)==0:0)?(k[a+424>>2]|0)==0:0){f=k[a+416>>2]|0;if((k[a+220>>2]|0)!=0|(f|0)<64?(f|0)!=(k[a+436>>2]|0):0)g=44}else g=44;if((g|0)==44){f=k[a>>2]|0;k[f+20>>2]=125;rb[k[f+4>>2]&31](a,-1)}f=a+436|0;k[b+4>>2]=(k[f>>2]|0)==63?68:69;h=a+340|0;if((k[h>>2]|0)>0){i=0;do{j=k[a+344+(i<<2)>>2]|0;l=k[j+20>>2]|0;oo(a,1,l,b+68+(l<<2)|0);if(k[f>>2]|0){l=k[j+24>>2]|0;oo(a,0,l,b+84+(l<<2)|0)}k[b+24+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[h>>2]|0))}h=a+368|0;if((k[h>>2]|0)>0)m=0;else{n=b+16|0;k[n>>2]=0;o=b+12|0;k[o>>2]=0;p=b+40|0;k[p>>2]=0;q=a+280|0;r=k[q>>2]|0;s=b+44|0;k[s>>2]=r;return}do{i=k[a+344+(k[a+372+(m<<2)>>2]<<2)>>2]|0;k[b+100+(m<<2)>>2]=k[b+68+(k[i+20>>2]<<2)>>2];k[b+140+(m<<2)>>2]=k[b+84+(k[i+24>>2]<<2)>>2];a:do if(!(k[i+52>>2]|0))k[b+180+(m<<2)>>2]=0;else{l=k[i+40>>2]|0;j=k[i+36>>2]|0;switch(k[f>>2]|0){case 0:{k[b+180+(m<<2)>>2]=1;break a;break}case 3:{t=l+-1|0;u=j+-1|0;k[b+180+(m<<2)>>2]=(k[121260+((t>>>0>1?1:t)<<3)+((u>>>0>1?1:u)<<2)>>2]|0)+1;break a;break}case 8:{u=l+-1|0;t=j+-1|0;k[b+180+(m<<2)>>2]=(k[121276+((u>>>0>2?2:u)*12|0)+((t>>>0>2?2:t)<<2)>>2]|0)+1;break a;break}case 15:{t=l+-1|0;u=j+-1|0;k[b+180+(m<<2)>>2]=(k[121312+((t>>>0>3?3:t)<<4)+((u>>>0>3?3:u)<<2)>>2]|0)+1;break a;break}case 24:{u=l+-1|0;t=j+-1|0;k[b+180+(m<<2)>>2]=(k[121376+((u>>>0>4?4:u)*20|0)+((t>>>0>4?4:t)<<2)>>2]|0)+1;break a;break}case 35:{t=l+-1|0;u=j+-1|0;k[b+180+(m<<2)>>2]=(k[121476+((t>>>0>5?5:t)*24|0)+((u>>>0>5?5:u)<<2)>>2]|0)+1;break a;break}case 48:{u=l+-1|0;t=j+-1|0;k[b+180+(m<<2)>>2]=(k[121620+((u>>>0>6?6:u)*28|0)+((t>>>0>6?6:t)<<2)>>2]|0)+1;break a;break}default:{t=l+-1|0;l=j+-1|0;k[b+180+(m<<2)>>2]=(k[121816+((t>>>0>7?7:t)<<5)+((l>>>0>7?7:l)<<2)>>2]|0)+1;break a}}}while(0);m=m+1|0}while((m|0)<(k[h>>2]|0));n=b+16|0;k[n>>2]=0;o=b+12|0;k[o>>2]=0;p=b+40|0;k[p>>2]=0;q=a+280|0;r=k[q>>2]|0;s=b+44|0;k[s>>2]=r;return}h=a+416|0;m=k[h>>2]|0;if(e)if(!m)g=7;else g=11;else if(((m|0)>=(d|0)?(m|0)<=(k[a+436>>2]|0):0)?(k[a+340>>2]|0)==1:0)g=7;else g=11;do if((g|0)==7){m=k[a+420>>2]|0;if(m){e=m+-1|0;if((e|0)==(k[a+424>>2]|0))v=e;else{g=11;break}}else v=k[a+424>>2]|0;if((v|0)>13)g=11}while(0);if((g|0)==11){g=k[a>>2]|0;k[g+20>>2]=17;k[g+24>>2]=d;k[g+28>>2]=k[h>>2];k[g+32>>2]=k[a+420>>2];k[g+36>>2]=k[a+424>>2];qb[k[g>>2]&127](a)}g=a+340|0;d=k[g>>2]|0;if((d|0)>0){v=a+160|0;e=a+420|0;m=a+424|0;f=0;do{i=k[(k[a+344+(f<<2)>>2]|0)+4>>2]|0;l=k[v>>2]|0;t=k[c>>2]|0;if(t)if((k[l+(i<<8)>>2]|0)<0){j=k[a>>2]|0;k[j+20>>2]=118;k[j+24>>2]=i;k[j+28>>2]=0;rb[k[j+4>>2]&31](a,-1);w=k[c>>2]|0}else w=t;else w=0;if((w|0)<=(k[h>>2]|0)){t=w;while(1){j=l+(i<<8)+(t<<2)|0;u=k[j>>2]|0;if((k[e>>2]|0)!=(((u|0)<0?0:u)|0)){u=k[a>>2]|0;k[u+20>>2]=118;k[u+24>>2]=i;k[u+28>>2]=t;rb[k[u+4>>2]&31](a,-1)}k[j>>2]=k[m>>2];if((t|0)<(k[h>>2]|0))t=t+1|0;else break}}f=f+1|0;t=k[g>>2]|0}while((f|0)<(t|0));x=e;y=t}else{x=a+420|0;y=d}d=k[c>>2]|0;e=(d|0)==0;f=b+4|0;do if(!(k[x>>2]|0))if(e){k[f>>2]=64;break}else{k[f>>2]=65;break}else if(e){k[f>>2]=66;break}else{k[f>>2]=67;break}while(0);b:do if((y|0)>0){f=b+64|0;e=d;h=0;while(1){m=k[a+344+(h<<2)>>2]|0;if(!e){if(!(k[x>>2]|0)){w=k[m+20>>2]|0;oo(a,1,w,b+48+(w<<2)|0)}}else{w=k[m+24>>2]|0;m=b+48+(w<<2)|0;oo(a,0,w,m);k[f>>2]=k[m>>2]}k[b+24+(h<<2)>>2]=0;m=h+1|0;if((m|0)>=(k[g>>2]|0))break b;e=k[c>>2]|0;h=m}}while(0);k[b+20>>2]=0;n=b+16|0;k[n>>2]=0;o=b+12|0;k[o>>2]=0;p=b+40|0;k[p>>2]=0;q=a+280|0;r=k[q>>2]|0;s=b+44|0;k[s>>2]=r;return}function jo(a){a=a|0;var b=0,c=0;b=(k[a+468>>2]|0)+16|0;c=(k[a+464>>2]|0)+24|0;k[c>>2]=(k[c>>2]|0)+((k[b>>2]|0)/8|0);k[b>>2]=0;return}function ko(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;c=r;r=r+48|0;d=c+20|0;e=c;f=k[a+468>>2]|0;g=k[a+424>>2]|0;h=a+280|0;if((k[h>>2]|0)!=0?(i=f+44|0,(k[i>>2]|0)==0):0){m=f+16|0;n=k[a+464>>2]|0;o=n+24|0;k[o>>2]=(k[o>>2]|0)+((k[m>>2]|0)/8|0);k[m>>2]=0;if(!(ub[k[n+8>>2]&63](a)|0)){p=0;r=c;return p|0}n=a+340|0;if((k[n>>2]|0)>0){m=0;do{k[f+24+(m<<2)>>2]=0;m=m+1|0}while((m|0)<(k[n>>2]|0))}k[f+20>>2]=0;k[i>>2]=k[h>>2];if(!(k[a+440>>2]|0))k[f+40>>2]=0}if(!(k[f+40>>2]|0)){k[d+16>>2]=a;h=a+24|0;i=k[h>>2]|0;n=k[i>>2]|0;k[d>>2]=n;m=k[i+4>>2]|0;o=d+4|0;k[o>>2]=m;q=f+12|0;s=k[q>>2]|0;t=f+16|0;u=k[t>>2]|0;v=f+20|0;k[e>>2]=k[v>>2];k[e+4>>2]=k[v+4>>2];k[e+8>>2]=k[v+8>>2];k[e+12>>2]=k[v+12>>2];k[e+16>>2]=k[v+16>>2];w=a+368|0;do if((k[w>>2]|0)>0){x=d+8|0;y=d+12|0;z=u;A=0;B=s;while(1){C=k[b+(A<<2)>>2]|0;D=k[a+372+(A<<2)>>2]|0;E=k[f+48+(k[(k[a+344+(D<<2)>>2]|0)+20>>2]<<2)>>2]|0;if((z|0)<8){if(!(ro(d,B,z,0)|0)){p=0;F=27;break}G=k[x>>2]|0;H=k[y>>2]|0;if((H|0)<8){I=H;J=G;K=1;F=16}else{L=H;M=G;F=14}}else{L=z;M=B;F=14}if((F|0)==14){F=0;G=M>>L+-8&255;H=k[E+144+(G<<2)>>2]|0;if(!H){I=L;J=M;K=9;F=16}else{N=L-H|0;O=M;P=l[E+1168+G>>0]|0}}if((F|0)==16){F=0;G=so(d,J,I,E,K)|0;if((G|0)<0){p=0;F=27;break}N=k[y>>2]|0;O=k[x>>2]|0;P=G}if(!P){Q=N;R=O;S=0}else{if((N|0)<(P|0)){if(!(ro(d,O,N,P)|0)){p=0;F=27;break}T=k[y>>2]|0;U=k[x>>2]|0}else{T=N;U=O}G=T-P|0;E=k[122072+(P<<2)>>2]|0;H=U>>G&E;Q=G;R=U;S=H-((H|0)>(k[122072+(P+-1<<2)>>2]|0)?0:E)|0}E=e+4+(D<<2)|0;D=(k[E>>2]|0)+S|0;k[E>>2]=D;j[C>>1]=D<<g;A=A+1|0;if((A|0)>=(k[w>>2]|0)){V=Q;W=R;F=24;break}else{z=Q;B=R}}if((F|0)==24){X=k[h>>2]|0;Y=k[d>>2]|0;Z=k[o>>2]|0;_=V;$=W;break}else if((F|0)==27){r=c;return p|0}}else{X=i;Y=n;Z=m;_=u;$=s}while(0);k[X>>2]=Y;k[X+4>>2]=Z;k[q>>2]=$;k[t>>2]=_;k[v>>2]=k[e>>2];k[v+4>>2]=k[e+4>>2];k[v+8>>2]=k[e+8>>2];k[v+12>>2]=k[e+12>>2];k[v+16>>2]=k[e+16>>2]}e=f+44|0;k[e>>2]=(k[e>>2]|0)+-1;p=1;r=c;return p|0}function lo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;c=r;r=r+32|0;d=c;e=k[a+468>>2]|0;f=a+280|0;if((k[f>>2]|0)!=0?(g=e+44|0,(k[g>>2]|0)==0):0){h=e+16|0;i=k[a+464>>2]|0;m=i+24|0;k[m>>2]=(k[m>>2]|0)+((k[h>>2]|0)/8|0);k[h>>2]=0;if(!(ub[k[i+8>>2]&63](a)|0)){n=0;r=c;return n|0}i=a+340|0;if((k[i>>2]|0)>0){h=0;do{k[e+24+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(k[i>>2]|0))}k[e+20>>2]=0;k[g>>2]=k[f>>2];if(!(k[a+440>>2]|0))k[e+40>>2]=0}if(!(k[e+40>>2]|0)){f=k[a+416>>2]|0;g=k[a+424>>2]|0;i=k[a+432>>2]|0;h=e+20|0;m=k[h>>2]|0;if(!m){k[d+16>>2]=a;o=a+24|0;p=k[o>>2]|0;k[d>>2]=k[p>>2];q=d+4|0;k[q>>2]=k[p+4>>2];p=e+12|0;s=k[p>>2]|0;t=e+16|0;u=k[t>>2]|0;v=k[b>>2]|0;b=k[e+64>>2]|0;w=k[a+412>>2]|0;a:do if((w|0)<=(f|0)){a=d+8|0;x=d+12|0;y=u;z=s;A=w;b:while(1){if((y|0)<8){if(!(ro(d,z,y,0)|0)){n=0;B=35;break}C=k[a>>2]|0;D=k[x>>2]|0;if((D|0)<8){E=D;F=C;G=1;B=18}else{H=D;I=C;B=16}}else{H=y;I=z;B=16}if((B|0)==16){B=0;C=I>>H+-8&255;D=k[b+144+(C<<2)>>2]|0;if(!D){E=H;F=I;G=9;B=18}else{J=H-D|0;K=I;L=l[b+1168+C>>0]|0}}if((B|0)==18){B=0;C=so(d,F,E,b,G)|0;if((C|0)<0){n=0;B=35;break}J=k[x>>2]|0;K=k[a>>2]|0;L=C}C=L>>4;D=L&15;if(!D){switch(C|0){case 0:{M=0;N=J;O=K;break a;break}case 15:break;default:{P=C;Q=J;R=K;B=26;break b}}S=J;T=K;U=A+15|0}else{V=C+A|0;if((J|0)<(D|0)){if(!(ro(d,K,J,D)|0)){n=0;B=35;break}W=k[x>>2]|0;X=k[a>>2]|0}else{W=J;X=K}C=W-D|0;Y=k[122072+(D<<2)>>2]|0;Z=X>>C&Y;j[v+(k[i+(V<<2)>>2]<<1)>>1]=Z-((Z|0)>(k[122072+(D+-1<<2)>>2]|0)?0:Y)<<g;S=C;T=X;U=V}if((U|0)<(f|0)){y=S;z=T;A=U+1|0}else{M=0;N=S;O=T;break a}}if((B|0)==26){A=1<<P;do if((Q|0)<(P|0))if(!(ro(d,R,Q,P)|0)){n=0;r=c;return n|0}else{_=k[x>>2]|0;$=k[a>>2]|0;break}else{_=Q;$=R}while(0);a=_-P|0;M=A+-1+($>>a&k[122072+(P<<2)>>2])|0;N=a;O=$;break}else if((B|0)==35){r=c;return n|0}}else{M=0;N=u;O=s}while(0);s=k[o>>2]|0;k[s>>2]=k[d>>2];k[s+4>>2]=k[q>>2];k[p>>2]=O;k[t>>2]=N;aa=M}else aa=m+-1|0;k[h>>2]=aa}aa=e+44|0;k[aa>>2]=(k[aa>>2]|0)+-1;n=1;r=c;return n|0}function mo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;c=r;r=r+32|0;d=c;e=k[a+468>>2]|0;f=a+280|0;if((k[f>>2]|0)!=0?(g=e+44|0,(k[g>>2]|0)==0):0){h=e+16|0;i=k[a+464>>2]|0;l=i+24|0;k[l>>2]=(k[l>>2]|0)+((k[h>>2]|0)/8|0);k[h>>2]=0;if(!(ub[k[i+8>>2]&63](a)|0)){n=0;r=c;return n|0}i=a+340|0;if((k[i>>2]|0)>0){h=0;do{k[e+24+(h<<2)>>2]=0;h=h+1|0}while((h|0)<(k[i>>2]|0))}k[e+20>>2]=0;k[g>>2]=k[f>>2];if(!(k[a+440>>2]|0))k[e+40>>2]=0}k[d+16>>2]=a;f=a+24|0;g=k[f>>2]|0;i=k[g>>2]|0;k[d>>2]=i;h=k[g+4>>2]|0;l=d+4|0;k[l>>2]=h;o=e+12|0;p=k[o>>2]|0;q=e+16|0;s=k[q>>2]|0;t=1<<k[a+424>>2];u=a+368|0;do if((k[u>>2]|0)>0){a=d+8|0;v=d+12|0;w=s;x=0;y=p;while(1){if((w|0)<1){if(!(ro(d,y,w,1)|0)){n=0;z=18;break}A=k[v>>2]|0;B=k[a>>2]|0}else{A=w;B=y}C=A+-1|0;if(1<<C&B){D=k[b+(x<<2)>>2]|0;j[D>>1]=m[D>>1]|0|t}x=x+1|0;if((x|0)>=(k[u>>2]|0)){E=C;F=B;z=16;break}else{w=C;y=B}}if((z|0)==16){G=k[f>>2]|0;H=k[d>>2]|0;I=k[l>>2]|0;J=E;K=F;break}else if((z|0)==18){r=c;return n|0}}else{G=g;H=i;I=h;J=s;K=p}while(0);k[G>>2]=H;k[G+4>>2]=I;k[o>>2]=K;k[q>>2]=J;J=e+44|0;k[J>>2]=(k[J>>2]|0)+-1;n=1;r=c;return n|0}function no(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0;c=r;r=r+288|0;d=c;e=c+24|0;f=k[a+468>>2]|0;g=a+280|0;if((k[g>>2]|0)!=0?(h=f+44|0,(k[h>>2]|0)==0):0){i=f+16|0;m=k[a+464>>2]|0;n=m+24|0;k[n>>2]=(k[n>>2]|0)+((k[i>>2]|0)/8|0);k[i>>2]=0;if(!(ub[k[m+8>>2]&63](a)|0)){o=0;r=c;return o|0}m=a+340|0;if((k[m>>2]|0)>0){i=0;do{k[f+24+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[m>>2]|0))}k[f+20>>2]=0;k[h>>2]=k[g>>2];if(!(k[a+440>>2]|0))k[f+40>>2]=0}do if(!(k[f+40>>2]|0)){g=k[a+416>>2]|0;h=k[a+424>>2]|0;m=1<<h;i=-1<<h;h=k[a+432>>2]|0;k[d+16>>2]=a;n=a+24|0;p=k[n>>2]|0;k[d>>2]=k[p>>2];q=d+4|0;k[q>>2]=k[p+4>>2];p=f+12|0;s=k[p>>2]|0;t=f+16|0;u=k[t>>2]|0;v=f+20|0;w=k[v>>2]|0;x=k[b>>2]|0;y=k[f+64>>2]|0;z=k[a+412>>2]|0;A=d+8|0;B=d+12|0;a:do if(!w){C=u;D=s;E=z;F=0;b:while(1){if((C|0)<8){if(!(ro(d,D,C,0)|0)){G=F;break a}H=k[A>>2]|0;I=k[B>>2]|0;if((I|0)<8){J=I;K=H;L=1;M=17}else{N=I;O=H;M=15}}else{N=C;O=D;M=15}if((M|0)==15){M=0;H=O>>N+-8&255;I=k[y+144+(H<<2)>>2]|0;if(!I){J=N;K=O;L=9;M=17}else{P=N-I|0;Q=O;R=l[y+1168+H>>0]|0}}if((M|0)==17){M=0;H=so(d,K,J,y,L)|0;if((H|0)<0){G=F;break a}P=k[B>>2]|0;Q=k[A>>2]|0;R=H}H=R>>4;switch(R&15|0){case 0:{if((H|0)==15){S=P;T=Q;U=15;V=0}else{W=H;X=P;Y=Q;Z=E;_=F;break b}break}case 1:{M=21;break}default:{I=k[a>>2]|0;k[I+20>>2]=121;rb[k[I+4>>2]&31](a,-1);M=21}}if((M|0)==21){M=0;if((P|0)<1){if(!(ro(d,Q,P,1)|0)){G=F;break a}$=k[B>>2]|0;aa=k[A>>2]|0}else{$=P;aa=Q}I=$+-1|0;S=I;T=aa;U=H;V=(1<<I&aa|0)==0?i:m}I=S;H=T;ba=E;ca=U;c:while(1){da=x+(k[h+(ba<<2)>>2]<<1)|0;do if(!(j[da>>1]|0))if((ca|0)<1){ea=I;fa=H;ga=ba;break c}else{ha=I;ia=H;ja=ca+-1|0}else{if((I|0)<1){if(!(ro(d,H,I,1)|0)){G=F;break a}ka=k[B>>2]|0;la=k[A>>2]|0}else{ka=I;la=H}ma=ka+-1|0;if((1<<ma&la|0)!=0?(na=j[da>>1]|0,oa=na<<16>>16,(oa&m|0)==0):0)if(na<<16>>16>-1){j[da>>1]=oa+m;ha=ma;ia=la;ja=ca;break}else{j[da>>1]=oa+i;ha=ma;ia=la;ja=ca;break}else{ha=ma;ia=la;ja=ca}}while(0);da=ba+1|0;if((ba|0)<(g|0)){I=ha;H=ia;ba=da;ca=ja}else{ea=ha;fa=ia;ga=da;break}}if(!V)pa=F;else{ca=k[h+(ga<<2)>>2]|0;j[x+(ca<<1)>>1]=V;k[e+(F<<2)>>2]=ca;pa=F+1|0}if((ga|0)<(g|0)){C=ea;D=fa;E=ga+1|0;F=pa}else{qa=0;ra=ea;sa=fa;M=58;break a}}F=1<<W;if(W){if((X|0)<(W|0)){if(!(ro(d,Y,X,W)|0)){G=_;break}ta=k[B>>2]|0;ua=k[A>>2]|0}else{ta=X;ua=Y}E=ta-W|0;D=(ua>>E&k[122072+(W<<2)>>2])+F|0;if(!D){qa=0;ra=E;sa=ua;M=58}else{va=D;wa=E;xa=ua;ya=Z;za=_;M=46}}else{va=F;wa=X;xa=Y;ya=Z;za=_;M=46}}else{va=w;wa=u;xa=s;ya=z;za=0;M=46}while(0);d:do if((M|0)==46){z=wa;s=xa;u=ya;while(1){w=x+(k[h+(u<<2)>>2]<<1)|0;do if(j[w>>1]|0){if((z|0)<1){if(!(ro(d,s,z,1)|0)){G=za;break d}Aa=k[B>>2]|0;Ba=k[A>>2]|0}else{Aa=z;Ba=s}y=Aa+-1|0;if((1<<y&Ba|0)!=0?(F=j[w>>1]|0,E=F<<16>>16,(E&m|0)==0):0)if(F<<16>>16>-1){j[w>>1]=E+m;Ca=y;Da=Ba;break}else{j[w>>1]=E+i;Ca=y;Da=Ba;break}else{Ca=y;Da=Ba}}else{Ca=z;Da=s}while(0);if((u|0)<(g|0)){z=Ca;s=Da;u=u+1|0}else{Ea=Ca;Fa=Da;break}}qa=va+-1|0;ra=Ea;sa=Fa;M=58}while(0);if((M|0)==58){g=k[n>>2]|0;k[g>>2]=k[d>>2];k[g+4>>2]=k[q>>2];k[p>>2]=sa;k[t>>2]=ra;k[v>>2]=qa;break}if(!G){o=0;r=c;return o|0}else Ga=G;do{Ga=Ga+-1|0;j[x+(k[e+(Ga<<2)>>2]<<1)>>1]=0}while((Ga|0)!=0);o=0;r=c;return o|0}while(0);Ga=f+44|0;k[Ga>>2]=(k[Ga>>2]|0)+-1;o=1;r=c;return o|0}function oo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;e=r;r=r+1296|0;f=e+1028|0;g=e;if(c>>>0>3){h=k[a>>2]|0;k[h+20>>2]=52;k[h+24>>2]=c;qb[k[h>>2]&127](a)}h=(b|0)!=0;b=k[(h?a+180+(c<<2)|0:a+196+(c<<2)|0)>>2]|0;if(!b){j=k[a>>2]|0;k[j+20>>2]=52;k[j+24>>2]=c;qb[k[j>>2]&127](a)}j=k[d>>2]|0;if(!j){c=nb[k[k[a+4>>2]>>2]&63](a,1,1424)|0;k[d>>2]=c;m=a;n=c}else{m=a;n=j}k[n+140>>2]=b;j=1;c=0;while(1){d=i[b+j>>0]|0;o=d&255;p=o+c|0;if((p|0)>256){q=k[a>>2]|0;k[q+20>>2]=9;qb[k[q>>2]&127](m)}if(!(d<<24>>24))s=c;else{qr(f+c|0,j&255|0,o|0)|0;s=p}j=j+1|0;if((j|0)==17){t=s;break}else c=s}i[f+t>>0]=0;s=i[f>>0]|0;if(!(s<<24>>24)){u=1;v=0}else{c=s;j=0;p=0;o=s<<24>>24;while(1){if((c<<24>>24|0)==(o|0)){s=j;d=p;while(1){q=d+1|0;k[g+(d<<2)>>2]=s;w=s+1|0;x=i[f+q>>0]|0;if((x<<24>>24|0)==(o|0)){s=w;d=q}else{y=x;z=w;A=q;break}}}else{y=c;z=j;A=p}if((z|0)>=(1<<o|0)){d=k[a>>2]|0;k[d+20>>2]=9;qb[k[d>>2]&127](m)}if(!(y<<24>>24)){u=1;v=0;break}else{c=y;j=z<<1;p=A;o=o+1|0}}}while(1){o=b+u|0;if(!(i[o>>0]|0)){B=-1;C=v}else{k[n+72+(u<<2)>>2]=v-(k[g+(v<<2)>>2]|0);A=(l[o>>0]|0)+v|0;B=k[g+(A+-1<<2)>>2]|0;C=A}k[n+(u<<2)>>2]=B;u=u+1|0;if((u|0)==17)break;else v=C}k[n+68>>2]=1048575;qr(n+144|0,0,1024)|0;C=1;v=0;while(1){u=b+C|0;if(!(i[u>>0]|0))D=v;else{B=8-C|0;A=1<<B;o=1;p=v;while(1){z=b+17+p|0;j=A;y=k[g+(p<<2)>>2]<<B;while(1){k[n+144+(y<<2)>>2]=C;i[n+1168+y>>0]=i[z>>0]|0;if((j|0)>1){j=j+-1|0;y=y+1|0}else break}y=p+1|0;if((o|0)<(l[u>>0]|0)){o=o+1|0;p=y}else{D=y;break}}}C=C+1|0;if((C|0)==9)break;else v=D}if(h&(t|0)>0)E=0;else{r=e;return}do{if((l[b+17+E>>0]|0)>15){h=k[a>>2]|0;k[h+20>>2]=9;qb[k[h>>2]&127](m)}E=E+1|0}while((E|0)!=(t|0));r=e;return}function po(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0;c=r;r=r+48|0;d=c+20|0;e=c;f=k[a+468>>2]|0;g=a+280|0;if((k[g>>2]|0)!=0?(h=f+44|0,(k[h>>2]|0)==0):0){i=f+16|0;m=k[a+464>>2]|0;n=m+24|0;k[n>>2]=(k[n>>2]|0)+((k[i>>2]|0)/8|0);k[i>>2]=0;if(!(ub[k[m+8>>2]&63](a)|0)){o=0;r=c;return o|0}m=a+340|0;if((k[m>>2]|0)>0){i=0;do{k[f+24+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[m>>2]|0))}k[f+20>>2]=0;k[h>>2]=k[g>>2];if(!(k[a+440>>2]|0))k[f+40>>2]=0}if(!(k[f+40>>2]|0)){k[d+16>>2]=a;g=a+24|0;h=k[g>>2]|0;m=k[h>>2]|0;k[d>>2]=m;i=k[h+4>>2]|0;n=d+4|0;k[n>>2]=i;p=f+12|0;q=k[p>>2]|0;s=f+16|0;t=k[s>>2]|0;u=f+20|0;k[e>>2]=k[u>>2];k[e+4>>2]=k[u+4>>2];k[e+8>>2]=k[u+8>>2];k[e+12>>2]=k[u+12>>2];k[e+16>>2]=k[u+16>>2];v=a+368|0;do if((k[v>>2]|0)>0){w=d+8|0;x=d+12|0;y=t;z=0;A=q;a:while(1){B=k[b+(z<<2)>>2]|0;C=k[f+100+(z<<2)>>2]|0;if((y|0)<8){if(!(ro(d,A,y,0)|0)){o=0;D=64;break}E=k[w>>2]|0;F=k[x>>2]|0;if((F|0)<8){G=F;H=E;I=1;D=16}else{J=F;K=E;D=14}}else{J=y;K=A;D=14}if((D|0)==14){D=0;E=K>>J+-8&255;F=k[C+144+(E<<2)>>2]|0;if(!F){G=J;H=K;I=9;D=16}else{L=J-F|0;M=K;N=l[C+1168+E>>0]|0}}if((D|0)==16){D=0;E=so(d,H,G,C,I)|0;if((E|0)<0){o=0;D=64;break}L=k[x>>2]|0;M=k[w>>2]|0;N=E}E=k[f+140+(z<<2)>>2]|0;C=k[f+180+(z<<2)>>2]|0;F=(N|0)!=0;b:do if(!C)if(F){if((L|0)<(N|0)){if(!(ro(d,M,L,N)|0)){o=0;D=64;break a}O=k[x>>2]|0;P=k[w>>2]|0}else{O=L;P=M}Q=O-N|0;R=P;S=1;D=46}else{Q=L;R=M;S=1;D=46}else{if(F){if((L|0)<(N|0)){if(!(ro(d,M,L,N)|0)){o=0;D=64;break a}T=k[x>>2]|0;U=k[w>>2]|0}else{T=L;U=M}V=T-N|0;W=k[122072+(N<<2)>>2]|0;X=U>>V&W;Y=V;Z=U;_=X-((X|0)>(k[122072+(N+-1<<2)>>2]|0)?0:W)|0}else{Y=L;Z=M;_=0}W=e+4+(k[a+372+(z<<2)>>2]<<2)|0;X=(k[W>>2]|0)+_|0;k[W>>2]=X;j[B>>1]=X;if((C|0)>1){X=Y;W=Z;V=1;while(1){if((X|0)<8){if(!(ro(d,W,X,0)|0)){o=0;D=64;break a}$=k[w>>2]|0;aa=k[x>>2]|0;if((aa|0)<8){ba=aa;ca=$;da=1;D=30}else{ea=aa;fa=$;D=28}}else{ea=X;fa=W;D=28}if((D|0)==28){D=0;$=fa>>ea+-8&255;aa=k[E+144+($<<2)>>2]|0;if(!aa){ba=ea;ca=fa;da=9;D=30}else{ga=ea-aa|0;ha=fa;ia=l[E+1168+$>>0]|0}}if((D|0)==30){D=0;$=so(d,ca,ba,E,da)|0;if(($|0)<0){o=0;D=64;break a}ga=k[x>>2]|0;ha=k[w>>2]|0;ia=$}$=ia>>4;aa=ia&15;if(!aa){if(($|0)!=15){ja=ga;ka=ha;break b}la=ga;ma=ha;na=V+15|0}else{oa=$+V|0;if((ga|0)<(aa|0)){if(!(ro(d,ha,ga,aa)|0)){o=0;D=64;break a}pa=k[x>>2]|0;qa=k[w>>2]|0}else{pa=ga;qa=ha}$=pa-aa|0;ra=k[122072+(aa<<2)>>2]|0;sa=qa>>$&ra;j[B+(k[119984+(oa<<2)>>2]<<1)>>1]=sa-((sa|0)>(k[122072+(aa+-1<<2)>>2]|0)?0:ra);la=$;ma=qa;na=oa}oa=na+1|0;if((oa|0)<(C|0)){X=la;W=ma;V=oa}else{ta=oa;ua=la;va=ma;break}}if((ta|0)<64){Q=ua;R=va;S=ta;D=46}else{ja=ua;ka=va}}else{Q=Y;R=Z;S=1;D=46}}while(0);c:do if((D|0)==46)while(1){D=0;if((Q|0)<8){if(!(ro(d,R,Q,0)|0)){o=0;D=64;break a}C=k[w>>2]|0;B=k[x>>2]|0;if((B|0)<8){wa=B;xa=C;ya=1;D=51}else{za=B;Aa=C;D=49}}else{za=Q;Aa=R;D=49}if((D|0)==49){D=0;C=Aa>>za+-8&255;B=k[E+144+(C<<2)>>2]|0;if(!B){wa=za;xa=Aa;ya=9;D=51}else{Ba=za-B|0;Ca=Aa;Da=l[E+1168+C>>0]|0}}if((D|0)==51){D=0;C=so(d,xa,wa,E,ya)|0;if((C|0)<0){o=0;D=64;break a}Ba=k[x>>2]|0;Ca=k[w>>2]|0;Da=C}C=Da>>4;B=Da&15;if(!B)if((C|0)==15){Ea=15;Fa=Ba;Ga=Ca}else{ja=Ba;ka=Ca;break c}else{if((Ba|0)<(B|0)){if(!(ro(d,Ca,Ba,B)|0)){o=0;D=64;break a}Ha=k[x>>2]|0;Ia=k[w>>2]|0}else{Ha=Ba;Ia=Ca}Ea=C;Fa=Ha-B|0;Ga=Ia}S=S+1+Ea|0;if((S|0)>=64){ja=Fa;ka=Ga;break}else{Q=Fa;R=Ga;D=46}}while(0);z=z+1|0;if((z|0)>=(k[v>>2]|0)){Ja=ja;Ka=ka;D=61;break}else{y=ja;A=ka}}if((D|0)==61){La=k[g>>2]|0;Ma=k[d>>2]|0;Na=k[n>>2]|0;Oa=Ja;Pa=Ka;break}else if((D|0)==64){r=c;return o|0}}else{La=h;Ma=m;Na=i;Oa=t;Pa=q}while(0);k[La>>2]=Ma;k[La+4>>2]=Na;k[p>>2]=Pa;k[s>>2]=Oa;k[u>>2]=k[e>>2];k[u+4>>2]=k[e+4>>2];k[u+8>>2]=k[e+8>>2];k[u+12>>2]=k[e+12>>2];k[u+16>>2]=k[e+16>>2]}e=f+44|0;k[e>>2]=(k[e>>2]|0)+-1;o=1;r=c;return o|0}function qo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0;c=r;r=r+48|0;d=c+20|0;e=c;f=k[a+468>>2]|0;g=a+280|0;if((k[g>>2]|0)!=0?(h=f+44|0,(k[h>>2]|0)==0):0){i=f+16|0;m=k[a+464>>2]|0;n=m+24|0;k[n>>2]=(k[n>>2]|0)+((k[i>>2]|0)/8|0);k[i>>2]=0;if(!(ub[k[m+8>>2]&63](a)|0)){o=0;r=c;return o|0}m=a+340|0;if((k[m>>2]|0)>0){i=0;do{k[f+24+(i<<2)>>2]=0;i=i+1|0}while((i|0)<(k[m>>2]|0))}k[f+20>>2]=0;k[h>>2]=k[g>>2];if(!(k[a+440>>2]|0))k[f+40>>2]=0}if(!(k[f+40>>2]|0)){g=k[a+432>>2]|0;h=k[a+436>>2]|0;k[d+16>>2]=a;m=a+24|0;i=k[m>>2]|0;n=k[i>>2]|0;k[d>>2]=n;p=k[i+4>>2]|0;q=d+4|0;k[q>>2]=p;s=f+12|0;t=k[s>>2]|0;u=f+16|0;v=k[u>>2]|0;w=f+20|0;k[e>>2]=k[w>>2];k[e+4>>2]=k[w+4>>2];k[e+8>>2]=k[w+8>>2];k[e+12>>2]=k[w+12>>2];k[e+16>>2]=k[w+16>>2];x=a+368|0;do if((k[x>>2]|0)>0){y=d+8|0;z=d+12|0;A=v;B=0;C=t;a:while(1){D=k[b+(B<<2)>>2]|0;E=k[f+100+(B<<2)>>2]|0;if((A|0)<8){if(!(ro(d,C,A,0)|0)){o=0;F=64;break}G=k[y>>2]|0;H=k[z>>2]|0;if((H|0)<8){I=H;J=G;K=1;F=16}else{L=H;M=G;F=14}}else{L=A;M=C;F=14}if((F|0)==14){F=0;G=M>>L+-8&255;H=k[E+144+(G<<2)>>2]|0;if(!H){I=L;J=M;K=9;F=16}else{N=L-H|0;O=M;P=l[E+1168+G>>0]|0}}if((F|0)==16){F=0;G=so(d,J,I,E,K)|0;if((G|0)<0){o=0;F=64;break}N=k[z>>2]|0;O=k[y>>2]|0;P=G}G=k[f+140+(B<<2)>>2]|0;E=k[f+180+(B<<2)>>2]|0;H=(P|0)!=0;b:do if(!E)if(H){if((N|0)<(P|0)){if(!(ro(d,O,N,P)|0)){o=0;F=64;break a}Q=k[z>>2]|0;R=k[y>>2]|0}else{Q=N;R=O}S=Q-P|0;T=R;U=1;F=45}else{S=N;T=O;U=1;F=45}else{if(H){if((N|0)<(P|0)){if(!(ro(d,O,N,P)|0)){o=0;F=64;break a}V=k[z>>2]|0;W=k[y>>2]|0}else{V=N;W=O}X=V-P|0;Y=k[122072+(P<<2)>>2]|0;Z=W>>X&Y;_=X;$=W;aa=Z-((Z|0)>(k[122072+(P+-1<<2)>>2]|0)?0:Y)|0}else{_=N;$=O;aa=0}Y=e+4+(k[a+372+(B<<2)>>2]<<2)|0;Z=(k[Y>>2]|0)+aa|0;k[Y>>2]=Z;j[D>>1]=Z;if((E|0)>1){Z=_;Y=$;X=1;while(1){if((Z|0)<8){if(!(ro(d,Y,Z,0)|0)){o=0;F=64;break a}ba=k[y>>2]|0;ca=k[z>>2]|0;if((ca|0)<8){da=ca;ea=ba;fa=1;F=30}else{ga=ca;ha=ba;F=28}}else{ga=Z;ha=Y;F=28}if((F|0)==28){F=0;ba=ha>>ga+-8&255;ca=k[G+144+(ba<<2)>>2]|0;if(!ca){da=ga;ea=ha;fa=9;F=30}else{ia=ga-ca|0;ja=ha;ka=l[G+1168+ba>>0]|0}}if((F|0)==30){F=0;ba=so(d,ea,da,G,fa)|0;if((ba|0)<0){o=0;F=64;break a}ia=k[z>>2]|0;ja=k[y>>2]|0;ka=ba}ba=ka>>4;ca=ka&15;if(!ca){if((ba|0)!=15){la=ia;ma=ja;break b}na=ia;oa=ja;pa=X+15|0}else{qa=ba+X|0;if((ia|0)<(ca|0)){if(!(ro(d,ja,ia,ca)|0)){o=0;F=64;break a}ra=k[z>>2]|0;sa=k[y>>2]|0}else{ra=ia;sa=ja}ba=ra-ca|0;ta=k[122072+(ca<<2)>>2]|0;ua=sa>>ba&ta;j[D+(k[g+(qa<<2)>>2]<<1)>>1]=ua-((ua|0)>(k[122072+(ca+-1<<2)>>2]|0)?0:ta);na=ba;oa=sa;pa=qa}qa=pa+1|0;if((qa|0)<(E|0)){Z=na;Y=oa;X=qa}else{S=na;T=oa;U=qa;F=45;break}}}else{S=_;T=$;U=1;F=45}}while(0);c:do if((F|0)==45){F=0;if((U|0)>(h|0)){la=S;ma=T}else{E=S;D=T;H=U;while(1){if((E|0)<8){if(!(ro(d,D,E,0)|0)){o=0;F=64;break a}X=k[y>>2]|0;Y=k[z>>2]|0;if((Y|0)<8){va=Y;wa=X;xa=1;F=51}else{ya=Y;za=X;F=49}}else{ya=E;za=D;F=49}if((F|0)==49){F=0;X=za>>ya+-8&255;Y=k[G+144+(X<<2)>>2]|0;if(!Y){va=ya;wa=za;xa=9;F=51}else{Aa=ya-Y|0;Ba=za;Ca=l[G+1168+X>>0]|0}}if((F|0)==51){F=0;X=so(d,wa,va,G,xa)|0;if((X|0)<0){o=0;F=64;break a}Aa=k[z>>2]|0;Ba=k[y>>2]|0;Ca=X}X=Ca>>4;Y=Ca&15;if(!Y)if((X|0)==15){Da=15;Ea=Aa;Fa=Ba}else{la=Aa;ma=Ba;break c}else{if((Aa|0)<(Y|0)){if(!(ro(d,Ba,Aa,Y)|0)){o=0;F=64;break a}Ga=k[z>>2]|0;Ha=k[y>>2]|0}else{Ga=Aa;Ha=Ba}Da=X;Ea=Ga-Y|0;Fa=Ha}H=H+1+Da|0;if((H|0)>(h|0)){la=Ea;ma=Fa;break}else{E=Ea;D=Fa}}}}while(0);B=B+1|0;if((B|0)>=(k[x>>2]|0)){Ia=la;Ja=ma;F=61;break}else{A=la;C=ma}}if((F|0)==61){Ka=k[m>>2]|0;La=k[d>>2]|0;Ma=k[q>>2]|0;Na=Ia;Oa=Ja;break}else if((F|0)==64){r=c;return o|0}}else{Ka=i;La=n;Ma=p;Na=v;Oa=t}while(0);k[Ka>>2]=La;k[Ka+4>>2]=Ma;k[s>>2]=Oa;k[u>>2]=Na;k[w>>2]=k[e>>2];k[w+4>>2]=k[e+4>>2];k[w+8>>2]=k[e+8>>2];k[w+12>>2]=k[e+12>>2];k[w+16>>2]=k[e+16>>2]}e=f+44|0;k[e>>2]=(k[e>>2]|0)+-1;o=1;r=c;return o|0}function ro(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0;e=k[a>>2]|0;f=a+4|0;g=k[f>>2]|0;h=k[a+16>>2]|0;j=h+440|0;a:do if(!(k[j>>2]|0))if((c|0)<25){l=h+24|0;m=b;n=c;o=g;p=e;b:while(1){if(!o){if(!(ub[k[(k[l>>2]|0)+12>>2]&63](h)|0)){q=0;r=19;break}s=k[l>>2]|0;t=k[s+4>>2]|0;u=k[s>>2]|0}else{t=o;u=p}s=t+-1|0;v=u+1|0;w=i[u>>0]|0;x=w&255;c:do if(w<<24>>24==-1){y=s;z=v;while(1){if(!y){if(!(ub[k[(k[l>>2]|0)+12>>2]&63](h)|0)){q=0;r=19;break b}A=k[l>>2]|0;B=k[A+4>>2]|0;C=k[A>>2]|0}else{B=y;C=z}A=B+-1|0;D=C+1|0;E=i[C>>0]|0;switch(E<<24>>24){case 0:{F=A;G=255;H=D;break c;break}case -1:{y=A;z=D;break}default:{I=m;J=n;K=A;L=D;M=E;r=12;break b}}}}else{F=s;G=x;H=v}while(0);v=G|m<<8;x=n+8|0;if((x|0)<25){m=v;n=x;o=F;p=H}else{N=v;O=x;P=F;Q=H;break a}}if((r|0)==12){k[j>>2]=M&255;R=I;S=J;T=K;U=L;r=14;break}else if((r|0)==19)return q|0}else{N=b;O=c;P=g;Q=e}else{R=b;S=c;T=g;U=e;r=14}while(0);if((r|0)==14)if((S|0)<(d|0)){d=h+468|0;if(!(k[(k[d>>2]|0)+40>>2]|0)){r=k[h>>2]|0;k[r+20>>2]=120;rb[k[r+4>>2]&31](h,-1);k[(k[d>>2]|0)+40>>2]=1}N=R<<25-S;O=25;P=T;Q=U}else{N=R;O=S;P=T;Q=U}k[a>>2]=Q;k[f>>2]=P;k[a+8>>2]=N;k[a+12>>2]=O;q=1;return q|0}function so(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;do if((c|0)<(e|0))if(!(ro(a,b,c,e)|0)){f=-1;return f|0}else{g=k[a+8>>2]|0;h=k[a+12>>2]|0;break}else{g=b;h=c}while(0);c=h-e|0;h=g>>c&k[122072+(e<<2)>>2];b=a+8|0;i=a+12|0;a:do if((h|0)>(k[d+(e<<2)>>2]|0)){j=g;m=c;n=h;o=e;while(1){p=n<<1;if((m|0)<1){if(!(ro(a,j,m,1)|0)){f=-1;break}q=k[b>>2]|0;r=k[i>>2]|0}else{q=j;r=m}s=r+-1|0;t=q>>>s&1|p;p=o+1|0;if((t|0)>(k[d+(p<<2)>>2]|0)){j=q;m=s;n=t;o=p}else{u=q;v=s;w=t;x=p;break a}}return f|0}else{u=g;v=c;w=h;x=e}while(0);k[b>>2]=u;k[i>>2]=v;if((x|0)>16){v=k[a+16>>2]|0;a=k[v>>2]|0;k[a+20>>2]=121;rb[k[a+4>>2]&31](v,-1);f=0;return f|0}else{f=l[(k[d+72+(x<<2)>>2]|0)+w+((k[d+140>>2]|0)+17)>>0]|0;return f|0}return 0}function to(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;c=a+4|0;d=nb[k[k[c>>2]>>2]&63](a,1,80)|0;e=a+448|0;k[e>>2]=d;k[d>>2]=19;if(b){b=k[a>>2]|0;k[b+20>>2]=3;qb[k[b>>2]&127](a)}b=a+328|0;f=k[b>>2]|0;if(!(k[(k[a+476>>2]|0)+8>>2]|0)){g=a+36|0;h=g;i=k[g>>2]|0;j=f;l=f}else{if((f|0)<2){g=k[a>>2]|0;k[g+20>>2]=48;qb[k[g>>2]&127](a);m=k[b>>2]|0}else m=f;f=k[e>>2]|0;e=a+36|0;g=nb[k[k[c>>2]>>2]&63](a,1,k[e>>2]<<3)|0;n=f+56|0;k[n>>2]=g;o=k[e>>2]|0;p=f+60|0;k[p>>2]=g+(o<<2);if((o|0)>0){g=m+4|0;m=0;f=k[a+216>>2]|0;while(1){q=ha(k[f+40>>2]|0,k[f+12>>2]|0)|0;r=(q|0)/(k[b>>2]|0)|0;q=ha(r,g)|0;s=nb[k[k[c>>2]>>2]&63](a,1,q<<3)|0;k[(k[n>>2]|0)+(m<<2)>>2]=s+(r<<2);k[(k[p>>2]|0)+(m<<2)>>2]=s+(q+r<<2);m=m+1|0;r=k[e>>2]|0;if((m|0)>=(r|0)){t=r;break}else f=f+88|0}}else t=o;o=k[b>>2]|0;h=e;i=t;j=o;l=o+2|0}if((i|0)<=0)return;i=d+8|0;d=j;j=0;o=k[a+216>>2]|0;while(1){t=(ha(k[o+40>>2]|0,k[o+12>>2]|0)|0)/(d|0)|0;e=ha(k[o+36>>2]|0,k[o+28>>2]|0)|0;f=ha(t,l)|0;t=xb[k[(k[c>>2]|0)+8>>2]&63](a,1,e,f)|0;k[i+(j<<2)>>2]=t;t=j+1|0;if((t|0)>=(k[h>>2]|0))break;d=k[b>>2]|0;j=t;o=o+88|0}return}function uo(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;c=k[a+448>>2]|0;switch(b|0){case 0:{b=c+4|0;if(!(k[(k[a+476>>2]|0)+8>>2]|0))k[b>>2]=27;else{k[b>>2]=26;b=k[a+328>>2]|0;d=k[a+36>>2]|0;if((d|0)>0){e=c+56|0;f=c+60|0;g=b+2|0;h=b+-2|0;i=0;j=k[a+216>>2]|0;while(1){l=(ha(k[j+40>>2]|0,k[j+12>>2]|0)|0)/(b|0)|0;m=k[(k[e>>2]|0)+(i<<2)>>2]|0;n=k[(k[f>>2]|0)+(i<<2)>>2]|0;o=k[c+8+(i<<2)>>2]|0;p=ha(l,g)|0;if((p|0)>0){q=0;do{r=k[o+(q<<2)>>2]|0;k[n+(q<<2)>>2]=r;k[m+(q<<2)>>2]=r;q=q+1|0}while((q|0)!=(p|0))}p=l<<1;if((l|0)>0){q=ha(l,b)|0;r=ha(l,h)|0;s=0;do{t=s+q|0;u=s+r|0;k[n+(u<<2)>>2]=k[o+(t<<2)>>2];k[n+(t<<2)>>2]=k[o+(u<<2)>>2];s=s+1|0}while((s|0)<(p|0));p=0;do{k[m+(p-l<<2)>>2]=k[m>>2];p=p+1|0}while((p|0)!=(l|0))}i=i+1|0;if((i|0)==(d|0))break;else j=j+88|0}}k[c+64>>2]=0;k[c+68>>2]=0;k[c+76>>2]=0}k[c+48>>2]=0;k[c+52>>2]=0;return}case 2:{k[c+4>>2]=28;return}default:{c=k[a>>2]|0;k[c+20>>2]=3;qb[k[c>>2]&127](a);return}}}function vo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;e=a+448|0;f=k[e>>2]|0;g=f+48|0;do if(!(k[g>>2]|0))if(!(yb[k[(k[a+452>>2]|0)+12>>2]&127](a,k[f+56+(k[f+64>>2]<<2)>>2]|0)|0))return;else{k[g>>2]=1;h=f+76|0;k[h>>2]=(k[h>>2]|0)+1;break}while(0);h=f+68|0;switch(k[h>>2]|0){case 2:{i=f+52|0;j=f+72|0;ob[k[(k[a+456>>2]|0)+4>>2]&15](a,k[f+56+(k[f+64>>2]<<2)>>2]|0,i,k[j>>2]|0,b,c,d);if((k[i>>2]|0)>>>0<(k[j>>2]|0)>>>0)return;k[h>>2]=0;if((k[c>>2]|0)>>>0<d>>>0){l=i;m=j;n=9}else return;break}case 0:{l=f+52|0;m=f+72|0;n=9;break}case 1:{o=f+52|0;p=f+72|0;break}default:return}if((n|0)==9){k[l>>2]=0;n=k[a+328>>2]|0;k[m>>2]=n+-1;if((k[f+76>>2]|0)==(k[a+332>>2]|0)?(j=k[e>>2]|0,i=k[a+36>>2]|0,(i|0)>0):0){q=j+72|0;r=j+64|0;s=0;t=k[a+216>>2]|0;while(1){u=ha(k[t+40>>2]|0,k[t+12>>2]|0)|0;v=(u|0)/(n|0)|0;w=((k[t+48>>2]|0)>>>0)%(u>>>0)|0;x=(w|0)==0?u:w;if(!s)k[q>>2]=((x+-1|0)/(v|0)|0)+1;w=k[(k[j+56+(k[r>>2]<<2)>>2]|0)+(s<<2)>>2]|0;u=v<<1;if((v|0)>0){v=w+(x+-1<<2)|0;y=0;do{k[w+(y+x<<2)>>2]=k[v>>2];y=y+1|0}while((y|0)<(u|0))}s=s+1|0;if((s|0)==(i|0))break;else t=t+88|0}}k[h>>2]=1;o=l;p=m}m=f+64|0;ob[k[(k[a+456>>2]|0)+4>>2]&15](a,k[f+56+(k[m>>2]<<2)>>2]|0,o,k[p>>2]|0,b,c,d);if((k[o>>2]|0)>>>0<(k[p>>2]|0)>>>0)return;if((k[f+76>>2]|0)==1){f=k[e>>2]|0;e=k[a+328>>2]|0;d=k[a+36>>2]|0;if((d|0)>0){c=f+56|0;b=f+60|0;f=e+1|0;l=e+2|0;t=0;i=k[a+216>>2]|0;while(1){s=(ha(k[i+40>>2]|0,k[i+12>>2]|0)|0)/(e|0)|0;r=k[(k[c>>2]|0)+(t<<2)>>2]|0;j=k[(k[b>>2]|0)+(t<<2)>>2]|0;if((s|0)>0){q=ha(s,f)|0;n=ha(s,l)|0;u=0;do{y=u+q|0;v=u-s|0;k[r+(v<<2)>>2]=k[r+(y<<2)>>2];k[j+(v<<2)>>2]=k[j+(y<<2)>>2];y=u+n|0;k[r+(y<<2)>>2]=k[r+(u<<2)>>2];k[j+(y<<2)>>2]=k[j+(u<<2)>>2];u=u+1|0}while((u|0)!=(s|0))}t=t+1|0;if((t|0)==(d|0)){z=e;break}else i=i+88|0}}else z=e}else z=k[a+328>>2]|0;k[m>>2]=k[m>>2]^1;k[g>>2]=0;k[o>>2]=z+1;k[p>>2]=z+2;k[h>>2]=2;return}function wo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=k[a+448>>2]|0;f=e+48|0;do if(!(k[f>>2]|0)){g=e+8|0;if(!(yb[k[(k[a+452>>2]|0)+12>>2]&127](a,g)|0))return;else{k[f>>2]=1;h=g;break}}else h=e+8|0;while(0);g=k[a+328>>2]|0;i=e+52|0;ob[k[(k[a+456>>2]|0)+4>>2]&15](a,h,i,g,b,c,d);if((k[i>>2]|0)>>>0<g>>>0)return;k[f>>2]=0;k[i>>2]=0;return}function xo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ob[k[(k[a+456>>2]|0)+4>>2]&15](a,0,0,0,b,c,d);return}function yo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,p=0,q=0,r=0,s=0.0,t=0,u=0.0,v=0.0,w=0,x=0.0,y=0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0,F=0.0,G=0.0,H=0.0;d=c+7|0;e=c+1|0;f=c+6|0;g=c+2|0;h=c+5|0;i=c+3|0;j=c+4|0;m=0;n=a;while(1){p=k[b+(m<<2)>>2]|0;q=l[p+c>>0]|0;r=l[p+d>>0]|0;s=+(r+q|0);t=q-r|0;u=+(t|0);r=l[p+e>>0]|0;q=l[p+f>>0]|0;v=+(q+r|0);w=r-q|0;q=l[p+g>>0]|0;r=l[p+h>>0]|0;x=+(r+q|0);y=q-r|0;r=l[p+i>>0]|0;q=l[p+j>>0]|0;z=+(q+r|0);A=s+z;B=s-z;z=v+x;o[n>>2]=z+A+-1024.0;o[n+16>>2]=A-z;z=(v-x+B)*.7071067690849304;o[n+8>>2]=B+z;o[n+24>>2]=B-z;z=+(y+r-q|0);B=+(w+t|0);x=(z-B)*.3826834261417389;v=z*.5411961078643799+x;z=B*1.3065630197525024+x;x=+(y+w|0)*.7071067690849304;B=u+x;A=u-x;o[n+20>>2]=A+v;o[n+12>>2]=A-v;o[n+4>>2]=B+z;o[n+28>>2]=B-z;m=m+1|0;if((m|0)==8){C=7;D=a;break}else n=n+32|0}while(1){z=+o[D>>2];n=D+224|0;B=+o[n>>2];v=z+B;A=z-B;a=D+32|0;B=+o[a>>2];m=D+192|0;z=+o[m>>2];x=B+z;u=B-z;j=D+64|0;z=+o[j>>2];i=D+160|0;B=+o[i>>2];s=z+B;E=z-B;h=D+96|0;B=+o[h>>2];g=D+128|0;z=+o[g>>2];F=B+z;G=v+F;H=v-F;F=x+s;o[D>>2]=F+G;o[g>>2]=G-F;F=(x-s+H)*.7071067690849304;o[j>>2]=H+F;o[m>>2]=H-F;F=E+(B-z);z=A+u;B=(F-z)*.3826834261417389;H=F*.5411961078643799+B;F=z*1.3065630197525024+B;B=(u+E)*.7071067690849304;E=A+B;u=A-B;o[i>>2]=u+H;o[h>>2]=u-H;o[a>>2]=E+F;o[n>>2]=E-F;if((C|0)>0){C=C+-1|0;D=D+4|0}else break}return}function zo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=c+7|0;e=c+1|0;f=c+6|0;g=c+2|0;h=c+5|0;i=c+3|0;j=c+4|0;m=0;n=a;while(1){o=k[b+(m<<2)>>2]|0;p=l[o+c>>0]|0;q=l[o+d>>0]|0;r=q+p|0;s=p-q|0;q=l[o+e>>0]|0;p=l[o+f>>0]|0;t=p+q|0;u=q-p|0;p=l[o+g>>0]|0;q=l[o+h>>0]|0;v=q+p|0;w=p-q|0;q=l[o+i>>0]|0;p=l[o+j>>0]|0;o=p+q|0;x=o+r|0;y=r-o|0;o=v+t|0;k[n>>2]=(o|-1024)+x;k[n+16>>2]=x-o;o=(t-v+y|0)*181>>8;k[n+8>>2]=o+y;k[n+24>>2]=y-o;o=q-p+w|0;p=u+s|0;q=(o-p|0)*98>>8;y=q+(o*139>>8)|0;o=q+(p*334>>8)|0;p=(w+u|0)*181>>8;u=p+s|0;w=s-p|0;k[n+20>>2]=y+w;k[n+12>>2]=w-y;k[n+4>>2]=o+u;k[n+28>>2]=u-o;m=m+1|0;if((m|0)==8){z=7;A=a;break}else n=n+32|0}while(1){n=k[A>>2]|0;a=A+224|0;m=k[a>>2]|0;j=m+n|0;i=n-m|0;m=A+32|0;n=k[m>>2]|0;h=A+192|0;g=k[h>>2]|0;f=g+n|0;e=n-g|0;g=A+64|0;n=k[g>>2]|0;d=A+160|0;c=k[d>>2]|0;b=c+n|0;o=n-c|0;c=A+96|0;n=k[c>>2]|0;u=A+128|0;y=k[u>>2]|0;w=y+n|0;p=w+j|0;s=j-w|0;w=b+f|0;k[A>>2]=p+w;k[u>>2]=p-w;w=(f-b+s|0)*181>>8;k[g>>2]=w+s;k[h>>2]=s-w;w=n-y+o|0;y=e+i|0;n=(w-y|0)*98>>8;s=n+(w*139>>8)|0;w=n+(y*334>>8)|0;y=(o+e|0)*181>>8;e=y+i|0;o=i-y|0;k[d>>2]=s+o;k[c>>2]=o-s;k[m>>2]=w+e;k[a>>2]=e-w;if((z|0)>0){z=z+-1|0;A=A+4|0}else break}return}function Ao(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;d=c+7|0;e=c+1|0;f=c+6|0;g=c+2|0;h=c+5|0;i=c+3|0;j=c+4|0;m=0;n=a;while(1){o=k[b+(m<<2)>>2]|0;p=l[o+c>>0]|0;q=l[o+d>>0]|0;r=q+p|0;s=l[o+e>>0]|0;t=l[o+f>>0]|0;u=t+s|0;v=l[o+g>>0]|0;w=l[o+h>>0]|0;x=w+v|0;y=l[o+i>>0]|0;z=l[o+j>>0]|0;o=z+y|0;A=o+r|0;B=r-o|0;o=x+u|0;r=u-x|0;x=p-q|0;q=s-t|0;t=v-w|0;w=y-z|0;k[n>>2]=(A+o<<2)+-4096;k[n+16>>2]=A-o<<2;o=((B+r|0)*4433|0)+1024|0;k[n+8>>2]=o+(B*6270|0)>>11;B=o+(ha(r,-15137)|0)>>11;k[n+24>>2]=B;B=t+x|0;r=w+q|0;o=((r+B|0)*9633|0)+1024|0;A=o+(ha(B,-3196)|0)|0;B=o+(ha(r,-16069)|0)|0;r=ha(w+x|0,-7373)|0;o=ha(t+q|0,-20995)|0;k[n+4>>2]=r+(x*12299|0)+A>>11;k[n+12>>2]=o+(q*25172|0)+B>>11;k[n+20>>2]=o+(t*16819|0)+A>>11;k[n+28>>2]=r+(w*2446|0)+B>>11;m=m+1|0;if((m|0)==8){C=7;D=a;break}else n=n+32|0}while(1){n=k[D>>2]|0;a=D+224|0;m=k[a>>2]|0;j=m+n|0;i=D+32|0;h=k[i>>2]|0;g=D+192|0;f=k[g>>2]|0;e=f+h|0;d=D+64|0;c=k[d>>2]|0;b=D+160|0;B=k[b>>2]|0;w=B+c|0;r=D+96|0;A=k[r>>2]|0;t=D+128|0;o=k[t>>2]|0;q=o+A|0;x=j+2+q|0;z=j-q|0;q=w+e|0;j=e-w|0;w=n-m|0;m=h-f|0;f=c-B|0;B=A-o|0;k[D>>2]=x+q>>2;k[t>>2]=x-q>>2;q=((z+j|0)*4433|0)+16384|0;k[d>>2]=q+(z*6270|0)>>15;z=q+(ha(j,-15137)|0)>>15;k[g>>2]=z;z=f+w|0;g=B+m|0;j=((g+z|0)*9633|0)+16384|0;q=j+(ha(z,-3196)|0)|0;z=j+(ha(g,-16069)|0)|0;g=ha(B+w|0,-7373)|0;j=ha(f+m|0,-20995)|0;k[i>>2]=g+(w*12299|0)+q>>15;k[r>>2]=j+(m*25172|0)+z>>15;k[b>>2]=j+(f*16819|0)+q>>15;k[a>>2]=g+(B*2446|0)+z>>15;if((C|0)>0){C=C+-1|0;D=D+4|0}else break}return}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;qr(a|0,0,256)|0;d=c+6|0;e=c+1|0;f=c+5|0;g=c+2|0;h=c+4|0;i=c+3|0;j=0;m=a;while(1){n=k[b+(j<<2)>>2]|0;o=l[n+c>>0]|0;p=l[n+d>>0]|0;q=p+o|0;r=l[n+e>>0]|0;s=l[n+f>>0]|0;t=s+r|0;u=l[n+g>>0]|0;v=l[n+h>>0]|0;w=v+u|0;x=l[n+i>>0]|0;n=o-p|0;p=r-s|0;s=u-v|0;v=w+q|0;k[m>>2]=(x+t+v<<2)+-3584;u=((ha(x,-4)|0)+v|0)*2896|0;v=(q-w|0)*7542|0;r=(t-w|0)*2578|0;k[m+8>>2]=v+1024+r+u>>11;w=((q-t|0)*7223|0)+1024|0;q=w+r+(ha(t-(x<<1)|0,-5793)|0)>>11;k[m+16>>2]=q;k[m+24>>2]=w-v+u>>11;u=(p+n|0)*7663|0;v=(n-p|0)*1395|0;w=ha(s+p|0,-11295)|0;p=(s+n|0)*5027|0;k[m+4>>2]=1024-v+u+p>>11;k[m+12>>2]=v+1024+u+w>>11;k[m+20>>2]=(s*15326|0)+1024+p+w>>11;j=j+1|0;if((j|0)==7){y=0;z=a;break}else m=m+32|0}while(1){m=k[z>>2]|0;a=z+192|0;j=k[a>>2]|0;i=j+m|0;h=z+32|0;g=k[h>>2]|0;f=z+160|0;e=k[f>>2]|0;d=e+g|0;c=z+64|0;b=k[c>>2]|0;w=z+128|0;p=k[w>>2]|0;s=p+b|0;u=z+96|0;v=k[u>>2]|0;n=m-j|0;j=g-e|0;e=b-p|0;p=s+i|0;k[z>>2]=((v+d+p|0)*10700|0)+16384>>15;b=((ha(v,-4)|0)+p|0)*3783|0;p=(i-s|0)*9850|0;g=(d-s|0)*3367|0;k[c>>2]=p+16384+g+b>>15;c=((i-d|0)*9434|0)+16384|0;i=c+g+(ha(d-(v<<1)|0,-7566)|0)>>15;k[w>>2]=i;k[a>>2]=c-p+b>>15;b=(j+n|0)*10009|0;p=(n-j|0)*1822|0;c=ha(e+j|0,-14752)|0;j=(e+n|0)*6565|0;k[h>>2]=16384-p+b+j>>15;k[u>>2]=p+16384+b+c>>15;k[f>>2]=(e*20017|0)+16384+j+c>>15;y=y+1|0;if((y|0)==7)break;else z=z+4|0}return}function Co(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;qr(a|0,0,256)|0;d=c+5|0;e=c+1|0;f=c+4|0;g=c+2|0;h=c+3|0;i=0;j=a;while(1){m=k[b+(i<<2)>>2]|0;n=l[m+c>>0]|0;o=l[m+d>>0]|0;p=o+n|0;q=l[m+e>>0]|0;r=l[m+f>>0]|0;s=r+q|0;t=l[m+g>>0]|0;u=l[m+h>>0]|0;m=u+t|0;v=m+p|0;w=n-o|0;o=q-r|0;r=t-u|0;k[j>>2]=(v+s<<2)+-3072;k[j+8>>2]=((p-m|0)*10033|0)+1024>>11;m=(((ha(s,-2)|0)+v|0)*5793|0)+1024>>11;k[j+16>>2]=m;m=((r+w|0)*2998|0)+1024>>11;k[j+4>>2]=m+(o+w<<2);k[j+12>>2]=w-o-r<<2;k[j+20>>2]=m+(r-o<<2);i=i+1|0;if((i|0)==6){x=0;y=a;break}else j=j+32|0}while(1){j=k[y>>2]|0;a=y+160|0;i=k[a>>2]|0;h=i+j|0;g=y+32|0;f=k[g>>2]|0;e=y+128|0;d=k[e>>2]|0;c=d+f|0;b=y+64|0;o=k[b>>2]|0;r=y+96|0;m=k[r>>2]|0;w=m+o|0;v=w+h|0;s=j-i|0;i=f-d|0;d=o-m|0;k[y>>2]=((v+c|0)*14564|0)+16384>>15;k[b>>2]=((h-w|0)*17837|0)+16384>>15;w=(((ha(c,-2)|0)+v|0)*10298|0)+16384>>15;k[e>>2]=w;w=(d+s|0)*5331|0;k[g>>2]=((i+s|0)*14564|0)+16384+w>>15;k[r>>2]=((s-i-d|0)*14564|0)+16384>>15;k[a>>2]=((d-i|0)*14564|0)+16384+w>>15;x=x+1|0;if((x|0)==6)break;else y=y+4|0}return}function Do(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;qr(a|0,0,256)|0;d=c+4|0;e=c+1|0;f=c+3|0;g=c+2|0;h=0;i=a;while(1){j=k[b+(h<<2)>>2]|0;m=l[j+c>>0]|0;n=l[j+d>>0]|0;o=n+m|0;p=l[j+e>>0]|0;q=l[j+f>>0]|0;r=q+p|0;s=l[j+g>>0]|0;j=r+o|0;t=m-n|0;n=p-q|0;k[i>>2]=(j+s<<3)+-5120;q=(j-(s<<2)|0)*2896|0;s=((o-r|0)*6476|0)+512|0;k[i+8>>2]=s+q>>10;k[i+16>>2]=s-q>>10;q=(n+t|0)*6810|0;k[i+4>>2]=(t*4209|0)+512+q>>10;t=(ha(n,-17828)|0)+512+q>>10;k[i+12>>2]=t;h=h+1|0;if((h|0)==5){u=0;v=a;break}else i=i+32|0}while(1){i=k[v>>2]|0;a=v+128|0;h=k[a>>2]|0;g=h+i|0;f=v+32|0;e=k[f>>2]|0;d=v+96|0;c=k[d>>2]|0;b=c+e|0;t=v+64|0;q=k[t>>2]|0;n=b+g|0;s=i-h|0;h=e-c|0;k[v>>2]=((n+q|0)*10486|0)+16384>>15;c=(n-(q<<2)|0)*3707|0;q=((g-b|0)*8290|0)+16384|0;k[t>>2]=q+c>>15;k[a>>2]=q-c>>15;c=(h+s|0)*8716|0;k[f>>2]=(s*5387|0)+16384+c>>15;s=(ha(h,-22820)|0)+16384+c>>15;k[d>>2]=s;u=u+1|0;if((u|0)==5)break;else v=v+4|0}return}function Eo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0;qr(a|0,0,256)|0;d=c+3|0;e=c+1|0;f=c+2|0;g=k[b>>2]|0;h=l[g+c>>0]|0;i=l[g+d>>0]|0;j=i+h|0;m=l[g+e>>0]|0;n=l[g+f>>0]|0;g=n+m|0;o=h-i|0;i=m-n|0;k[a>>2]=(g+j<<4)+-8192;k[a+8>>2]=j-g<<4;g=((i+o|0)*4433|0)+256|0;j=a+4|0;k[j>>2]=g+(o*6270|0)>>9;o=g+(ha(i,-15137)|0)>>9;k[a+12>>2]=o;o=a+32|0;i=k[b+4>>2]|0;g=l[i+c>>0]|0;n=l[i+d>>0]|0;m=n+g|0;h=l[i+e>>0]|0;p=l[i+f>>0]|0;i=p+h|0;q=g-n|0;n=h-p|0;k[o>>2]=(i+m<<4)+-8192;k[a+40>>2]=m-i<<4;i=((n+q|0)*4433|0)+256|0;k[a+36>>2]=i+(q*6270|0)>>9;q=i+(ha(n,-15137)|0)>>9;k[a+44>>2]=q;q=k[b+8>>2]|0;n=l[q+c>>0]|0;i=l[q+d>>0]|0;m=i+n|0;p=l[q+e>>0]|0;h=l[q+f>>0]|0;q=h+p|0;g=n-i|0;i=p-h|0;h=(q+m<<4)+-8192|0;k[a+64>>2]=h;k[a+72>>2]=m-q<<4;q=((i+g|0)*4433|0)+256|0;m=q+(g*6270|0)>>9;k[a+68>>2]=m;g=q+(ha(i,-15137)|0)>>9;k[a+76>>2]=g;g=k[b+12>>2]|0;b=l[g+c>>0]|0;c=l[g+d>>0]|0;d=c+b|0;i=l[g+e>>0]|0;e=l[g+f>>0]|0;f=e+i|0;g=b-c|0;c=i-e|0;e=(f+d<<4)+-8192|0;i=d-f<<4;f=((c+g|0)*4433|0)+256|0;d=f+(g*6270|0)>>9;g=f+(ha(c,-15137)|0)>>9;k[a+108>>2]=g;c=k[a>>2]|0;f=c+2+e|0;b=k[o>>2]|0;q=h+b|0;p=c-e|0;e=b-h|0;k[a>>2]=q+f>>2;k[a+64>>2]=f-q>>2;q=((e+p|0)*4433|0)+16384|0;k[o>>2]=q+(p*6270|0)>>15;p=q+(ha(e,-15137)|0)>>15;k[a+96>>2]=p;p=k[j>>2]|0;e=p+2+d|0;q=a+36|0;o=k[q>>2]|0;f=m+o|0;h=p-d|0;d=o-m|0;k[j>>2]=f+e>>2;k[a+68>>2]=e-f>>2;f=((d+h|0)*4433|0)+16384|0;k[q>>2]=f+(h*6270|0)>>15;h=f+(ha(d,-15137)|0)>>15;k[a+100>>2]=h;h=a+8|0;d=k[h>>2]|0;f=d+2+i|0;q=a+40|0;e=k[q>>2]|0;j=a+72|0;m=k[j>>2]|0;o=m+e|0;p=d-i|0;i=e-m|0;k[h>>2]=o+f>>2;k[j>>2]=f-o>>2;o=((i+p|0)*4433|0)+16384|0;k[q>>2]=o+(p*6270|0)>>15;p=o+(ha(i,-15137)|0)>>15;k[a+104>>2]=p;p=a+12|0;i=k[p>>2]|0;o=i+2+g|0;q=a+44|0;f=k[q>>2]|0;j=a+76|0;h=k[j>>2]|0;m=h+f|0;e=i-g|0;g=f-h|0;k[p>>2]=m+o>>2;k[j>>2]=o-m>>2;m=((g+e|0)*4433|0)+16384|0;k[q>>2]=m+(e*6270|0)>>15;e=m+(ha(g,-15137)|0)>>15;k[a+108>>2]=e;return}function Fo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0;qr(a|0,0,256)|0;d=c+2|0;e=c+1|0;f=k[b>>2]|0;g=l[f+c>>0]|0;h=l[f+d>>0]|0;i=h+g|0;j=l[f+e>>0]|0;f=(i+j<<4)+-6144|0;k[a>>2]=f;m=(((ha(j,-2)|0)+i|0)*5793|0)+256>>9;k[a+8>>2]=m;m=((g-h|0)*10033|0)+256>>9;h=a+4|0;k[h>>2]=m;g=a+32|0;i=k[b+4>>2]|0;j=l[i+c>>0]|0;n=l[i+d>>0]|0;o=n+j|0;p=l[i+e>>0]|0;i=(o+p<<4)+-6144|0;k[g>>2]=i;q=(((ha(p,-2)|0)+o|0)*5793|0)+256>>9;k[a+40>>2]=q;o=((j-n|0)*10033|0)+256>>9;k[a+36>>2]=o;n=k[b+8>>2]|0;b=l[n+c>>0]|0;c=l[n+d>>0]|0;d=c+b|0;j=l[n+e>>0]|0;e=(d+j<<4)+-6144|0;n=(((ha(j,-2)|0)+d|0)*5793|0)+256>>9;d=((b-c|0)*10033|0)+256>>9;c=e+f|0;k[a>>2]=((c+i|0)*14564|0)+16384>>15;b=(((ha(i,-2)|0)+c|0)*10298|0)+16384>>15;k[a+64>>2]=b;k[g>>2]=((f-e|0)*17837|0)+16384>>15;e=d+m|0;k[h>>2]=((e+o|0)*14564|0)+16384>>15;h=(((ha(o,-2)|0)+e|0)*10298|0)+16384>>15;k[a+68>>2]=h;k[a+36>>2]=((m-d|0)*17837|0)+16384>>15;d=a+8|0;m=k[d>>2]|0;h=n+m|0;k[d>>2]=((h+q|0)*14564|0)+16384>>15;d=(((ha(q,-2)|0)+h|0)*10298|0)+16384>>15;k[a+72>>2]=d;k[a+40>>2]=((m-n|0)*17837|0)+16384>>15;return}function Go(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;qr(a|0,0,256)|0;d=k[b>>2]|0;e=l[d+c>>0]|0;f=c+1|0;g=l[d+f>>0]|0;d=g+e|0;h=e-g|0;g=k[b+4>>2]|0;b=l[g+c>>0]|0;c=l[g+f>>0]|0;f=c+b|0;g=b-c|0;k[a>>2]=(f+d<<4)+-8192;k[a+32>>2]=d-f<<4;k[a+4>>2]=g+h<<4;k[a+36>>2]=h-g<<4;return}function Ho(a,b,c){a=a|0;b=b|0;c=c|0;qr(a|0,0,256)|0;k[a>>2]=((l[(k[b>>2]|0)+c>>0]|0)<<6)+-8192;return}function Io(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=r;r=r+32|0;e=d;f=c+8|0;g=c+1|0;h=c+7|0;i=c+2|0;j=c+6|0;m=c+3|0;n=c+5|0;o=c+4|0;p=0;q=a;a:while(1){s=k[b+(p<<2)>>2]|0;t=l[s+c>>0]|0;u=l[s+f>>0]|0;v=u+t|0;w=l[s+g>>0]|0;x=l[s+h>>0]|0;y=x+w|0;z=l[s+i>>0]|0;A=l[s+j>>0]|0;B=A+z|0;C=l[s+m>>0]|0;D=l[s+n>>0]|0;E=D+C|0;F=l[s+o>>0]|0;s=t-u|0;u=z-A|0;A=C-D|0;D=B+v+E|0;C=F+y|0;k[q>>2]=(D+C<<1)+-2304;z=(((ha(C,-2)|0)+D|0)*5793|0)+2048>>12;k[q+24>>2]=z;z=((ha(F,-2)|0)+y|0)*5793|0;y=((v-B|0)*10887|0)+2048|0;k[q+8>>2]=y+((B-E|0)*8875|0)+z>>12;k[q+16>>2]=y+((E-v|0)*2012|0)-z>>12;k[q+12>>2]=((s-u-A|0)*10033|0)+2048>>12;z=(w-x|0)*10033|0;x=(u+s|0)*7447|0;w=(A+s|0)*3962|0;k[q+4>>2]=z+2048+x+w>>12;s=(u-A|0)*11409|0;A=2048-z|0;k[q+20>>2]=A+x-s>>12;k[q+28>>2]=A+w+s>>12;switch(p|0){case 7:{p=8;q=e;continue a;break}case 8:{G=7;H=a;I=e;break a;break}default:{}}p=p+1|0;q=q+32|0}while(1){q=k[H>>2]|0;p=k[I>>2]|0;e=p+q|0;a=H+32|0;o=k[a>>2]|0;n=H+224|0;m=k[n>>2]|0;j=m+o|0;i=H+64|0;h=k[i>>2]|0;g=H+192|0;f=k[g>>2]|0;c=f+h|0;b=H+96|0;s=k[b>>2]|0;w=H+160|0;A=k[w>>2]|0;x=A+s|0;z=H+128|0;u=k[z>>2]|0;v=q-p|0;p=h-f|0;f=s-A|0;A=c+e+x|0;s=u+j|0;k[H>>2]=((A+s|0)*12945|0)+16384>>15;h=(((ha(s,-2)|0)+A|0)*9154|0)+16384>>15;k[g>>2]=h;h=((ha(u,-2)|0)+j|0)*9154|0;j=((e-c|0)*17203|0)+16384|0;k[i>>2]=j+((c-x|0)*14024|0)+h>>15;k[z>>2]=j+((x-e|0)*3179|0)-h>>15;k[b>>2]=((v-p-f|0)*15855|0)+16384>>15;b=(o-m|0)*15855|0;m=(p+v|0)*11768|0;o=(f+v|0)*6262|0;k[a>>2]=b+16384+m+o>>15;a=(p-f|0)*18029|0;f=16384-b|0;k[w>>2]=f+m-a>>15;k[n>>2]=f+o+a>>15;if((G|0)>0){G=G+-1|0;H=H+4|0;I=I+4|0}else break}r=d;return}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;d=r;r=r+64|0;e=d;f=c+9|0;g=c+1|0;h=c+8|0;i=c+2|0;j=c+7|0;m=c+3|0;n=c+6|0;o=c+4|0;p=c+5|0;q=0;s=a;a:while(1){t=k[b+(q<<2)>>2]|0;u=l[t+c>>0]|0;v=l[t+f>>0]|0;w=v+u|0;x=l[t+g>>0]|0;y=l[t+h>>0]|0;z=y+x|0;A=l[t+i>>0]|0;B=l[t+j>>0]|0;C=B+A|0;D=l[t+m>>0]|0;E=l[t+n>>0]|0;F=E+D|0;G=l[t+o>>0]|0;H=l[t+p>>0]|0;t=H+G|0;I=t+w|0;J=w-t|0;t=F+z|0;w=z-F|0;F=u-v|0;v=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;k[s>>2]=(t+C+I<<1)+-2560;H=C<<1;C=(ha(t-H|0,-3580)|0)+2048+((I-H|0)*9373|0)>>12;k[s+16>>2]=C;C=(J+w|0)*6810|0;k[s+8>>2]=(J*4209|0)+2048+C>>12;J=(ha(w,-17828)|0)+2048+C>>12;k[s+24>>2]=J;J=E+F|0;C=v-B|0;k[s+20>>2]=J-(C+y)<<1;w=y<<13;k[s+4>>2]=(F*11443|0)+2048+(v*10323|0)+w+(B*5260|0)+(E*1812|0)>>12;y=(C<<12)-w+((J+C|0)*2531|0)|0;C=((F-E|0)*7791|0)+(ha(B+v|0,-4815)|0)+2048|0;k[s+12>>2]=C+y>>12;k[s+28>>2]=C-y>>12;switch(q|0){case 7:{q=8;s=e;continue a;break}case 9:{K=7;L=a;M=e;break a;break}default:{}}q=q+1|0;s=s+32|0}while(1){s=k[L>>2]|0;q=k[M+32>>2]|0;e=q+s|0;a=L+32|0;p=k[a>>2]|0;o=k[M>>2]|0;n=o+p|0;m=L+64|0;j=k[m>>2]|0;i=L+224|0;h=k[i>>2]|0;g=h+j|0;f=L+96|0;c=k[f>>2]|0;b=L+192|0;y=k[b>>2]|0;C=y+c|0;v=L+128|0;B=k[v>>2]|0;E=L+160|0;F=k[E>>2]|0;J=F+B|0;w=J+e|0;H=e-J|0;J=C+n|0;e=n-C|0;C=s-q|0;q=p-o|0;o=j-h|0;h=c-y|0;y=B-F|0;k[L>>2]=((J+g+w|0)*10486|0)+16384>>15;F=g<<1;g=(ha(J-F|0,-4582)|0)+16384+((w-F|0)*11997|0)>>15;k[v>>2]=g;g=(H+e|0)*8716|0;k[m>>2]=(H*5387|0)+16384+g>>15;H=(ha(e,-22820)|0)+16384+g>>15;k[b>>2]=H;H=y+C|0;b=q-h|0;k[E>>2]=((H-(b+o)|0)*10486|0)+16384>>15;E=o*10486|0;k[a>>2]=(C*14647|0)+16384+(q*13213|0)+E+(h*6732|0)+(y*2320|0)>>15;a=(b*5243|0)-E+((H+b|0)*3240|0)|0;b=((C-y|0)*9973|0)+(ha(h+q|0,-6163)|0)+16384|0;k[f>>2]=b+a>>15;k[i>>2]=b-a>>15;if((K|0)>0){K=K+-1|0;L=L+4|0;M=M+4|0}else break}r=d;return}function Ko(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;d=r;r=r+96|0;e=d;f=c+10|0;g=c+1|0;h=c+9|0;i=c+2|0;j=c+8|0;m=c+3|0;n=c+7|0;o=c+4|0;p=c+6|0;q=c+5|0;s=0;t=a;a:while(1){u=k[b+(s<<2)>>2]|0;v=l[u+c>>0]|0;w=l[u+f>>0]|0;x=w+v|0;y=l[u+g>>0]|0;z=l[u+h>>0]|0;A=z+y|0;B=l[u+i>>0]|0;C=l[u+j>>0]|0;D=C+B|0;E=l[u+m>>0]|0;F=l[u+n>>0]|0;G=F+E|0;H=l[u+o>>0]|0;I=l[u+p>>0]|0;J=I+H|0;K=l[u+q>>0]|0;u=v-w|0;w=y-z|0;z=B-C|0;C=E-F|0;F=H-I|0;k[t>>2]=(A+x+D+G+J+K<<1)+-2816;I=K<<1;K=x-I|0;x=A-I|0;A=D-I|0;D=G-I|0;G=J-I|0;I=((K+D|0)*11116|0)+((A+G|0)*1649|0)|0;J=(x-D|0)*7587|0;H=(K-x|0)*9746|0;E=(ha(D,-8342)|0)+2048+(ha(G,-11395)|0)+J+I>>12;k[t+8>>2]=E;E=(x*511|0)+2048+(ha(A,-11116)|0)+(G*4813|0)+H+J>>12;k[t+16>>2]=E;E=(ha(K,-13275)|0)+2048+(ha(A,-6461)|0)+H+I>>12;k[t+24>>2]=E;E=(w+u|0)*10538|0;I=(z+u|0)*8756|0;H=(C+u|0)*6263|0;A=ha(z+w|0,-6263)|0;K=ha(C+w|0,-11467)|0;J=ha(F,-8756)|0;G=(C+z|0)*3264|0;x=ha(z,-16294)|0;z=ha(F,-10538)|0;D=(ha(u,-14090)|0)+2048+E+I+H+(F*3264|0)>>12;k[t+4>>2]=D;k[t+12>>2]=(w*10456|0)+2048+E+A+K+J>>12;k[t+20>>2]=x+2048+A+I+G+(F*11467|0)>>12;k[t+28>>2]=(C*10695|0)+2048+G+K+H+z>>12;switch(s|0){case 7:{s=8;t=e;continue a;break}case 10:{L=7;M=a;N=e;break a;break}default:{}}s=s+1|0;t=t+32|0}while(1){t=k[M>>2]|0;s=k[N+64>>2]|0;e=s+t|0;a=M+32|0;q=k[a>>2]|0;p=k[N+32>>2]|0;o=p+q|0;n=M+64|0;m=k[n>>2]|0;j=k[N>>2]|0;i=j+m|0;h=M+96|0;g=k[h>>2]|0;f=M+224|0;c=k[f>>2]|0;b=c+g|0;z=M+128|0;H=k[z>>2]|0;K=M+192|0;G=k[K>>2]|0;C=G+H|0;F=M+160|0;I=k[F>>2]|0;A=t-s|0;s=q-p|0;p=m-j|0;j=g-c|0;c=H-G|0;k[M>>2]=((o+e+i+b+C+I|0)*8666|0)+16384>>15;G=I<<1;I=e-G|0;e=o-G|0;o=i-G|0;i=b-G|0;b=C-G|0;G=((I+i|0)*11759|0)+((o+b|0)*1744|0)|0;C=(e-i|0)*8026|0;H=(I-e|0)*10310|0;g=(ha(i,-8825)|0)+16384+(ha(b,-12054)|0)+C+G>>15;k[n>>2]=g;g=(e*540|0)+16384+(ha(o,-11759)|0)+(b*5091|0)+H+C>>15;k[z>>2]=g;g=(ha(I,-14043)|0)+16384+(ha(o,-6835)|0)+H+G>>15;k[K>>2]=g;g=(s+A|0)*11148|0;K=(p+A|0)*9262|0;G=(j+A|0)*6626|0;H=ha(p+s|0,-6626)|0;o=ha(j+s|0,-12131)|0;I=ha(c,-9262)|0;z=(j+p|0)*3453|0;C=ha(p,-17237)|0;p=ha(c,-11148)|0;b=(ha(A,-14905)|0)+16384+g+K+G+(c*3453|0)>>15;k[a>>2]=b;k[h>>2]=(s*11061|0)+16384+g+H+o+I>>15;k[F>>2]=C+16384+H+K+z+(c*12131|0)>>15;k[f>>2]=(j*11314|0)+16384+z+o+G+p>>15;if((L|0)>0){L=L+-1|0;M=M+4|0;N=N+4|0}else break}r=d;return}function Lo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;d=r;r=r+128|0;e=d;f=c+11|0;g=c+1|0;h=c+10|0;i=c+2|0;j=c+9|0;m=c+3|0;n=c+8|0;o=c+4|0;p=c+7|0;q=c+5|0;s=c+6|0;t=0;u=a;a:while(1){v=k[b+(t<<2)>>2]|0;w=l[v+c>>0]|0;x=l[v+f>>0]|0;y=x+w|0;z=l[v+g>>0]|0;A=l[v+h>>0]|0;B=A+z|0;C=l[v+i>>0]|0;D=l[v+j>>0]|0;E=D+C|0;F=l[v+m>>0]|0;G=l[v+n>>0]|0;H=G+F|0;I=l[v+o>>0]|0;J=l[v+p>>0]|0;K=J+I|0;L=l[v+q>>0]|0;M=l[v+s>>0]|0;v=M+L|0;N=v+y|0;O=y-v|0;v=B-K|0;y=H+E|0;P=E-H|0;H=w-x|0;x=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;J=L-M|0;k[u>>2]=(B|-1536)+y+K+N;k[u+24>>2]=O-(v+P);k[u+16>>2]=((N-y|0)*10033|0)+4096>>13;k[u+8>>2]=4096-P+v+((O+P|0)*11190|0)>>13;P=(G+x|0)*4433|0;O=P+(x*6270|0)|0;x=P+(ha(G,-15137)|0)|0;G=(A+H|0)*9191|0;P=(D+H|0)*7053|0;v=ha(D+A|0,-1512)|0;y=ha(A,-19165)|0;N=ha(J,-9191)|0;K=ha(J+A|0,-4433)|0;A=(ha(H,-4758)|0)+4096+G+P+O+(J*1512|0)>>13;k[u+4>>2]=A;k[u+12>>2]=((H-D|0)*10703|0)+4096+x+K>>13;k[u+20>>2]=y+4096+G+v-x+(J*7053|0)>>13;k[u+28>>2]=(D*5946|0)+4096+v+P-O+N>>13;switch(t|0){case 7:{t=8;u=e;continue a;break}case 11:{Q=7;R=a;S=e;break a;break}default:{}}t=t+1|0;u=u+32|0}while(1){u=k[R>>2]|0;t=k[S+96>>2]|0;e=t+u|0;a=R+32|0;s=k[a>>2]|0;q=k[S+64>>2]|0;p=q+s|0;o=R+64|0;n=k[o>>2]|0;m=k[S+32>>2]|0;j=m+n|0;i=R+96|0;h=k[i>>2]|0;g=k[S>>2]|0;f=g+h|0;c=R+128|0;b=k[c>>2]|0;N=R+224|0;O=k[N>>2]|0;P=O+b|0;v=R+160|0;D=k[v>>2]|0;J=R+192|0;x=k[J>>2]|0;G=x+D|0;y=G+e|0;K=e-G|0;G=p-P|0;e=f+j|0;H=j-f|0;f=u-t|0;t=s-q|0;q=n-m|0;m=h-g|0;g=b-O|0;O=D-x|0;k[R>>2]=((e+p+P+y|0)*7282|0)+8192>>14;k[J>>2]=((K-(G+H)|0)*7282|0)+8192>>14;k[c>>2]=((y-e|0)*8918|0)+8192>>14;k[o>>2]=((G-H|0)*7282|0)+8192+((K+H|0)*9947|0)>>14;H=(g+t|0)*3941|0;K=H+(t*5573|0)|0;t=H+(ha(g,-13455)|0)|0;g=(q+f|0)*8170|0;H=(m+f|0)*6269|0;G=ha(m+q|0,-1344)|0;o=ha(q,-17036)|0;e=ha(O,-8170)|0;y=ha(O+q|0,-3941)|0;q=(ha(f,-4229)|0)+8192+g+H+K+(O*1344|0)>>14;k[a>>2]=q;k[i>>2]=((f-m|0)*9514|0)+8192+t+y>>14;k[v>>2]=o+8192+g+G-t+(O*6269|0)>>14;k[N>>2]=(m*5285|0)+8192+G+H-K+e>>14;if((Q|0)>0){Q=Q+-1|0;R=R+4|0;S=S+4|0}else break}r=d;return}function Mo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;d=r;r=r+160|0;e=d;f=c+12|0;g=c+1|0;h=c+11|0;i=c+2|0;j=c+10|0;m=c+3|0;n=c+9|0;o=c+4|0;p=c+8|0;q=c+5|0;s=c+7|0;t=c+6|0;u=0;v=a;a:while(1){w=k[b+(u<<2)>>2]|0;x=l[w+c>>0]|0;y=l[w+f>>0]|0;z=y+x|0;A=l[w+g>>0]|0;B=l[w+h>>0]|0;C=B+A|0;D=l[w+i>>0]|0;E=l[w+j>>0]|0;F=E+D|0;G=l[w+m>>0]|0;H=l[w+n>>0]|0;I=H+G|0;J=l[w+o>>0]|0;K=l[w+p>>0]|0;L=K+J|0;M=l[w+q>>0]|0;N=l[w+s>>0]|0;O=N+M|0;P=l[w+t>>0]|0;w=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;k[v>>2]=z+-1664+C+F+I+L+O+P;N=P<<1;P=z-N|0;z=C-N|0;C=F-N|0;F=I-N|0;I=L-N|0;L=O-N|0;N=(z*8672|0)+4096+(P*11249|0)+(C*4108|0)+(ha(F,-1396)|0)+(ha(I,-6581)|0)+(ha(L,-10258)|0)>>13;k[v+8>>2]=N;N=((P-C|0)*9465|0)+(ha(F-I|0,-3570)|0)+(ha(z-L|0,-2592)|0)|0;O=((P+C|0)*793|0)+(ha(F+I|0,-7678)|0)+((z+L|0)*3989|0)|0;k[v+16>>2]=O+4096+N>>13;k[v+24>>2]=4096-O+N>>13;N=(y+w|0)*10832|0;O=(B+w|0)*9534|0;L=((K+H|0)*2773|0)+((E+w|0)*7682|0)|0;z=((H-K|0)*7682|0)+(ha(B+y|0,-2773)|0)|0;I=ha(E+y|0,-9534)|0;F=ha(H,-19183)|0;C=ha(E+B|0,-5384)|0;P=ha(B,-12879)|0;B=ha(K,-14273)|0;M=(ha(w,-16549)|0)+4096+N+O+(H*2611|0)+L>>13;k[v+4>>2]=M;k[v+12>>2]=(y*6859|0)+4096+N+I+F+z>>13;k[v+20>>2]=P+4096+O+C+(K*18515|0)+z>>13;k[v+28>>2]=(E*18068|0)+4096+C+I+B+L>>13;switch(u|0){case 7:{u=8;v=e;continue a;break}case 12:{Q=7;R=a;S=e;break a;break}default:{}}u=u+1|0;v=v+32|0}while(1){v=k[R>>2]|0;u=k[S+128>>2]|0;e=u+v|0;a=R+32|0;t=k[a>>2]|0;s=k[S+96>>2]|0;q=s+t|0;p=R+64|0;o=k[p>>2]|0;n=k[S+64>>2]|0;m=n+o|0;j=R+96|0;i=k[j>>2]|0;h=k[S+32>>2]|0;g=h+i|0;f=R+128|0;c=k[f>>2]|0;b=k[S>>2]|0;L=b+c|0;B=R+160|0;I=k[B>>2]|0;C=R+224|0;E=k[C>>2]|0;z=E+I|0;K=R+192|0;O=k[K>>2]|0;P=v-u|0;u=t-s|0;s=o-n|0;n=i-h|0;h=c-b|0;b=I-E|0;k[R>>2]=((q+e+m+g+L+z+O|0)*6205|0)+8192>>14;E=O<<1;O=e-E|0;e=q-E|0;q=m-E|0;m=g-E|0;g=L-E|0;L=z-E|0;E=(e*6568|0)+8192+(O*8520|0)+(q*3112|0)+(ha(m,-1058)|0)+(ha(g,-4985)|0)+(ha(L,-7770)|0)>>14;k[p>>2]=E;E=((O-q|0)*7169|0)+(ha(m-g|0,-2704)|0)+(ha(e-L|0,-1963)|0)|0;p=((O+q|0)*601|0)+(ha(m+g|0,-5816)|0)+((e+L|0)*3021|0)|0;k[f>>2]=p+8192+E>>14;k[K>>2]=8192-p+E>>14;E=(u+P|0)*8204|0;p=(s+P|0)*7221|0;K=((b+h|0)*2100|0)+((n+P|0)*5819|0)|0;f=((h-b|0)*5819|0)+(ha(s+u|0,-2100)|0)|0;L=ha(n+u|0,-7221)|0;e=ha(h,-14529)|0;g=ha(n+s|0,-4078)|0;m=ha(s,-9754)|0;s=ha(b,-10811)|0;q=(ha(P,-12534)|0)+8192+E+p+(h*1978|0)+K>>14;k[a>>2]=q;k[j>>2]=(u*5195|0)+8192+E+L+e+f>>14;k[B>>2]=m+8192+p+g+(b*14023|0)+f>>14;k[C>>2]=(n*13685|0)+8192+g+L+s+K>>14;if((Q|0)>0){Q=Q+-1|0;R=R+4|0;S=S+4|0}else break}r=d;return}function No(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;d=r;r=r+192|0;e=d;f=c+13|0;g=c+1|0;h=c+12|0;i=c+2|0;j=c+11|0;m=c+3|0;n=c+10|0;o=c+4|0;p=c+9|0;q=c+5|0;s=c+8|0;t=c+6|0;u=c+7|0;v=0;w=a;a:while(1){x=k[b+(v<<2)>>2]|0;y=l[x+c>>0]|0;z=l[x+f>>0]|0;A=z+y|0;B=l[x+g>>0]|0;C=l[x+h>>0]|0;D=C+B|0;E=l[x+i>>0]|0;F=l[x+j>>0]|0;G=F+E|0;H=l[x+m>>0]|0;I=l[x+n>>0]|0;J=I+H|0;K=l[x+o>>0]|0;L=l[x+p>>0]|0;M=L+K|0;N=l[x+q>>0]|0;O=l[x+s>>0]|0;P=O+N|0;Q=l[x+t>>0]|0;R=l[x+u>>0]|0;x=R+Q|0;S=x+A|0;T=A-x|0;x=P+D|0;A=D-P|0;P=M+G|0;D=G-M|0;M=y-z|0;z=B-C|0;C=E-F|0;F=H-I|0;I=K-L|0;L=N-O|0;O=Q-R|0;k[w>>2]=J+-1792+P+x+S;R=J<<1;J=(ha(P-R|0,-7223)|0)+4096+((x-R|0)*2578|0)+((S-R|0)*10438|0)>>13;k[w+16>>2]=J;J=(T+A|0)*9058|0;k[w+8>>2]=(D*5027|0)+4096+(T*2237|0)+J>>13;T=(ha(D,-11295)|0)+4096+(ha(A,-14084)|0)+J>>13;k[w+24>>2]=T;T=C+z|0;J=L-I|0;k[w+28>>2]=M-T+F-J-O;A=F<<13;F=(J*11512|0)-A+(ha(T,-1297)|0)|0;T=((O+I|0)*6164|0)+((C+M|0)*9810|0)|0;J=(ha(C,-19447)|0)+4096+(I*9175|0)+F+T>>13;k[w+20>>2]=J;J=((L-O|0)*3826|0)+((z+M|0)*10935|0)|0;I=(ha(z,-3474)|0)+4096+(ha(L,-25148)|0)+F+J>>13;k[w+12>>2]=I;I=(A|4096)+O+(ha(O+M|0,-9232)|0)+J+T>>13;k[w+4>>2]=I;switch(v|0){case 7:{v=8;w=e;continue a;break}case 13:{U=7;V=a;W=e;break a;break}default:{}}v=v+1|0;w=w+32|0}while(1){w=k[V>>2]|0;v=k[W+160>>2]|0;e=v+w|0;a=V+32|0;u=k[a>>2]|0;t=k[W+128>>2]|0;s=t+u|0;q=V+64|0;p=k[q>>2]|0;o=k[W+96>>2]|0;n=o+p|0;m=V+96|0;j=k[m>>2]|0;i=k[W+64>>2]|0;h=i+j|0;g=V+128|0;f=k[g>>2]|0;c=k[W+32>>2]|0;b=c+f|0;I=V+160|0;T=k[I>>2]|0;J=k[W>>2]|0;M=J+T|0;O=V+192|0;A=k[O>>2]|0;F=V+224|0;L=k[F>>2]|0;z=L+A|0;C=z+e|0;D=e-z|0;z=M+s|0;e=s-M|0;M=b+n|0;s=n-b|0;b=w-v|0;v=u-t|0;t=p-o|0;o=j-i|0;i=f-c|0;c=T-J|0;J=A-L|0;k[V>>2]=((M+h+z+C|0)*5350|0)+8192>>14;L=h<<1;h=(ha(M-L|0,-4717)|0)+8192+((z-L|0)*1684|0)+((C-L|0)*6817|0)>>14;k[g>>2]=h;h=(D+e|0)*5915|0;k[q>>2]=(s*3283|0)+8192+(D*1461|0)+h>>14;D=(ha(s,-7376)|0)+8192+(ha(e,-9198)|0)+h>>14;k[O>>2]=D;D=t+v|0;O=c-i|0;k[F>>2]=((b-D+o-O-J|0)*5350|0)+8192>>14;F=o*5350|0;o=(O*7518|0)-F+(ha(D,-847)|0)|0;D=((J+i|0)*4025|0)+((t+b|0)*6406|0)|0;O=(ha(t,-12700)|0)+8192+(i*5992|0)+o+D>>14;k[I>>2]=O;O=((c-J|0)*2499|0)+((v+b|0)*7141|0)|0;I=(ha(v,-2269)|0)+8192+(ha(c,-16423)|0)+o+O>>14;k[m>>2]=I;I=(ha(b,-6029)|0)+8192+F+(ha(J,-679)|0)+O+D>>14;k[a>>2]=I;if((U|0)>0){U=U+-1|0;V=V+4|0;W=W+4|0}else break}r=d;return}function Oo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;d=r;r=r+224|0;e=d;f=c+14|0;g=c+1|0;h=c+13|0;i=c+2|0;j=c+12|0;m=c+3|0;n=c+11|0;o=c+4|0;p=c+10|0;q=c+5|0;s=c+9|0;t=c+6|0;u=c+8|0;v=c+7|0;w=0;x=a;a:while(1){y=k[b+(w<<2)>>2]|0;z=l[y+c>>0]|0;A=l[y+f>>0]|0;B=A+z|0;C=l[y+g>>0]|0;D=l[y+h>>0]|0;E=D+C|0;F=l[y+i>>0]|0;G=l[y+j>>0]|0;H=G+F|0;I=l[y+m>>0]|0;J=l[y+n>>0]|0;K=J+I|0;L=l[y+o>>0]|0;M=l[y+p>>0]|0;N=M+L|0;O=l[y+q>>0]|0;P=l[y+s>>0]|0;Q=P+O|0;R=l[y+t>>0]|0;S=l[y+u>>0]|0;T=S+R|0;U=l[y+v>>0]|0;y=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;J=L-M|0;M=O-P|0;P=R-S|0;S=N+B+Q|0;R=K+E+T|0;O=U+H|0;k[x>>2]=S+-1920+R+O;L=O<<1;O=(ha(R-L|0,-3580)|0)+4096+((S-L|0)*9373|0)>>13;k[x+24>>2]=O;O=((N+E|0)>>>1)+H+(ha(U,-2)|0)|0;U=ha(B-O|0,-748)|0;H=((E-N|0)*6476|0)+((B-K|0)*11332|0)+((T-Q|0)*7752|0)+4096|0;B=H+(ha(T-O|0,-18336)|0)+((K-O|0)*12543|0)>>13;k[x+8>>2]=B;k[x+16>>2]=H+U+((Q-O|0)*6541|0)>>13;O=D*10033|0;Q=((M+G|0)*4712|0)+((J+A|0)*11018|0)+((y-P|0)*11522|0)|0;U=ha(y,-2912)|0;H=ha(M,-7121)|0;B=O+4096+(G*3897|0)+(ha(J,-4209)|0)+(P*13930|0)+Q>>13;k[x+4>>2]=B;k[x+12>>2]=((y-J-M|0)*11018|0)+4096+((A-G-P|0)*6810|0)>>13;k[x+20>>2]=((y-D-G+M+P|0)*10033|0)+4096>>13;P=U+4096+(ha(A,-17828)|0)-O+H+Q>>13;k[x+28>>2]=P;switch(w|0){case 7:{w=8;x=e;continue a;break}case 14:{V=7;W=a;X=e;break a;break}default:{}}w=w+1|0;x=x+32|0}while(1){x=k[W>>2]|0;w=k[X+192>>2]|0;e=w+x|0;a=W+32|0;v=k[a>>2]|0;u=k[X+160>>2]|0;t=u+v|0;s=W+64|0;q=k[s>>2]|0;p=k[X+128>>2]|0;o=p+q|0;n=W+96|0;m=k[n>>2]|0;j=k[X+96>>2]|0;i=j+m|0;h=W+128|0;g=k[h>>2]|0;f=k[X+64>>2]|0;c=f+g|0;b=W+160|0;P=k[b>>2]|0;Q=k[X+32>>2]|0;H=Q+P|0;O=W+192|0;A=k[O>>2]|0;U=k[X>>2]|0;M=U+A|0;G=W+224|0;D=k[G>>2]|0;y=x-w|0;w=v-u|0;u=q-p|0;p=m-j|0;j=g-f|0;f=P-Q|0;Q=A-U|0;U=c+e+H|0;A=i+t+M|0;P=D+o|0;k[W>>2]=((A+U+P|0)*9321|0)+16384>>15;g=P<<1;P=(ha(A-g|0,-4073)|0)+16384+((U-g|0)*10664|0)>>15;k[O>>2]=P;P=(c+t>>1)+o+(ha(D,-2)|0)|0;D=ha(e-P|0,-852)|0;o=((t-c|0)*7369|0)+((e-i|0)*12893|0)+((M-H|0)*8820|0)+16384|0;e=o+(ha(M-P|0,-20862)|0)+((i-P|0)*14271|0)>>15;k[s>>2]=e;k[h>>2]=o+D+((H-P|0)*7442|0)>>15;P=u*11415|0;H=((f+p|0)*5361|0)+((j+w|0)*12536|0)+((y-Q|0)*13109|0)|0;D=ha(y,-3314)|0;o=ha(f,-8102)|0;h=P+16384+(p*4434|0)+(ha(j,-4788)|0)+(Q*15850|0)+H>>15;k[a>>2]=h;k[n>>2]=((y-j-f|0)*12536|0)+16384+((w-p-Q|0)*7748|0)>>15;k[b>>2]=((y-u-p+f+Q|0)*11415|0)+16384>>15;Q=D+16384+(ha(w,-20284)|0)-P+o+H>>15;k[G>>2]=Q;if((V|0)>0){V=V+-1|0;W=W+4|0;X=X+4|0}else break}r=d;return}function Po(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;d=r;r=r+256|0;e=d;f=c+15|0;g=c+1|0;h=c+14|0;i=c+2|0;j=c+13|0;m=c+3|0;n=c+12|0;o=c+4|0;p=c+11|0;q=c+5|0;s=c+10|0;t=c+6|0;u=c+9|0;v=c+7|0;w=c+8|0;x=0;y=a;a:while(1){z=k[b+(x<<2)>>2]|0;A=l[z+c>>0]|0;B=l[z+f>>0]|0;C=B+A|0;D=l[z+g>>0]|0;E=l[z+h>>0]|0;F=E+D|0;G=l[z+i>>0]|0;H=l[z+j>>0]|0;I=H+G|0;J=l[z+m>>0]|0;K=l[z+n>>0]|0;L=K+J|0;M=l[z+o>>0]|0;N=l[z+p>>0]|0;O=N+M|0;P=l[z+q>>0]|0;Q=l[z+s>>0]|0;R=Q+P|0;S=l[z+t>>0]|0;T=l[z+u>>0]|0;U=T+S|0;V=l[z+v>>0]|0;W=l[z+w>>0]|0;z=W+V|0;X=z+C|0;Y=C-z|0;z=U+F|0;C=F-U|0;U=R+I|0;F=I-R|0;R=O+L|0;I=L-O|0;O=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;N=P-Q|0;Q=S-T|0;T=V-W|0;k[y>>2]=(U+R+z+X<<2)+-8192;k[y+16>>2]=((z-U|0)*4433|0)+1024+((X-R|0)*10703|0)>>11;R=((Y-F|0)*11363|0)+((I-C|0)*2260|0)|0;k[y+8>>2]=(F*17799|0)+1024+(C*11893|0)+R>>11;C=(ha(I,-8697)|0)+1024+(ha(Y,-1730)|0)+R>>11;k[y+24>>2]=C;C=((Q-T|0)*3363|0)+((B+O|0)*11086|0)|0;R=((T+N|0)*5461|0)+((E+O|0)*10217|0)|0;Y=((K-T|0)*7350|0)+((H+O|0)*8956|0)|0;I=((Q-N|0)*11529|0)+((E+B|0)*1136|0)|0;F=(ha(Q+K|0,-10217)|0)+(ha(H+B|0,-5461)|0)|0;X=((N-K|0)*3363|0)+(ha(H+E|0,-11086)|0)|0;U=ha(Q,-13631)|0;Q=ha(E,-9222)|0;E=(ha(O,-18730)|0)+1024+(T*6387|0)+R+C+Y>>11;k[y+4>>2]=E;k[y+12>>2]=(B*589|0)+1024+U+F+I+C>>11;k[y+20>>2]=Q+1024+(N*10055|0)+X+I+R>>11;k[y+28>>2]=(H*8728|0)+1024+(K*17760|0)+X+F+Y>>11;switch(x|0){case 7:{x=8;y=e;continue a;break}case 15:{Z=7;_=a;$=e;break a;break}default:{}}x=x+1|0;y=y+32|0}while(1){y=k[_>>2]|0;x=k[$+224>>2]|0;e=x+y|0;a=_+32|0;w=k[a>>2]|0;v=k[$+192>>2]|0;u=v+w|0;t=_+64|0;s=k[t>>2]|0;q=k[$+160>>2]|0;p=q+s|0;o=_+96|0;n=k[o>>2]|0;m=k[$+128>>2]|0;j=m+n|0;i=_+128|0;h=k[i>>2]|0;g=k[$+96>>2]|0;f=g+h|0;c=_+160|0;b=k[c>>2]|0;Y=k[$+64>>2]|0;F=Y+b|0;X=_+192|0;K=k[X>>2]|0;H=k[$+32>>2]|0;R=H+K|0;I=_+224|0;N=k[I>>2]|0;Q=k[$>>2]|0;C=Q+N|0;U=C+e|0;B=e-C|0;C=R+u|0;e=u-R|0;R=F+p|0;u=p-F|0;F=f+j|0;p=j-f|0;f=y-x|0;x=w-v|0;v=s-q|0;q=n-m|0;m=h-g|0;g=b-Y|0;Y=K-H|0;H=N-Q|0;k[_>>2]=F+8+R+C+U>>4;k[i>>2]=((C-R|0)*4433|0)+65536+((U-F|0)*10703|0)>>17;F=((B-u|0)*11363|0)+((p-e|0)*2260|0)|0;k[t>>2]=(u*17799|0)+65536+(e*11893|0)+F>>17;e=(ha(p,-8697)|0)+65536+(ha(B,-1730)|0)+F>>17;k[X>>2]=e;e=((Y-H|0)*3363|0)+((x+f|0)*11086|0)|0;X=((H+g|0)*5461|0)+((v+f|0)*10217|0)|0;F=((m-H|0)*7350|0)+((q+f|0)*8956|0)|0;B=((Y-g|0)*11529|0)+((v+x|0)*1136|0)|0;p=(ha(Y+m|0,-10217)|0)+(ha(q+x|0,-5461)|0)|0;u=((g-m|0)*3363|0)+(ha(q+v|0,-11086)|0)|0;t=ha(Y,-13631)|0;Y=ha(v,-9222)|0;v=(ha(f,-18730)|0)+65536+(H*6387|0)+X+e+F>>17;k[a>>2]=v;k[o>>2]=(x*589|0)+65536+t+p+B+e>>17;k[c>>2]=Y+65536+(g*10055|0)+u+B+X>>17;k[I>>2]=(q*8728|0)+65536+(m*17760|0)+u+p+F>>17;if((Z|0)>0){Z=Z+-1|0;_=_+4|0;$=$+4|0}else break}r=d;return}function Qo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0;d=c+15|0;e=c+1|0;f=c+14|0;g=c+2|0;h=c+13|0;i=c+3|0;j=c+12|0;m=c+4|0;n=c+11|0;o=c+5|0;p=c+10|0;q=c+6|0;r=c+9|0;s=c+7|0;t=c+8|0;u=0;v=a;while(1){w=k[b+(u<<2)>>2]|0;x=l[w+c>>0]|0;y=l[w+d>>0]|0;z=y+x|0;A=l[w+e>>0]|0;B=l[w+f>>0]|0;C=B+A|0;D=l[w+g>>0]|0;E=l[w+h>>0]|0;F=E+D|0;G=l[w+i>>0]|0;H=l[w+j>>0]|0;I=H+G|0;J=l[w+m>>0]|0;K=l[w+n>>0]|0;L=K+J|0;M=l[w+o>>0]|0;N=l[w+p>>0]|0;O=N+M|0;P=l[w+q>>0]|0;Q=l[w+r>>0]|0;R=Q+P|0;S=l[w+s>>0]|0;T=l[w+t>>0]|0;w=T+S|0;U=w+z|0;V=z-w|0;w=R+C|0;z=C-R|0;R=O+F|0;C=F-O|0;O=L+I|0;F=I-L|0;L=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;K=M-N|0;N=P-Q|0;Q=S-T|0;k[v>>2]=(R+O+w+U<<2)+-8192;k[v+16>>2]=((w-R|0)*4433|0)+1024+((U-O|0)*10703|0)>>11;O=((V-C|0)*11363|0)+((F-z|0)*2260|0)|0;k[v+8>>2]=(C*17799|0)+1024+(z*11893|0)+O>>11;z=(ha(F,-8697)|0)+1024+(ha(V,-1730)|0)+O>>11;k[v+24>>2]=z;z=((N-Q|0)*3363|0)+((y+L|0)*11086|0)|0;O=((Q+K|0)*5461|0)+((B+L|0)*10217|0)|0;V=((H-Q|0)*7350|0)+((E+L|0)*8956|0)|0;F=((N-K|0)*11529|0)+((B+y|0)*1136|0)|0;C=(ha(N+H|0,-10217)|0)+(ha(E+y|0,-5461)|0)|0;U=((K-H|0)*3363|0)+(ha(E+B|0,-11086)|0)|0;R=ha(N,-13631)|0;N=ha(B,-9222)|0;B=(ha(L,-18730)|0)+1024+(Q*6387|0)+O+z+V>>11;k[v+4>>2]=B;k[v+12>>2]=(y*589|0)+1024+R+C+F+z>>11;k[v+20>>2]=N+1024+(K*10055|0)+U+F+O>>11;k[v+28>>2]=(E*8728|0)+1024+(H*17760|0)+U+C+V>>11;u=u+1|0;if((u|0)==8){W=7;X=a;break}else v=v+32|0}while(1){v=k[X>>2]|0;a=X+224|0;u=k[a>>2]|0;t=u+v|0;s=X+32|0;r=k[s>>2]|0;q=X+192|0;p=k[q>>2]|0;o=p+r|0;n=X+64|0;m=k[n>>2]|0;j=X+160|0;i=k[j>>2]|0;h=i+m|0;g=X+96|0;f=k[g>>2]|0;e=X+128|0;d=k[e>>2]|0;c=d+f|0;b=c+t|0;V=t-c|0;c=h+o|0;t=o-h|0;h=v-u|0;u=r-p|0;p=m-i|0;i=f-d|0;k[X>>2]=c+4+b>>3;k[e>>2]=4-c+b>>3;b=(V+t|0)*4433|0;k[n>>2]=(V*6270|0)+32768+b>>16;V=(ha(t,-15137)|0)+32768+b>>16;k[q>>2]=V;V=p+h|0;q=i+u|0;b=(q+V|0)*9633|0;t=b+(ha(V,-3196)|0)|0;V=b+(ha(q,-16069)|0)|0;q=ha(i+h|0,-7373)|0;b=ha(p+u|0,-20995)|0;k[s>>2]=(h*12299|0)+32768+q+t>>16;k[g>>2]=(u*25172|0)+32768+b+V>>16;k[j>>2]=(p*16819|0)+32768+b+t>>16;k[a>>2]=(i*2446|0)+32768+q+V>>16;if((W|0)>0){W=W+-1|0;X=X+4|0}else break}return}function Ro(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;d=a+224|0;e=d+32|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(e|0));d=c+13|0;e=c+1|0;f=c+12|0;g=c+2|0;h=c+11|0;j=c+3|0;m=c+10|0;n=c+4|0;o=c+9|0;p=c+5|0;q=c+8|0;r=c+6|0;s=c+7|0;t=0;u=a;while(1){v=k[b+(t<<2)>>2]|0;w=l[v+c>>0]|0;x=l[v+d>>0]|0;y=x+w|0;z=l[v+e>>0]|0;A=l[v+f>>0]|0;B=A+z|0;C=l[v+g>>0]|0;D=l[v+h>>0]|0;E=D+C|0;F=l[v+j>>0]|0;G=l[v+m>>0]|0;H=G+F|0;I=l[v+n>>0]|0;J=l[v+o>>0]|0;K=J+I|0;L=l[v+p>>0]|0;M=l[v+q>>0]|0;N=M+L|0;O=l[v+r>>0]|0;P=l[v+s>>0]|0;v=P+O|0;Q=v+y|0;R=y-v|0;v=N+B|0;y=B-N|0;N=K+E|0;B=E-K|0;K=w-x|0;x=z-A|0;A=C-D|0;D=F-G|0;G=I-J|0;J=L-M|0;M=O-P|0;k[u>>2]=(N+H+v+Q<<2)+-7168;P=H<<1;H=(ha(N-P|0,-7223)|0)+1024+((v-P|0)*2578|0)+((Q-P|0)*10438|0)>>11;k[u+16>>2]=H;H=(R+y|0)*9058|0;k[u+8>>2]=(B*5027|0)+1024+(R*2237|0)+H>>11;R=(ha(B,-11295)|0)+1024+(ha(y,-14084)|0)+H>>11;k[u+24>>2]=R;R=A+x|0;H=J-G|0;k[u+28>>2]=K-R+D-H-M<<2;y=D<<13;D=(H*11512|0)-y+(ha(R,-1297)|0)|0;R=((M+G|0)*6164|0)+((A+K|0)*9810|0)|0;H=(ha(A,-19447)|0)+1024+(G*9175|0)+D+R>>11;k[u+20>>2]=H;H=((J-M|0)*3826|0)+((x+K|0)*10935|0)|0;G=(ha(x,-3474)|0)+1024+(ha(J,-25148)|0)+D+H>>11;k[u+12>>2]=G;G=(y|1024)+M+(ha(M+K|0,-9232)|0)+H+R>>11;k[u+4>>2]=G;t=t+1|0;if((t|0)==7){S=7;T=a;break}else u=u+32|0}while(1){u=k[T>>2]|0;a=T+192|0;t=k[a>>2]|0;s=t+u|0;r=T+32|0;q=k[r>>2]|0;p=T+160|0;o=k[p>>2]|0;n=o+q|0;m=T+64|0;j=k[m>>2]|0;h=T+128|0;g=k[h>>2]|0;f=g+j|0;e=T+96|0;d=k[e>>2]|0;c=u-t|0;t=q-o|0;o=j-g|0;g=f+s|0;k[T>>2]=((d+n+g|0)*10700|0)+32768>>16;j=((ha(d,-4)|0)+g|0)*3783|0;g=(s-f|0)*9850|0;q=(n-f|0)*3367|0;k[m>>2]=g+32768+q+j>>16;m=((s-n|0)*9434|0)+32768|0;s=m+q+(ha(n-(d<<1)|0,-7566)|0)>>16;k[h>>2]=s;k[a>>2]=m-g+j>>16;j=(t+c|0)*10009|0;g=(c-t|0)*1822|0;m=ha(o+t|0,-14752)|0;t=(o+c|0)*6565|0;k[r>>2]=32768-g+j+t>>16;k[e>>2]=g+32768+j+m>>16;k[p>>2]=(o*20017|0)+32768+t+m>>16;if((S|0)>0){S=S+-1|0;T=T+4|0}else break}return}function So(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;d=a+192|0;e=d+64|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(e|0));d=c+11|0;e=c+1|0;f=c+10|0;g=c+2|0;h=c+9|0;j=c+3|0;m=c+8|0;n=c+4|0;o=c+7|0;p=c+5|0;q=c+6|0;r=0;s=a;while(1){t=k[b+(r<<2)>>2]|0;u=l[t+c>>0]|0;v=l[t+d>>0]|0;w=v+u|0;x=l[t+e>>0]|0;y=l[t+f>>0]|0;z=y+x|0;A=l[t+g>>0]|0;B=l[t+h>>0]|0;C=B+A|0;D=l[t+j>>0]|0;E=l[t+m>>0]|0;F=E+D|0;G=l[t+n>>0]|0;H=l[t+o>>0]|0;I=H+G|0;J=l[t+p>>0]|0;K=l[t+q>>0]|0;t=K+J|0;L=t+w|0;M=w-t|0;t=z-I|0;w=F+C|0;N=C-F|0;F=u-v|0;v=x-y|0;y=A-B|0;B=D-E|0;E=G-H|0;H=J-K|0;k[s>>2]=(w+z+I+L<<2)+-6144;k[s+24>>2]=M-(t+N)<<2;k[s+16>>2]=((L-w|0)*10033|0)+1024>>11;k[s+8>>2]=1024-N+t+((M+N|0)*11190|0)>>11;N=(E+v|0)*4433|0;M=N+(v*6270|0)|0;v=N+(ha(E,-15137)|0)|0;E=(y+F|0)*9191|0;N=(B+F|0)*7053|0;t=ha(B+y|0,-1512)|0;w=ha(y,-19165)|0;L=ha(H,-9191)|0;I=ha(H+y|0,-4433)|0;y=(ha(F,-4758)|0)+1024+E+N+M+(H*1512|0)>>11;k[s+4>>2]=y;k[s+12>>2]=((F-B|0)*10703|0)+1024+v+I>>11;k[s+20>>2]=w+1024+E+t-v+(H*7053|0)>>11;k[s+28>>2]=(B*5946|0)+1024+t+N-M+L>>11;r=r+1|0;if((r|0)==6){O=7;P=a;break}else s=s+32|0}while(1){s=k[P>>2]|0;a=P+160|0;r=k[a>>2]|0;q=r+s|0;p=P+32|0;o=k[p>>2]|0;n=P+128|0;m=k[n>>2]|0;j=m+o|0;h=P+64|0;g=k[h>>2]|0;f=P+96|0;e=k[f>>2]|0;d=e+g|0;c=d+q|0;b=s-r|0;r=o-m|0;m=g-e|0;k[P>>2]=((c+j|0)*14564|0)+32768>>16;k[h>>2]=((q-d|0)*17837|0)+32768>>16;d=(((ha(j,-2)|0)+c|0)*10298|0)+32768>>16;k[n>>2]=d;d=(m+b|0)*5331|0;k[p>>2]=((r+b|0)*14564|0)+32768+d>>16;k[f>>2]=((b-r-m|0)*14564|0)+32768>>16;k[a>>2]=((m-r|0)*14564|0)+32768+d>>16;if((O|0)>0){O=O+-1|0;P=P+4|0}else break}return}function To(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;d=a+160|0;e=d+96|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(e|0));d=c+9|0;e=c+1|0;f=c+8|0;g=c+2|0;h=c+7|0;j=c+3|0;m=c+6|0;n=c+4|0;o=c+5|0;p=0;q=a;while(1){r=k[b+(p<<2)>>2]|0;s=l[r+c>>0]|0;t=l[r+d>>0]|0;u=t+s|0;v=l[r+e>>0]|0;w=l[r+f>>0]|0;x=w+v|0;y=l[r+g>>0]|0;z=l[r+h>>0]|0;A=z+y|0;B=l[r+j>>0]|0;C=l[r+m>>0]|0;D=C+B|0;E=l[r+n>>0]|0;F=l[r+o>>0]|0;r=F+E|0;G=r+u|0;H=u-r|0;r=D+x|0;u=x-D|0;D=s-t|0;t=v-w|0;w=y-z|0;z=B-C|0;C=E-F|0;k[q>>2]=(r+A+G<<2)+-5120;F=A<<1;A=(ha(r-F|0,-3580)|0)+1024+((G-F|0)*9373|0)>>11;k[q+16>>2]=A;A=(H+u|0)*6810|0;k[q+8>>2]=(H*4209|0)+1024+A>>11;H=(ha(u,-17828)|0)+1024+A>>11;k[q+24>>2]=H;H=C+D|0;A=t-z|0;k[q+20>>2]=H-(A+w)<<2;u=w<<13;k[q+4>>2]=(D*11443|0)+1024+(t*10323|0)+u+(z*5260|0)+(C*1812|0)>>11;w=(A<<12)-u+((H+A|0)*2531|0)|0;A=((D-C|0)*7791|0)+(ha(z+t|0,-4815)|0)+1024|0;k[q+12>>2]=A+w>>11;k[q+28>>2]=A-w>>11;p=p+1|0;if((p|0)==5){I=7;J=a;break}else q=q+32|0}while(1){q=k[J>>2]|0;a=J+128|0;p=k[a>>2]|0;o=p+q|0;n=J+32|0;m=k[n>>2]|0;j=J+96|0;h=k[j>>2]|0;g=h+m|0;f=J+64|0;e=k[f>>2]|0;d=g+o|0;c=q-p|0;p=m-h|0;k[J>>2]=((d+e|0)*10486|0)+16384>>15;h=(d-(e<<2)|0)*3707|0;e=((o-g|0)*8290|0)+16384|0;k[f>>2]=e+h>>15;k[a>>2]=e-h>>15;h=(p+c|0)*8716|0;k[n>>2]=(c*5387|0)+16384+h>>15;c=(ha(p,-22820)|0)+16384+h>>15;k[j>>2]=c;if((I|0)>0){I=I+-1|0;J=J+4|0}else break}return}function Uo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=a+128|0;e=d+128|0;do{i[d>>0]=0;d=d+1|0}while((d|0)<(e|0));d=c+7|0;e=c+1|0;f=c+6|0;g=c+2|0;h=c+5|0;j=c+3|0;m=c+4|0;n=0;o=a;while(1){p=k[b+(n<<2)>>2]|0;q=l[p+c>>0]|0;r=l[p+d>>0]|0;s=r+q|0;t=l[p+e>>0]|0;u=l[p+f>>0]|0;v=u+t|0;w=l[p+g>>0]|0;x=l[p+h>>0]|0;y=x+w|0;z=l[p+j>>0]|0;A=l[p+m>>0]|0;p=A+z|0;B=p+s|0;C=s-p|0;p=y+v|0;s=v-y|0;y=q-r|0;r=t-u|0;u=w-x|0;x=z-A|0;k[o>>2]=(B+p<<3)+-8192;k[o+16>>2]=B-p<<3;p=((C+s|0)*4433|0)+512|0;k[o+8>>2]=p+(C*6270|0)>>10;C=p+(ha(s,-15137)|0)>>10;k[o+24>>2]=C;C=u+y|0;s=x+r|0;p=((s+C|0)*9633|0)+512|0;B=p+(ha(C,-3196)|0)|0;C=p+(ha(s,-16069)|0)|0;s=ha(x+y|0,-7373)|0;p=ha(u+r|0,-20995)|0;k[o+4>>2]=s+(y*12299|0)+B>>10;k[o+12>>2]=p+(r*25172|0)+C>>10;k[o+20>>2]=p+(u*16819|0)+B>>10;k[o+28>>2]=s+(x*2446|0)+C>>10;n=n+1|0;if((n|0)==4){D=7;E=a;break}else o=o+32|0}while(1){o=k[E>>2]|0;a=E+96|0;n=k[a>>2]|0;m=o+2+n|0;j=E+32|0;h=k[j>>2]|0;g=E+64|0;f=k[g>>2]|0;e=f+h|0;d=o-n|0;n=h-f|0;k[E>>2]=e+m>>2;k[g>>2]=m-e>>2;e=((n+d|0)*4433|0)+16384|0;k[j>>2]=e+(d*6270|0)>>15;d=e+(ha(n,-15137)|0)>>15;k[a>>2]=d;if((D|0)>0){D=D+-1|0;E=E+4|0}else break}return}function Vo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;qr(a|0,0,256)|0;d=c+5|0;e=c+1|0;f=c+4|0;g=c+2|0;h=c+3|0;i=0;j=a;while(1){m=k[b+(i<<2)>>2]|0;n=l[m+c>>0]|0;o=l[m+d>>0]|0;p=o+n|0;q=l[m+e>>0]|0;r=l[m+f>>0]|0;s=r+q|0;t=l[m+g>>0]|0;u=l[m+h>>0]|0;m=u+t|0;v=m+p|0;w=n-o|0;o=q-r|0;r=t-u|0;k[j>>2]=(v+s<<3)+-6144;k[j+8>>2]=((p-m|0)*10033|0)+512>>10;m=(((ha(s,-2)|0)+v|0)*5793|0)+512>>10;k[j+16>>2]=m;m=((r+w|0)*2998|0)+512>>10;k[j+4>>2]=m+(o+w<<3);k[j+12>>2]=w-o-r<<3;k[j+20>>2]=m+(r-o<<3);i=i+1|0;if((i|0)==3)break;else j=j+32|0}j=k[a>>2]|0;i=a+64|0;h=k[i>>2]|0;g=h+j|0;f=a+32|0;e=k[f>>2]|0;k[a>>2]=((g+e|0)*14564|0)+16384>>15;d=(((ha(e,-2)|0)+g|0)*10298|0)+16384>>15;k[i>>2]=d;k[f>>2]=((j-h|0)*17837|0)+16384>>15;h=a+4|0;j=k[h>>2]|0;f=a+68|0;d=k[f>>2]|0;i=d+j|0;g=a+36|0;e=k[g>>2]|0;k[h>>2]=((i+e|0)*14564|0)+16384>>15;h=(((ha(e,-2)|0)+i|0)*10298|0)+16384>>15;k[f>>2]=h;k[g>>2]=((j-d|0)*17837|0)+16384>>15;d=a+8|0;j=k[d>>2]|0;g=a+72|0;h=k[g>>2]|0;f=h+j|0;i=a+40|0;e=k[i>>2]|0;k[d>>2]=((f+e|0)*14564|0)+16384>>15;d=(((ha(e,-2)|0)+f|0)*10298|0)+16384>>15;k[g>>2]=d;k[i>>2]=((j-h|0)*17837|0)+16384>>15;h=a+12|0;j=k[h>>2]|0;i=a+76|0;d=k[i>>2]|0;g=d+j|0;f=a+44|0;e=k[f>>2]|0;k[h>>2]=((g+e|0)*14564|0)+16384>>15;h=(((ha(e,-2)|0)+g|0)*10298|0)+16384>>15;k[i>>2]=h;k[f>>2]=((j-d|0)*17837|0)+16384>>15;d=a+16|0;j=k[d>>2]|0;f=a+80|0;h=k[f>>2]|0;i=h+j|0;g=a+48|0;e=k[g>>2]|0;k[d>>2]=((i+e|0)*14564|0)+16384>>15;d=(((ha(e,-2)|0)+i|0)*10298|0)+16384>>15;k[f>>2]=d;k[g>>2]=((j-h|0)*17837|0)+16384>>15;h=a+20|0;j=k[h>>2]|0;g=a+84|0;d=k[g>>2]|0;f=d+j|0;i=a+52|0;a=k[i>>2]|0;k[h>>2]=((f+a|0)*14564|0)+16384>>15;h=(((ha(a,-2)|0)+f|0)*10298|0)+16384>>15;k[g>>2]=h;k[i>>2]=((j-d|0)*17837|0)+16384>>15;return}function Wo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0;qr(a|0,0,256)|0;d=c+3|0;e=c+1|0;f=c+2|0;g=k[b>>2]|0;h=l[g+c>>0]|0;i=l[g+d>>0]|0;j=i+h|0;m=l[g+e>>0]|0;n=l[g+f>>0]|0;g=n+m|0;o=h-i|0;i=m-n|0;n=g+j<<5;k[a>>2]=n+-16384;m=j-g<<5;k[a+8>>2]=m;g=((i+o|0)*4433|0)+128|0;j=g+(o*6270|0)>>8;o=a+4|0;k[o>>2]=j;h=g+(ha(i,-15137)|0)>>8;k[a+12>>2]=h;i=k[b+4>>2]|0;b=l[i+c>>0]|0;c=l[i+d>>0]|0;d=c+b|0;g=l[i+e>>0]|0;e=l[i+f>>0]|0;f=e+g|0;i=b-c|0;c=g-e|0;e=(f+d<<5)+-16384|0;g=d-f<<5;f=((c+i|0)*4433|0)+128|0;d=f+(i*6270|0)>>8;i=f+(ha(c,-15137)|0)>>8;c=n+-16382|0;k[a>>2]=c+e>>2;k[a+32>>2]=c-e>>2;e=j+2|0;k[o>>2]=e+d>>2;k[a+36>>2]=e-d>>2;d=m|2;k[a+8>>2]=d+g>>2;k[a+40>>2]=d-g>>2;g=h+2|0;k[a+12>>2]=g+i>>2;k[a+44>>2]=g-i>>2;return}function Xo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;qr(a|0,0,256)|0;d=k[b>>2]|0;b=l[d+c>>0]|0;e=l[d+(c+1)>>0]|0;k[a>>2]=(e+b<<5)+-8192;k[a+4>>2]=b-e<<5;return}function Yo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;d=r;r=r+256|0;e=d;f=c+7|0;g=c+1|0;h=c+6|0;i=c+2|0;j=c+5|0;m=c+3|0;n=c+4|0;o=0;p=a;a:while(1){q=k[b+(o<<2)>>2]|0;s=l[q+c>>0]|0;t=l[q+f>>0]|0;u=t+s|0;v=l[q+g>>0]|0;w=l[q+h>>0]|0;x=w+v|0;y=l[q+i>>0]|0;z=l[q+j>>0]|0;A=z+y|0;B=l[q+m>>0]|0;C=l[q+n>>0]|0;q=C+B|0;D=q+u|0;E=u-q|0;q=A+x|0;u=x-A|0;A=s-t|0;t=v-w|0;w=y-z|0;z=B-C|0;k[p>>2]=(D+q<<2)+-4096;k[p+16>>2]=D-q<<2;q=(E+u|0)*4433|0;k[p+8>>2]=(E*6270|0)+1024+q>>11;E=(ha(u,-15137)|0)+1024+q>>11;k[p+24>>2]=E;E=w+A|0;q=z+t|0;u=(q+E|0)*9633|0;D=u+(ha(E,-3196)|0)|0;E=u+(ha(q,-16069)|0)|0;q=ha(z+A|0,-7373)|0;u=ha(w+t|0,-20995)|0;k[p+4>>2]=(A*12299|0)+1024+q+D>>11;k[p+12>>2]=(t*25172|0)+1024+u+E>>11;k[p+20>>2]=(w*16819|0)+1024+u+D>>11;k[p+28>>2]=(z*2446|0)+1024+q+E>>11;switch(o|0){case 7:{o=8;p=e;continue a;break}case 15:{F=7;G=a;H=e;break a;break}default:{}}o=o+1|0;p=p+32|0}while(1){p=k[G>>2]|0;o=k[H+224>>2]|0;e=o+p|0;a=G+32|0;n=k[a>>2]|0;m=k[H+192>>2]|0;j=m+n|0;i=G+64|0;h=k[i>>2]|0;g=k[H+160>>2]|0;f=g+h|0;c=G+96|0;b=k[c>>2]|0;E=k[H+128>>2]|0;q=E+b|0;z=G+128|0;D=k[z>>2]|0;u=k[H+96>>2]|0;w=u+D|0;t=G+160|0;A=k[t>>2]|0;C=k[H+64>>2]|0;B=C+A|0;y=G+192|0;v=k[y>>2]|0;s=k[H+32>>2]|0;x=s+v|0;I=G+224|0;J=k[I>>2]|0;K=k[H>>2]|0;L=K+J|0;M=L+e|0;N=e-L|0;L=x+j|0;e=j-x|0;x=B+f|0;j=f-B|0;B=w+q|0;f=q-w|0;w=p-o|0;o=n-m|0;m=h-g|0;g=b-E|0;E=D-u|0;u=A-C|0;C=v-s|0;s=J-K|0;k[G>>2]=B+4+x+L+M>>3;k[z>>2]=((L-x|0)*4433|0)+32768+((M-B|0)*10703|0)>>16;B=((N-j|0)*11363|0)+((f-e|0)*2260|0)|0;k[i>>2]=(j*17799|0)+32768+(e*11893|0)+B>>16;e=(ha(f,-8697)|0)+32768+(ha(N,-1730)|0)+B>>16;k[y>>2]=e;e=((C-s|0)*3363|0)+((o+w|0)*11086|0)|0;y=((s+u|0)*5461|0)+((m+w|0)*10217|0)|0;B=((E-s|0)*7350|0)+((g+w|0)*8956|0)|0;N=((C-u|0)*11529|0)+((m+o|0)*1136|0)|0;f=(ha(C+E|0,-10217)|0)+(ha(g+o|0,-5461)|0)|0;j=((u-E|0)*3363|0)+(ha(g+m|0,-11086)|0)|0;i=ha(C,-13631)|0;C=ha(m,-9222)|0;m=(ha(w,-18730)|0)+32768+(s*6387|0)+y+e+B>>16;k[a>>2]=m;k[c>>2]=(o*589|0)+32768+i+f+N+e>>16;k[t>>2]=C+32768+(u*10055|0)+j+N+y>>16;k[I>>2]=(g*8728|0)+32768+(E*17760|0)+j+f+B>>16;if((F|0)>0){F=F+-1|0;G=G+4|0;H=H+4|0}else break}r=d;return}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;d=r;r=r+192|0;e=d;qr(a|0,0,256)|0;f=c+6|0;g=c+1|0;h=c+5|0;i=c+2|0;j=c+4|0;m=c+3|0;n=0;o=a;a:while(1){p=k[b+(n<<2)>>2]|0;q=l[p+c>>0]|0;s=l[p+f>>0]|0;t=s+q|0;u=l[p+g>>0]|0;v=l[p+h>>0]|0;w=v+u|0;x=l[p+i>>0]|0;y=l[p+j>>0]|0;z=y+x|0;A=l[p+m>>0]|0;p=q-s|0;s=u-v|0;v=x-y|0;y=z+t|0;k[o>>2]=(A+w+y<<2)+-3584;x=((ha(A,-4)|0)+y|0)*2896|0;y=(t-z|0)*7542|0;u=(w-z|0)*2578|0;k[o+8>>2]=y+1024+u+x>>11;z=((t-w|0)*7223|0)+1024|0;t=z+u+(ha(w-(A<<1)|0,-5793)|0)>>11;k[o+16>>2]=t;k[o+24>>2]=z-y+x>>11;x=(s+p|0)*7663|0;y=(p-s|0)*1395|0;z=ha(v+s|0,-11295)|0;s=(v+p|0)*5027|0;k[o+4>>2]=1024-y+x+s>>11;k[o+12>>2]=y+1024+x+z>>11;k[o+20>>2]=(v*15326|0)+1024+s+z>>11;switch(n|0){case 7:{n=8;o=e;continue a;break}case 13:{B=0;C=a;D=e;break a;break}default:{}}n=n+1|0;o=o+32|0}while(1){o=k[C>>2]|0;n=k[D+160>>2]|0;e=n+o|0;a=C+32|0;m=k[a>>2]|0;j=k[D+128>>2]|0;i=j+m|0;h=C+64|0;g=k[h>>2]|0;f=k[D+96>>2]|0;c=f+g|0;b=C+96|0;z=k[b>>2]|0;s=k[D+64>>2]|0;v=s+z|0;x=C+128|0;y=k[x>>2]|0;p=k[D+32>>2]|0;t=p+y|0;A=C+160|0;w=k[A>>2]|0;u=k[D>>2]|0;q=u+w|0;E=C+192|0;F=k[E>>2]|0;G=C+224|0;H=k[G>>2]|0;I=H+F|0;J=I+e|0;K=e-I|0;I=q+i|0;e=i-q|0;q=t+c|0;i=c-t|0;t=o-n|0;n=m-j|0;j=g-f|0;f=z-s|0;s=y-p|0;p=w-u|0;u=F-H|0;k[C>>2]=((q+v+I+J|0)*5350|0)+16384>>15;H=v<<1;v=(ha(q-H|0,-4717)|0)+16384+((I-H|0)*1684|0)+((J-H|0)*6817|0)>>15;k[x>>2]=v;v=(K+e|0)*5915|0;k[h>>2]=(i*3283|0)+16384+(K*1461|0)+v>>15;K=(ha(i,-7376)|0)+16384+(ha(e,-9198)|0)+v>>15;k[E>>2]=K;K=j+n|0;E=p-s|0;k[G>>2]=((t-K+f-E-u|0)*5350|0)+16384>>15;G=f*5350|0;f=(E*7518|0)-G+(ha(K,-847)|0)|0;K=((u+s|0)*4025|0)+((j+t|0)*6406|0)|0;E=(ha(j,-12700)|0)+16384+(s*5992|0)+f+K>>15;k[A>>2]=E;E=((p-u|0)*2499|0)+((n+t|0)*7141|0)|0;A=(ha(n,-2269)|0)+16384+(ha(p,-16423)|0)+f+E>>15;k[b>>2]=A;A=(ha(t,-6029)|0)+16384+G+(ha(u,-679)|0)+E+K>>15;k[a>>2]=A;B=B+1|0;if((B|0)==7)break;else{C=C+4|0;D=D+4|0}}r=d;return}function _o(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=r;r=r+128|0;e=d;qr(a|0,0,256)|0;f=c+5|0;g=c+1|0;h=c+4|0;i=c+2|0;j=c+3|0;m=0;n=a;a:while(1){o=k[b+(m<<2)>>2]|0;p=l[o+c>>0]|0;q=l[o+f>>0]|0;s=q+p|0;t=l[o+g>>0]|0;u=l[o+h>>0]|0;v=u+t|0;w=l[o+i>>0]|0;x=l[o+j>>0]|0;o=x+w|0;y=o+s|0;z=p-q|0;q=t-u|0;u=w-x|0;k[n>>2]=(y+v<<2)+-3072;k[n+8>>2]=((s-o|0)*10033|0)+1024>>11;o=(((ha(v,-2)|0)+y|0)*5793|0)+1024>>11;k[n+16>>2]=o;o=((u+z|0)*2998|0)+1024>>11;k[n+4>>2]=o+(q+z<<2);k[n+12>>2]=z-q-u<<2;k[n+20>>2]=o+(u-q<<2);switch(m|0){case 7:{m=8;n=e;continue a;break}case 11:{A=0;B=a;C=e;break a;break}default:{}}m=m+1|0;n=n+32|0}while(1){n=k[B>>2]|0;m=k[C+96>>2]|0;e=m+n|0;a=B+32|0;j=k[a>>2]|0;i=k[C+64>>2]|0;h=i+j|0;g=B+64|0;f=k[g>>2]|0;c=k[C+32>>2]|0;b=c+f|0;q=B+96|0;u=k[q>>2]|0;o=k[C>>2]|0;z=o+u|0;y=B+128|0;v=k[y>>2]|0;s=B+224|0;x=k[s>>2]|0;w=x+v|0;t=B+160|0;p=k[t>>2]|0;D=B+192|0;E=k[D>>2]|0;F=E+p|0;G=F+e|0;H=e-F|0;F=h-w|0;e=z+b|0;I=b-z|0;z=n-m|0;m=j-i|0;i=f-c|0;c=u-o|0;o=v-x|0;x=p-E|0;k[B>>2]=((e+h+w+G|0)*7282|0)+16384>>15;k[D>>2]=((H-(F+I)|0)*7282|0)+16384>>15;k[y>>2]=((G-e|0)*8918|0)+16384>>15;k[g>>2]=((F-I|0)*7282|0)+16384+((H+I|0)*9947|0)>>15;I=(o+m|0)*3941|0;H=I+(m*5573|0)|0;m=I+(ha(o,-13455)|0)|0;o=(i+z|0)*8170|0;I=(c+z|0)*6269|0;F=ha(c+i|0,-1344)|0;g=ha(i,-17036)|0;e=ha(x,-8170)|0;G=ha(x+i|0,-3941)|0;i=(ha(z,-4229)|0)+16384+o+I+H+(x*1344|0)>>15;k[a>>2]=i;k[q>>2]=((z-c|0)*9514|0)+16384+m+G>>15;k[t>>2]=g+16384+o+F-m+(x*6269|0)>>15;k[s>>2]=(c*5285|0)+16384+F+I-H+e>>15;A=A+1|0;if((A|0)==6)break;else{B=B+4|0;C=C+4|0}}r=d;return}function $o(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=r;r=r+64|0;e=d;qr(a|0,0,256)|0;f=c+4|0;g=c+1|0;h=c+3|0;i=c+2|0;j=0;m=a;a:while(1){n=k[b+(j<<2)>>2]|0;o=l[n+c>>0]|0;p=l[n+f>>0]|0;q=p+o|0;s=l[n+g>>0]|0;t=l[n+h>>0]|0;u=t+s|0;v=l[n+i>>0]|0;n=u+q|0;w=o-p|0;p=s-t|0;k[m>>2]=(n+v<<2)+-2560;t=(n-(v<<2)|0)*2896|0;v=((q-u|0)*6476|0)+1024|0;k[m+8>>2]=v+t>>11;k[m+16>>2]=v-t>>11;t=(p+w|0)*6810|0;k[m+4>>2]=(w*4209|0)+1024+t>>11;w=(ha(p,-17828)|0)+1024+t>>11;k[m+12>>2]=w;switch(j|0){case 7:{j=8;m=e;continue a;break}case 9:{x=0;y=a;z=e;break a;break}default:{}}j=j+1|0;m=m+32|0}while(1){m=k[y>>2]|0;j=k[z+32>>2]|0;e=j+m|0;a=y+32|0;i=k[a>>2]|0;h=k[z>>2]|0;g=h+i|0;f=y+64|0;c=k[f>>2]|0;b=y+224|0;w=k[b>>2]|0;t=w+c|0;p=y+96|0;v=k[p>>2]|0;u=y+192|0;q=k[u>>2]|0;n=q+v|0;s=y+128|0;o=k[s>>2]|0;A=y+160|0;B=k[A>>2]|0;C=B+o|0;D=C+e|0;E=e-C|0;C=n+g|0;e=g-n|0;n=m-j|0;j=i-h|0;h=c-w|0;w=v-q|0;q=o-B|0;k[y>>2]=((C+t+D|0)*10486|0)+16384>>15;B=t<<1;t=(ha(C-B|0,-4582)|0)+16384+((D-B|0)*11997|0)>>15;k[s>>2]=t;t=(E+e|0)*8716|0;k[f>>2]=(E*5387|0)+16384+t>>15;E=(ha(e,-22820)|0)+16384+t>>15;k[u>>2]=E;E=q+n|0;u=j-w|0;k[A>>2]=((E-(u+h)|0)*10486|0)+16384>>15;A=h*10486|0;k[a>>2]=(n*14647|0)+16384+(j*13213|0)+A+(w*6732|0)+(q*2320|0)>>15;a=(u*5243|0)-A+((E+u|0)*3240|0)|0;u=((n-q|0)*9973|0)+(ha(w+j|0,-6163)|0)+16384|0;k[p>>2]=u+a>>15;k[b>>2]=u-a>>15;x=x+1|0;if((x|0)==5)break;else{y=y+4|0;z=z+4|0}}r=d;return}function ap(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;qr(a|0,0,256)|0;d=c+3|0;e=c+1|0;f=c+2|0;g=0;h=a;while(1){i=k[b+(g<<2)>>2]|0;j=l[i+c>>0]|0;m=l[i+d>>0]|0;n=m+j|0;o=l[i+e>>0]|0;p=l[i+f>>0]|0;i=p+o|0;q=j-m|0;m=o-p|0;k[h>>2]=(i+n<<3)+-4096;k[h+8>>2]=n-i<<3;i=((m+q|0)*4433|0)+512|0;k[h+4>>2]=i+(q*6270|0)>>10;q=i+(ha(m,-15137)|0)>>10;k[h+12>>2]=q;g=g+1|0;if((g|0)==8){r=0;s=a;break}else h=h+32|0}while(1){h=k[s>>2]|0;a=s+224|0;g=k[a>>2]|0;f=g+h|0;e=s+32|0;d=k[e>>2]|0;c=s+192|0;b=k[c>>2]|0;q=b+d|0;m=s+64|0;i=k[m>>2]|0;n=s+160|0;p=k[n>>2]|0;o=p+i|0;j=s+96|0;t=k[j>>2]|0;u=s+128|0;v=k[u>>2]|0;w=v+t|0;x=f+2+w|0;y=f-w|0;w=o+q|0;f=q-o|0;o=h-g|0;g=d-b|0;b=i-p|0;p=t-v|0;k[s>>2]=x+w>>2;k[u>>2]=x-w>>2;w=((y+f|0)*4433|0)+16384|0;k[m>>2]=w+(y*6270|0)>>15;y=w+(ha(f,-15137)|0)>>15;k[c>>2]=y;y=b+o|0;c=p+g|0;f=((c+y|0)*9633|0)+16384|0;w=f+(ha(y,-3196)|0)|0;y=f+(ha(c,-16069)|0)|0;c=ha(p+o|0,-7373)|0;f=ha(b+g|0,-20995)|0;k[e>>2]=c+(o*12299|0)+w>>15;k[j>>2]=f+(g*25172|0)+y>>15;k[n>>2]=f+(b*16819|0)+w>>15;k[a>>2]=c+(p*2446|0)+y>>15;r=r+1|0;if((r|0)==4)break;else s=s+4|0}return}function bp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;qr(a|0,0,256)|0;d=c+2|0;e=c+1|0;f=0;g=a;while(1){h=k[b+(f<<2)>>2]|0;i=l[h+c>>0]|0;j=l[h+d>>0]|0;m=j+i|0;n=l[h+e>>0]|0;k[g>>2]=(m+n<<3)+-3072;h=(((ha(n,-2)|0)+m|0)*5793|0)+512>>10;k[g+8>>2]=h;k[g+4>>2]=((i-j|0)*10033|0)+512>>10;f=f+1|0;if((f|0)==6){o=0;p=a;break}else g=g+32|0}while(1){g=k[p>>2]|0;a=p+160|0;f=k[a>>2]|0;e=f+g|0;d=p+32|0;c=k[d>>2]|0;b=p+128|0;j=k[b>>2]|0;i=j+c|0;h=p+64|0;m=k[h>>2]|0;n=p+96|0;q=k[n>>2]|0;r=q+m|0;s=r+e|0;t=g-f|0;f=c-j|0;j=m-q|0;k[p>>2]=((s+i|0)*14564|0)+16384>>15;k[h>>2]=((e-r|0)*17837|0)+16384>>15;r=(((ha(i,-2)|0)+s|0)*10298|0)+16384>>15;k[b>>2]=r;r=(j+t|0)*5331|0;k[d>>2]=((f+t|0)*14564|0)+16384+r>>15;k[n>>2]=((t-f-j|0)*14564|0)+16384>>15;k[a>>2]=((j-f|0)*14564|0)+16384+r>>15;o=o+1|0;if((o|0)==3)break;else p=p+4|0}return}function cp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0;qr(a|0,0,256)|0;d=c+1|0;e=k[b>>2]|0;f=l[e+c>>0]|0;g=l[e+d>>0]|0;e=(g+f<<3)+-2048|0;k[a>>2]=e;h=f-g<<3;g=a+4|0;k[g>>2]=h;f=a+32|0;i=k[b+4>>2]|0;j=l[i+c>>0]|0;m=l[i+d>>0]|0;i=(m+j<<3)+-2048|0;k[f>>2]=i;n=j-m<<3;k[a+36>>2]=n;m=k[b+8>>2]|0;j=l[m+c>>0]|0;o=l[m+d>>0]|0;m=(o+j<<3)+-2048|0;k[a+64>>2]=m;p=j-o<<3;k[a+68>>2]=p;o=k[b+12>>2]|0;b=l[o+c>>0]|0;c=l[o+d>>0]|0;d=(c+b<<3)+-2048|0;o=b-c<<3;c=d+e|0;b=m+i|0;j=e-d|0;d=i-m|0;k[a>>2]=b+c;k[a+64>>2]=c-b;b=((d+j|0)*4433|0)+4096|0;k[f>>2]=b+(j*6270|0)>>13;j=b+(ha(d,-15137)|0)>>13;k[a+96>>2]=j;j=o+h|0;d=p+n|0;b=h-o|0;o=n-p|0;k[g>>2]=d+j;k[a+68>>2]=j-d;d=((o+b|0)*4433|0)+4096|0;k[a+36>>2]=d+(b*6270|0)>>13;b=d+(ha(o,-15137)|0)>>13;k[a+100>>2]=b;return}function dp(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;qr(a|0,0,256)|0;d=l[(k[b>>2]|0)+c>>0]|0;e=l[(k[b+4>>2]|0)+c>>0]|0;k[a>>2]=(e+d<<5)+-8192;k[a+32>>2]=d-e<<5;return}function ep(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,p=0.0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0.0,C=0.0,D=0;f=r;r=r+256|0;g=f;h=k[a+336>>2]|0;a=8;l=c;c=k[b+84>>2]|0;b=g;while(1){m=j[l+16>>1]|0;n=j[l+32>>1]|0;if(!((m|n)<<16>>16))if(((((j[l+48>>1]|0)==0?(j[l+64>>1]|0)==0:0)?(j[l+80>>1]|0)==0:0)?(j[l+96>>1]|0)==0:0)?(j[l+112>>1]|0)==0:0){p=+(j[l>>1]|0)*+o[c>>2];o[b>>2]=p;o[b+32>>2]=p;o[b+64>>2]=p;o[b+96>>2]=p;o[b+128>>2]=p;o[b+160>>2]=p;o[b+192>>2]=p;o[b+224>>2]=p}else{q=0;s=10}else{q=n;s=10}if((s|0)==10){s=0;p=+(j[l>>1]|0)*+o[c>>2];t=+(q<<16>>16)*+o[c+64>>2];u=+(j[l+64>>1]|0)*+o[c+128>>2];v=+(j[l+96>>1]|0)*+o[c+192>>2];w=p+u;x=p-u;u=t+v;p=(t-v)*1.4142135381698608-u;v=w+u;t=w-u;u=x+p;w=x-p;p=+(m<<16>>16)*+o[c+32>>2];x=+(j[l+48>>1]|0)*+o[c+96>>2];y=+(j[l+80>>1]|0)*+o[c+160>>2];z=+(j[l+112>>1]|0)*+o[c+224>>2];A=x+y;B=y-x;x=p+z;y=p-z;z=A+x;p=(B+y)*1.8477590084075928;C=p-B*2.613126039505005-z;B=(x-A)*1.4142135381698608-C;A=p-y*1.0823922157287598-B;o[b>>2]=v+z;o[b+224>>2]=v-z;o[b+32>>2]=u+C;o[b+192>>2]=u-C;o[b+64>>2]=w+B;o[b+160>>2]=w-B;o[b+96>>2]=t+A;o[b+128>>2]=t-A}if((a|0)>1){a=a+-1|0;l=l+2|0;c=c+4|0;b=b+4|0}else break}b=e+7|0;c=e+1|0;l=e+6|0;a=e+2|0;q=e+5|0;s=e+3|0;m=e+4|0;n=0;D=g;while(1){g=k[d+(n<<2)>>2]|0;A=+o[D>>2]+512.5;t=+o[D+16>>2];B=A+t;w=A-t;t=+o[D+8>>2];A=+o[D+24>>2];C=t+A;u=(t-A)*1.4142135381698608-C;A=B+C;t=B-C;C=w+u;B=w-u;u=+o[D+20>>2];w=+o[D+12>>2];z=u+w;v=u-w;w=+o[D+4>>2];u=+o[D+28>>2];y=w+u;p=w-u;u=z+y;w=(v+p)*1.8477590084075928;x=w-v*2.613126039505005-u;v=(y-z)*1.4142135381698608-x;z=w-p*1.0823922157287598-v;i[g+e>>0]=i[h+((~~(A+u)&1023)+-384)>>0]|0;i[g+b>>0]=i[h+((~~(A-u)&1023)+-384)>>0]|0;i[g+c>>0]=i[h+((~~(C+x)&1023)+-384)>>0]|0;i[g+l>>0]=i[h+((~~(C-x)&1023)+-384)>>0]|0;i[g+a>>0]=i[h+((~~(B+v)&1023)+-384)>>0]|0;i[g+q>>0]=i[h+((~~(B-v)&1023)+-384)>>0]|0;i[g+s>>0]=i[h+((~~(t+z)&1023)+-384)>>0]|0;i[g+m>>0]=i[h+((~~(t-z)&1023)+-384)>>0]|0;n=n+1|0;if((n|0)==8)break;else D=D+32|0}r=f;return}function fp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;f=r;r=r+256|0;g=f;h=k[a+336>>2]|0;a=8;l=c;c=k[b+84>>2]|0;b=g;while(1){m=j[l+16>>1]|0;n=j[l+32>>1]|0;if(!((m|n)<<16>>16))if(((((j[l+48>>1]|0)==0?(j[l+64>>1]|0)==0:0)?(j[l+80>>1]|0)==0:0)?(j[l+96>>1]|0)==0:0)?(j[l+112>>1]|0)==0:0){o=ha(j[l>>1]|0,k[c>>2]|0)|0;k[b>>2]=o;k[b+32>>2]=o;k[b+64>>2]=o;k[b+96>>2]=o;k[b+128>>2]=o;k[b+160>>2]=o;k[b+192>>2]=o;k[b+224>>2]=o}else{p=0;q=10}else{p=n;q=10}if((q|0)==10){q=0;n=ha(j[l>>1]|0,k[c>>2]|0)|0;o=ha(p<<16>>16,k[c+64>>2]|0)|0;s=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;t=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;u=s+n|0;v=n-s|0;s=t+o|0;n=((o-t|0)*362>>8)-s|0;t=s+u|0;o=u-s|0;s=n+v|0;u=v-n|0;n=ha(m<<16>>16,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;x=v+m|0;y=v-m|0;m=w+n|0;v=n-w|0;w=m+x|0;n=(v+y|0)*473>>8;z=n-(y*669>>8)-w|0;y=((m-x|0)*362>>8)-z|0;x=n-(v*277>>8)-y|0;k[b>>2]=w+t;k[b+224>>2]=t-w;k[b+32>>2]=z+s;k[b+192>>2]=s-z;k[b+64>>2]=y+u;k[b+160>>2]=u-y;k[b+96>>2]=x+o;k[b+128>>2]=o-x}if((a|0)>1){a=a+-1|0;l=l+2|0;c=c+4|0;b=b+4|0}else break}b=e+1|0;c=e+2|0;l=e+3|0;a=e+4|0;p=e+5|0;x=e+6|0;o=e+7|0;y=0;u=g;while(1){g=k[d+(y<<2)>>2]|0;z=g+e|0;s=(k[u>>2]|0)+16400|0;w=k[u+4>>2]|0;t=k[u+8>>2]|0;if(!(w|t))if(((((k[u+12>>2]|0)==0?(k[u+16>>2]|0)==0:0)?(k[u+20>>2]|0)==0:0)?(k[u+24>>2]|0)==0:0)?(k[u+28>>2]|0)==0:0){v=i[h+((s>>>5&1023)+-384)>>0]|0;i[z>>0]=v;i[g+b>>0]=v;i[g+c>>0]=v;i[g+l>>0]=v;i[g+a>>0]=v;i[g+p>>0]=v;i[g+x>>0]=v;i[g+o>>0]=v}else{A=0;q=19}else{A=t;q=19}if((q|0)==19){q=0;t=k[u+16>>2]|0;v=t+s|0;n=s-t|0;t=k[u+24>>2]|0;s=t+A|0;m=((A-t|0)*362>>8)-s|0;t=s+v|0;B=v-s|0;s=m+n|0;v=n-m|0;m=k[u+20>>2]|0;n=k[u+12>>2]|0;C=n+m|0;D=m-n|0;n=k[u+28>>2]|0;m=n+w|0;E=w-n|0;n=m+C|0;w=(E+D|0)*473>>8;F=w-(D*669>>8)-n|0;D=((m-C|0)*362>>8)-F|0;C=w-(E*277>>8)-D|0;i[z>>0]=i[h+(((n+t|0)>>>5&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((t-n|0)>>>5&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((F+s|0)>>>5&1023)+-384)>>0]|0;i[g+x>>0]=i[h+(((s-F|0)>>>5&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((D+v|0)>>>5&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((v-D|0)>>>5&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((C+B|0)>>>5&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((B-C|0)>>>5&1023)+-384)>>0]|0}y=y+1|0;if((y|0)==8)break;else u=u+32|0}r=f;return}function gp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+256|0;g=f;h=k[a+336>>2]|0;a=8;l=c;c=k[b+84>>2]|0;b=g;while(1){m=j[l+16>>1]|0;n=j[l+32>>1]|0;if(!((m|n)<<16>>16))if(((((j[l+48>>1]|0)==0?(j[l+64>>1]|0)==0:0)?(j[l+80>>1]|0)==0:0)?(j[l+96>>1]|0)==0:0)?(j[l+112>>1]|0)==0:0){o=ha(k[c>>2]<<2,j[l>>1]|0)|0;k[b>>2]=o;k[b+32>>2]=o;k[b+64>>2]=o;k[b+96>>2]=o;k[b+128>>2]=o;k[b+160>>2]=o;k[b+192>>2]=o;k[b+224>>2]=o}else{p=0;q=10}else{p=n;q=10}if((q|0)==10){q=0;n=ha(k[c+128>>2]<<13,j[l+64>>1]|0)|0;o=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;s=n+o|0;t=o-n|0;n=ha(p<<16>>16,k[c+64>>2]|0)|0;o=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;u=(o+n|0)*4433|0;v=u+(n*6270|0)|0;n=u+(ha(o,-15137)|0)|0;o=v+s|0;u=s-v|0;v=n+t|0;s=t-n|0;n=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;t=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;w=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;x=ha(m<<16>>16,k[c+32>>2]|0)|0;m=w+n|0;y=x+t|0;z=(y+m|0)*9633|0;A=z+(ha(m,-16069)|0)|0;m=z+(ha(y,-3196)|0)|0;y=ha(x+n|0,-7373)|0;z=y+(n*2446|0)+A|0;n=y+(x*12299|0)+m|0;x=ha(w+t|0,-20995)|0;y=x+(t*16819|0)+m|0;m=x+(w*25172|0)+A|0;k[b>>2]=n+o>>11;k[b+224>>2]=o-n>>11;k[b+32>>2]=m+v>>11;k[b+192>>2]=v-m>>11;k[b+64>>2]=y+s>>11;k[b+160>>2]=s-y>>11;k[b+96>>2]=z+u>>11;k[b+128>>2]=u-z>>11}if((a|0)>1){a=a+-1|0;l=l+2|0;c=c+4|0;b=b+4|0}else break}b=e+1|0;c=e+2|0;l=e+3|0;a=e+4|0;p=e+5|0;z=e+6|0;u=e+7|0;y=0;s=g;while(1){g=k[d+(y<<2)>>2]|0;m=g+e|0;v=(k[s>>2]|0)+16400|0;n=k[s+4>>2]|0;o=k[s+8>>2]|0;if(!(n|o))if(((((k[s+12>>2]|0)==0?(k[s+16>>2]|0)==0:0)?(k[s+20>>2]|0)==0:0)?(k[s+24>>2]|0)==0:0)?(k[s+28>>2]|0)==0:0){A=i[h+((v>>>5&1023)+-384)>>0]|0;i[m>>0]=A;i[g+b>>0]=A;i[g+c>>0]=A;i[g+l>>0]=A;i[g+a>>0]=A;i[g+p>>0]=A;i[g+z>>0]=A;i[g+u>>0]=A}else{B=0;q=19}else{B=o;q=19}if((q|0)==19){q=0;o=k[s+16>>2]|0;A=o+v<<13;w=v-o<<13;o=k[s+24>>2]|0;v=(o+B|0)*4433|0;x=v+(B*6270|0)|0;t=v+(ha(o,-15137)|0)|0;o=x+A|0;v=A-x|0;x=t+w|0;A=w-t|0;t=k[s+28>>2]|0;w=k[s+20>>2]|0;C=k[s+12>>2]|0;D=C+t|0;E=n+w|0;F=(E+D|0)*9633|0;G=F+(ha(D,-16069)|0)|0;D=F+(ha(E,-3196)|0)|0;E=ha(n+t|0,-7373)|0;F=E+(t*2446|0)+G|0;t=E+(n*12299|0)+D|0;n=ha(C+w|0,-20995)|0;E=n+(w*16819|0)+D|0;D=n+(C*25172|0)+G|0;i[m>>0]=i[h+(((t+o|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((o-t|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((D+x|0)>>>18&1023)+-384)>>0]|0;i[g+z>>0]=i[h+(((x-D|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((E+A|0)>>>18&1023)+-384)>>0]|0;i[g+p>>0]=i[h+(((A-E|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((F+v|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((v-F|0)>>>18&1023)+-384)>>0]|0}y=y+1|0;if((y|0)==8)break;else s=s+32|0}r=f;return}function hp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=r;r=r+208|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;q=(o-p|0)*7223|0;s=(n-o|0)*2578|0;t=m+(s+q)+(ha(o,-15083)|0)|0;u=p+n|0;v=(u*10438|0)+m|0;w=v+(ha(p,-637)|0)+q|0;q=v+(ha(n,-20239)|0)+s|0;s=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;n=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;v=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;p=(n+s|0)*7663|0;x=(s-n|0)*1395|0;y=ha(v+n|0,-11295)|0;n=p+x+y|0;z=(v+s|0)*5027|0;s=z+(p-x)|0;x=z+(v*15326|0)+y|0;k[b>>2]=s+w>>11;k[b+168>>2]=w-s>>11;k[b+28>>2]=n+t>>11;k[b+140>>2]=t-n>>11;k[b+56>>2]=x+q>>11;k[b+112>>2]=q-x>>11;k[b+84>>2]=((o-u|0)*11585|0)+m>>11;a=a+1|0;if((a|0)==7)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+6|0;c=e+1|0;l=e+5|0;a=e+2|0;m=e+4|0;u=e+3|0;o=0;x=g;while(1){g=k[d+(o<<2)>>2]|0;q=(k[x>>2]<<13)+134348800|0;n=k[x+8>>2]|0;t=k[x+16>>2]|0;s=k[x+24>>2]|0;w=(t-s|0)*7223|0;y=(n-t|0)*2578|0;v=q+(y+w)+(ha(t,-15083)|0)|0;z=s+n|0;p=(z*10438|0)+q|0;A=p+(ha(s,-637)|0)+w|0;w=p+(ha(n,-20239)|0)+y|0;y=k[x+4>>2]|0;n=k[x+12>>2]|0;p=k[x+20>>2]|0;s=(n+y|0)*7663|0;B=(y-n|0)*1395|0;C=ha(p+n|0,-11295)|0;n=s+B+C|0;D=(p+y|0)*5027|0;y=s-B+D|0;B=D+(p*15326|0)+C|0;i[g+e>>0]=i[h+(((y+A|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((A-y|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((n+v|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((v-n|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((B+w|0)>>>18&1023)+-384)>>0]|0;i[g+m>>0]=i[h+(((w-B|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((((t-z|0)*11585|0)+q|0)>>>18&1023)+-384)>>0]|0;o=o+1|0;if((o|0)==7)break;else x=x+28|0}r=f;return}function ip(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;f=r;r=r+144|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha((k[c+128>>2]|0)*5793|0,j[l+64>>1]|0)|0;o=n+m|0;p=(ha(n,-2)|0)+m>>11;m=ha((k[c+64>>2]|0)*10033|0,j[l+32>>1]|0)|0;n=m+o|0;q=o-m|0;m=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;o=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;s=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;t=(s+m|0)*2998|0;u=t+(o+m<<13)|0;v=t+(s-o<<13)|0;t=m-o-s<<2;k[b>>2]=u+n>>11;k[b+120>>2]=n-u>>11;k[b+24>>2]=t+p;k[b+96>>2]=p-t;k[b+48>>2]=v+q>>11;k[b+72>>2]=q-v>>11;a=a+1|0;if((a|0)==6)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+5|0;c=e+1|0;l=e+4|0;a=e+2|0;v=e+3|0;q=0;t=g;while(1){g=k[d+(q<<2)>>2]|0;p=(k[t>>2]<<13)+134348800|0;u=(k[t+16>>2]|0)*5793|0;n=p+u|0;s=p-u-u|0;u=(k[t+8>>2]|0)*10033|0;p=n+u|0;o=n-u|0;u=k[t+4>>2]|0;n=k[t+12>>2]|0;m=k[t+20>>2]|0;w=(m+u|0)*2998|0;x=w+(n+u<<13)|0;y=w+(m-n<<13)|0;w=u-n-m<<13;i[g+e>>0]=i[h+(((x+p|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((p-x|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((w+s|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((s-w|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((y+o|0)>>>18&1023)+-384)>>0]|0;i[g+v>>0]=i[h+(((o-y|0)>>>18&1023)+-384)>>0]|0;q=q+1|0;if((q|0)==6)break;else t=t+24|0}r=f;return}function jp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;f=r;r=r+112|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=(o+n|0)*6476|0;q=n-o|0;o=(q*2896|0)+m|0;n=o+p|0;s=o-p|0;p=m+(ha(q,-11584)|0)|0;q=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;o=(m+q|0)*6810|0;t=o+(q*4209|0)|0;q=o+(ha(m,-17828)|0)|0;k[b>>2]=t+n>>11;k[b+80>>2]=n-t>>11;k[b+20>>2]=q+s>>11;k[b+60>>2]=s-q>>11;k[b+40>>2]=p>>11;a=a+1|0;if((a|0)==5)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+4|0;c=e+1|0;l=e+3|0;a=e+2|0;p=0;q=g;while(1){g=k[d+(p<<2)>>2]|0;s=(k[q>>2]<<13)+134348800|0;t=k[q+8>>2]|0;n=k[q+16>>2]|0;m=(n+t|0)*6476|0;o=t-n|0;n=(o*2896|0)+s|0;t=n+m|0;u=n-m|0;m=s+(ha(o,-11584)|0)|0;o=k[q+4>>2]|0;s=k[q+12>>2]|0;n=(s+o|0)*6810|0;v=n+(o*4209|0)|0;o=n+(ha(s,-17828)|0)|0;i[g+e>>0]=i[h+(((v+t|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((t-v|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((o+u|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((u-o|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+((m>>>18&1023)+-384)>>0]|0;p=p+1|0;if((p|0)==5)break;else q=q+20|0}r=f;return}function kp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;f=r;r=r+64|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(j[l>>1]|0,k[c>>2]|0)|0;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=n+m<<2;p=m-n<<2;n=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;m=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;q=((m+n|0)*4433|0)+1024|0;s=q+(n*6270|0)>>11;n=q+(ha(m,-15137)|0)>>11;k[b>>2]=s+o;k[b+48>>2]=o-s;k[b+16>>2]=n+p;k[b+32>>2]=p-n;a=a+1|0;if((a|0)==4)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+3|0;c=e+1|0;l=e+2|0;a=0;n=g;while(1){g=k[d+(a<<2)>>2]|0;p=(k[n>>2]|0)+16400|0;s=k[n+8>>2]|0;o=p+s<<13;m=p-s<<13;s=k[n+4>>2]|0;p=k[n+12>>2]|0;q=(p+s|0)*4433|0;t=q+(s*6270|0)|0;s=q+(ha(p,-15137)|0)|0;i[g+e>>0]=i[h+(((t+o|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((o-t|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((s+m|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((m-s|0)>>>18&1023)+-384)>>0]|0;a=a+1|0;if((a|0)==4)break;else n=n+16|0}r=f;return}function lp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;f=r;r=r+48|0;g=f;h=k[a+336>>2]|0;a=k[b+84>>2]|0;b=ha(k[a>>2]<<13,j[c>>1]|0)|0|1024;l=ha((k[a+64>>2]|0)*5793|0,j[c+32>>1]|0)|0;m=l+b|0;n=(ha(l,-2)|0)+b|0;b=ha((k[a+32>>2]|0)*10033|0,j[c+16>>1]|0)|0;l=b+m>>11;k[g>>2]=l;k[g+24>>2]=m-b>>11;b=g+12|0;k[b>>2]=n>>11;n=ha(k[a+4>>2]<<13,j[c+2>>1]|0)|0|1024;m=ha((k[a+68>>2]|0)*5793|0,j[c+34>>1]|0)|0;o=m+n|0;p=(ha(m,-2)|0)+n|0;n=ha((k[a+36>>2]|0)*10033|0,j[c+18>>1]|0)|0;m=n+o>>11;k[g+4>>2]=m;k[g+28>>2]=o-n>>11;n=p>>11;k[g+16>>2]=n;p=ha(k[a+8>>2]<<13,j[c+4>>1]|0)|0|1024;o=ha((k[a+72>>2]|0)*5793|0,j[c+36>>1]|0)|0;q=o+p|0;s=(ha(o,-2)|0)+p|0;p=ha((k[a+40>>2]|0)*10033|0,j[c+20>>1]|0)|0;c=p+q>>11;k[g+8>>2]=c;a=q-p>>11;k[g+32>>2]=a;p=s>>11;k[g+20>>2]=p;s=e+2|0;q=e+1|0;o=k[d>>2]|0;t=(l<<13)+134348800|0;l=t+(c*5793|0)|0;u=(ha(c,-11586)|0)+t|0;t=m*10033|0;i[o+e>>0]=i[h+(((l+t|0)>>>18&1023)+-384)>>0]|0;i[o+s>>0]=i[h+(((l-t|0)>>>18&1023)+-384)>>0]|0;i[o+q>>0]=i[h+((u>>>18&1023)+-384)>>0]|0;u=k[d+4>>2]|0;o=(k[b>>2]<<13)+134348800|0;b=o+(p*5793|0)|0;t=(ha(p,-11586)|0)+o|0;o=n*10033|0;i[u+e>>0]=i[h+(((b+o|0)>>>18&1023)+-384)>>0]|0;i[u+s>>0]=i[h+(((b-o|0)>>>18&1023)+-384)>>0]|0;i[u+q>>0]=i[h+((t>>>18&1023)+-384)>>0]|0;t=k[d+8>>2]|0;d=(k[g+24>>2]<<13)+134348800|0;u=d+(a*5793|0)|0;o=(ha(a,-11586)|0)+d|0;d=(k[g+28>>2]|0)*10033|0;i[t+e>>0]=i[h+(((u+d|0)>>>18&1023)+-384)>>0]|0;i[t+s>>0]=i[h+(((u-d|0)>>>18&1023)+-384)>>0]|0;i[t+q>>0]=i[h+((o>>>18&1023)+-384)>>0]|0;r=f;return}function mp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0;f=k[a+336>>2]|0;a=k[b+84>>2]|0;b=ha(j[c>>1]|0,k[a>>2]|0)|0;g=ha(j[c+16>>1]|0,k[a+32>>2]|0)|0;h=b+4100|0;b=g+h|0;l=h-g|0;g=ha(j[c+2>>1]|0,k[a+4>>2]|0)|0;h=ha(j[c+18>>1]|0,k[a+36>>2]|0)|0;a=h+g|0;c=g-h|0;h=k[d>>2]|0;i[h+e>>0]=i[f+(((a+b|0)>>>3&1023)+-384)>>0]|0;g=e+1|0;i[h+g>>0]=i[f+(((b-a|0)>>>3&1023)+-384)>>0]|0;a=k[d+4>>2]|0;i[a+e>>0]=i[f+(((c+l|0)>>>3&1023)+-384)>>0]|0;i[a+g>>0]=i[f+(((l-c|0)>>>3&1023)+-384)>>0]|0;return}function np(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;f=(k[a+336>>2]|0)+((((ha(j[c>>1]|0,k[k[b+84>>2]>>2]|0)|0)+4100|0)>>>3&1023)+-384)|0;i[(k[d>>2]|0)+e>>0]=i[f>>0]|0;return}function op(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=r;r=r+288|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;o=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;p=ha((k[c+192>>2]|0)*5793|0,j[l+96>>1]|0)|0;q=p+m|0;s=m-p-p|0;p=n-o|0;m=s+(p*5793|0)|0;t=(ha(p,-11586)|0)+s|0;s=(o+n|0)*10887|0;p=n*8875|0;n=o*2012|0;o=s-n+q|0;u=q-s+p|0;s=q-p+n|0;n=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;q=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;v=ha(ha(k[c+96>>2]|0,-10033)|0,j[l+48>>1]|0)|0;w=(p+n|0)*7447|0;x=(q+n|0)*3962|0;y=w-v+x|0;z=(p-q|0)*11409|0;A=v-z+w|0;w=z+v+x|0;x=(n-p-q|0)*10033|0;k[b>>2]=y+o>>11;k[b+256>>2]=o-y>>11;k[b+32>>2]=x+m>>11;k[b+224>>2]=m-x>>11;k[b+64>>2]=A+u>>11;k[b+192>>2]=u-A>>11;k[b+96>>2]=w+s>>11;k[b+160>>2]=s-w>>11;k[b+128>>2]=t>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+8|0;c=e+1|0;l=e+7|0;a=e+2|0;t=e+6|0;w=e+3|0;s=e+5|0;A=e+4|0;u=0;x=g;while(1){g=k[d+(u<<2)>>2]|0;m=(k[x>>2]<<13)+134348800|0;y=k[x+8>>2]|0;o=k[x+16>>2]|0;q=(k[x+24>>2]|0)*5793|0;p=q+m|0;n=m-q-q|0;q=y-o|0;m=n+(q*5793|0)|0;v=(ha(q,-11586)|0)+n|0;n=(o+y|0)*10887|0;q=y*8875|0;y=o*2012|0;o=n-y+p|0;z=p-n+q|0;n=p-q+y|0;y=k[x+4>>2]|0;q=k[x+20>>2]|0;p=k[x+28>>2]|0;B=ha(k[x+12>>2]|0,-10033)|0;C=(q+y|0)*7447|0;D=(p+y|0)*3962|0;E=C-B+D|0;F=(q-p|0)*11409|0;G=B-F+C|0;C=F+B+D|0;D=(y-q-p|0)*10033|0;i[g+e>>0]=i[h+(((E+o|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((o-E|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((D+m|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((m-D|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((G+z|0)>>>18&1023)+-384)>>0]|0;i[g+t>>0]=i[h+(((z-G|0)>>>18&1023)+-384)>>0]|0;i[g+w>>0]=i[h+(((C+n|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((n-C|0)>>>18&1023)+-384)>>0]|0;i[g+A>>0]=i[h+((v>>>18&1023)+-384)>>0]|0;u=u+1|0;if((u|0)==9)break;else x=x+32|0}r=f;return}function pp(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;f=r;r=r+320|0;g=f;h=k[a+336>>2]|0;a=0;l=c;c=k[b+84>>2]|0;b=g;while(1){m=ha(k[c>>2]<<13,j[l>>1]|0)|0|1024;n=ha(j[l+64>>1]|0,k[c+128>>2]|0)|0;o=(n*9373|0)+m|0;p=m+(ha(n,-3580)|0)|0;q=m+(ha(n,-11586)|0)>>11;n=ha(j[l+32>>1]|0,k[c+64>>2]|0)|0;m=ha(j[l+96>>1]|0,k[c+192>>2]|0)|0;s=(m+n|0)*6810|0;t=s+(n*4209|0)|0;n=s+(ha(m,-17828)|0)|0;m=t+o|0;s=o-t|0;t=n+p|0;o=p-n|0;n=ha(j[l+16>>1]|0,k[c+32>>2]|0)|0;p=ha(j[l+48>>1]|0,k[c+96>>2]|0)|0;u=ha(j[l+80>>1]|0,k[c+160>>2]|0)|0;v=ha(j[l+112>>1]|0,k[c+224>>2]|0)|0;w=v+p|0;x=p-v|0;v=x*2531|0;p=u<<13;y=w*7791|0;z=v+p|0;A=y+(n*11443|0)+z|0;B=(n*1812|0)-y+z|0;z=w*4815|0;w=p-v-(x<<12)|0;v=n-u-x<<2;x=(n*10323|0)-z-w|0;u=w+((n*5260|0)-z)|0;k[b>>2]=A+m>>11;k[b+288>>2]=m-A>>11;k[b+32>>2]=x+t>>11;k[b+256>>2]=t-x>>11;k[b+64>>2]=v+q;k[b+224>>2]=q-v;k[b+96>>2]=u+o>>11;k[b+192>>2]=o-u>>11;k[b+128>>2]=B+s>>11;k[b+160>>2]=s-B>>11;a=a+1|0;if((a|0)==8)break;else{l=l+2|0;c=c+4|0;b=b+4|0}}b=e+9|0;c=e+1|0;l=e+8|0;a=e+2|0;B=e+7|0;s=e+3|0;u=e+6|0;o=e+4|0;v=e+5|0;q=0;x=g;while(1){g=k[d+(q<<2)>>2]|0;t=(k[x>>2]<<13)+134348800|0;A=k[x+16>>2]|0;m=t+(A*9373|0)|0;z=t+(ha(A,-3580)|0)|0;n=t+(ha(A,-11586)|0)|0;A=k[x+8>>2]|0;t=k[x+24>>2]|0;w=(t+A|0)*6810|0;p=w+(A*4209|0)|0;A=w+(ha(t,-17828)|0)|0;t=p+m|0;w=m-p|0;p=A+z|0;m=z-A|0;A=k[x+4>>2]|0;z=k[x+12>>2]|0;y=k[x+20>>2]<<13;C=k[x+28>>2]|0;D=C+z|0;E=z-C|0;C=E*2531|0;z=D*7791|0;F=C+y|0;G=z+(A*11443|0)+F|0;H=(A*1812|0)-z+F|0;F=D*4815|0;D=y-C-(E<<12)|0;C=(A-E<<13)-y|0;y=(A*10323|0)-F-D|0;E=D+((A*5260|0)-F)|0;i[g+e>>0]=i[h+(((G+t|0)>>>18&1023)+-384)>>0]|0;i[g+b>>0]=i[h+(((t-G|0)>>>18&1023)+-384)>>0]|0;i[g+c>>0]=i[h+(((y+p|0)>>>18&1023)+-384)>>0]|0;i[g+l>>0]=i[h+(((p-y|0)>>>18&1023)+-384)>>0]|0;i[g+a>>0]=i[h+(((C+n|0)>>>18&1023)+-384)>>0]|0;i[g+B>>0]=i[h+(((n-C|0)>>>18&1023)+-384)>>0]|0;i[g+s>>0]=i[h+(((E+m|0)>>>18&1023)+-384)>>0]|0;i[g+u>>0]=i[h+(((m-E|0)>>>18&1023)+-384)>>0]|0;i[g+o>>0]=i[h+(((H+w|0)>>>18&1023)+-384)>>0]|0;i[g+v>>0]=i[h+(((w-H|0)>>>18&1023)+-384)>>0]|0;q=q+1|0;if((q|0)==10)break;else x=x+32|0}r=f;return}
91
+function Fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,p=0,q=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;d=r;r=r+16|0;e=d;if(Qb(a,b,c)|0){f=1;r=d;return f|0}if((b|0)>=318){if((b|0)<530)switch(b|0){case 336:{g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;j[h>>1]=0;h=(1<<m[a+84>>1])+65535&65535;g=(k[c>>2]|0)+(4-1)&~(4-1);i=k[g>>2]|0;k[c>>2]=g+4;j[i>>1]=h;f=1;r=d;return f|0}case 332:{h=(k[c>>2]|0)+(4-1)&~(4-1);i=k[h>>2]|0;k[c>>2]=h+4;j[i>>1]=1;f=1;r=d;return f|0}case 334:{i=(k[c>>2]|0)+(4-1)&~(4-1);h=k[i>>2]|0;k[c>>2]=i+4;j[h>>1]=4;f=1;r=d;return f|0}case 338:{h=j[a+156>>1]|0;i=(k[c>>2]|0)+(4-1)&~(4-1);g=k[i>>2]|0;k[c>>2]=i+4;j[g>>1]=h;h=k[a+160>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);i=k[g>>2]|0;k[c>>2]=g+4;k[i>>2]=h;f=1;r=d;return f|0}case 339:{h=j[a+86>>1]|0;i=(k[c>>2]|0)+(4-1)&~(4-1);g=k[i>>2]|0;k[c>>2]=i+4;j[g>>1]=h;f=1;r=d;return f|0}case 529:{h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;k[g>>2]=7740;f=1;r=d;return f|0}case 318:{o[1938]=.3457419276237488;o[1939]=.3585604429244995;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[h>>2]=7752;f=1;r=d;return f|0}default:{f=0;r=d;return f|0}}if((b|0)>=32995)switch(b|0){case 32995:{if((j[a+156>>1]|0)==1)l=(j[k[a+160>>2]>>1]|0)==1&1;else l=0;h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;j[g>>1]=l;f=1;r=d;return f|0}case 32998:{l=k[a+76>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[h>>2]=l;f=1;r=d;return f|0}case 32996:{l=(m[a+86>>1]|0)+65535&65535;h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;j[g>>1]=l;f=1;r=d;return f|0}case 32997:{l=k[a+64>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[h>>2]=l;f=1;r=d;return f|0}default:{f=0;r=d;return f|0}}switch(b|0){case 530:{l=j[a+192>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;j[g>>1]=l;l=j[a+194>>1]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;j[h>>1]=l;f=1;r=d;return f|0}case 531:{l=j[a+196>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;j[g>>1]=l;f=1;r=d;return f|0}case 532:{l=a+212|0;g=k[l>>2]|0;h=g;do if(!g){i=me(24)|0;k[l>>2]=i;n=i;if(!i){f=0;r=d;return f|0}if((j[a+90>>1]|0)==6){o[i>>2]=0.0;o[i+20>>2]=255.0;o[i+12>>2]=255.0;o[i+4>>2]=255.0;o[i+16>>2]=128.0;o[i+8>>2]=128.0;p=n;break}else{q=+((1<<m[a+84>>1])+-1|0);o[i>>2]=0.0;o[i+4>>2]=q;o[i+8>>2]=0.0;o[i+12>>2]=q;o[i+16>>2]=0.0;o[i+20>>2]=q;p=n;break}}else p=h;while(0);h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;k[l>>2]=p;f=1;r=d;return f|0}default:{f=0;r=d;return f|0}}}do switch(b|0){case 254:{p=k[a+80>>2]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;k[h>>2]=p;f=1;r=d;return f|0}case 258:{p=j[a+84>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 263:{p=j[a+92>>1]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;j[h>>1]=p;f=1;r=d;return f|0}case 266:{p=j[a+94>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 274:{p=j[a+96>>1]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;j[h>>1]=p;f=1;r=d;return f|0}case 277:{p=j[a+98>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 278:{p=k[a+100>>2]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;k[h>>2]=p;f=1;r=d;return f|0}case 280:{p=j[a+104>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 281:{p=j[a+106>>1]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;j[h>>1]=p;f=1;r=d;return f|0}case 284:{p=j[a+126>>1]|0;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 296:{p=j[a+124>>1]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);h=k[l>>2]|0;k[c>>2]=l+4;j[h>>1]=p;f=1;r=d;return f|0}case 317:{p=k[k[a+576>>2]>>2]&65535;h=(k[c>>2]|0)+(4-1)&~(4-1);l=k[h>>2]|0;k[c>>2]=h+4;j[l>>1]=p;f=1;r=d;return f|0}case 301:{p=a+200|0;l=k[p>>2]|0;do if(!l){h=a+200|0;g=a+208|0;k[g>>2]=0;n=a+204|0;k[n>>2]=0;k[h>>2]=0;i=j[a+84>>1]|0;if((i&65535)<=29?(s=1<<(i&65535),i=s<<1,t=me(i)|0,k[h>>2]=t,u=t,(t|0)!=0):0){j[t>>1]=0;if((s|0)>1){q=+(s|0)+-1.0;v=1;do{w=~~+V(+(+Y(+(+(v|0)/q),2.2)*65535.0+.5))&65535;j[t+(v<<1)>>1]=w;v=v+1|0}while((v|0)!=(s|0))}s=a+98|0;v=a+156|0;if(((m[s>>1]|0)-(m[v>>1]|0)|0)<=1){x=v;y=s;z=u;break}t=me(i)|0;k[n>>2]=t;if((t|0)!=0?(qe(t,k[h>>2]|0,i),t=me(i)|0,k[g>>2]=t,(t|0)!=0):0){qe(t,k[h>>2]|0,i);x=v;y=s;z=k[p>>2]|0;break}s=k[h>>2]|0;if(s)ne(s);s=k[n>>2]|0;if(s)ne(s);s=k[g>>2]|0;if(s)ne(s);k[g>>2]=0;k[n>>2]=0;k[h>>2]=0}vc(k[a+628>>2]|0,k[a>>2]|0,140044,e);f=0;r=d;return f|0}else{x=a+156|0;y=a+98|0;z=l}while(0);l=(k[c>>2]|0)+(4-1)&~(4-1);p=k[l>>2]|0;k[c>>2]=l+4;k[p>>2]=z;if(((m[y>>1]|0)-(m[x>>1]|0)|0)<=1){f=1;r=d;return f|0}p=k[a+204>>2]|0;l=(k[c>>2]|0)+(4-1)&~(4-1);s=k[l>>2]|0;k[c>>2]=l+4;k[s>>2]=p;p=k[a+208>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);l=k[s>>2]|0;k[c>>2]=s+4;k[l>>2]=p;f=1;r=d;return f|0}default:{f=0;r=d;return f|0}}while(0);return 0}function Ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=Fe(a,b,e)|0;r=d;return c|0}function He(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0.0,j=0.0,k=0.0,l=0.0;h=+(b>>>0)*100.0/255.0;if(h<8.855999946594238){b=a+20|0;i=h*+o[b>>2]/903.2919921875;o[f>>2]=i;j=i/+o[b>>2]*7.7870001792907715+.13793103396892548}else{i=(h+16.0)/116.0;o[f>>2]=i*(i*(i*+o[a+20>>2]));j=i}i=j+ +(c|0)/500.0;h=+o[a+16>>2];if(i<.2069000005722046)k=h*(i+-.1379300057888031)/7.7870001792907715;else k=i*(i*(h*i));o[e>>2]=k;k=j-+(d|0)/200.0;j=+o[a+24>>2];if(k<.2069000005722046){l=j*(k+-.1379300057888031)/7.7870001792907715;o[g>>2]=l;return}else{l=k*(k*(j*k));o[g>>2]=l;return}}function Ie(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=e|0;f=f|0;g=g|0;var h=0.0,i=0.0,j=0.0,l=0.0,m=0.0,n=0.0,p=0,q=0;h=+o[a+28>>2]*b+ +o[a+32>>2]*c+ +o[a+36>>2]*d;i=+o[a+40>>2]*b+ +o[a+44>>2]*c+ +o[a+48>>2]*d;j=+o[a+52>>2]*b+ +o[a+56>>2]*c+ +o[a+60>>2]*d;d=+o[a+88>>2];c=h>d?h:d;h=+o[a+92>>2];b=i>h?i:h;i=+o[a+96>>2];l=j>i?j:i;j=+o[a+64>>2];m=+o[a+68>>2];n=+o[a+72>>2];p=~~(((c<j?c:j)-d)/+o[a+4>>2]);q=k[a>>2]|0;d=+o[a+112+(((q|0)<(p|0)?q:p)<<2)>>2];k[e>>2]=~~(d+(d>0.0?.5:-.5))>>>0;p=~~(((b<m?b:m)-h)/+o[a+8>>2]);q=k[a>>2]|0;h=+o[a+6116+(((q|0)<(p|0)?q:p)<<2)>>2];k[f>>2]=~~(h+(h>0.0?.5:-.5))>>>0;p=~~(((l<n?l:n)-i)/+o[a+12>>2]);q=k[a>>2]|0;i=+o[a+12120+(((q|0)<(p|0)?q:p)<<2)>>2];k[g>>2]=~~(i+(i>0.0?.5:-.5))>>>0;p=k[e>>2]|0;q=k[a+76>>2]|0;k[e>>2]=p>>>0<q>>>0?p:q;q=k[f>>2]|0;p=k[a+80>>2]|0;k[f>>2]=q>>>0<p>>>0?q:p;p=k[g>>2]|0;q=k[a+84>>2]|0;k[g>>2]=p>>>0<q>>>0?p:q;return}function Je(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0,g=0.0,h=0,i=0.0,j=0.0,l=0,m=0,n=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;k[a>>2]=1500;qe(a+28|0,b,84);d=1.0/+o[a+100>>2];b=a+64|0;e=+o[b>>2];f=a+88|0;g=+o[f>>2];h=k[a>>2]|0;o[a+4>>2]=(e-g)/+(h|0);if((h|0)<0){i=e;j=g;l=h}else{m=a+76|0;n=h;h=0;while(1){g=+((k[m>>2]|0)>>>0)*+Y(+(+(h|0)/+(n|0)),+d);o[a+112+(h<<2)>>2]=g;p=k[a>>2]|0;if((h|0)<(p|0)){n=p;h=h+1|0}else{q=p;break}}i=+o[b>>2];j=+o[f>>2];l=q}d=1.0/+o[a+104>>2];o[a+8>>2]=(i-j)/+(l|0);if((l|0)<0){r=i;s=j;t=l}else{q=a+80|0;h=l;l=0;while(1){j=+((k[q>>2]|0)>>>0)*+Y(+(+(l|0)/+(h|0)),+d);o[a+6116+(l<<2)>>2]=j;n=k[a>>2]|0;if((l|0)<(n|0)){h=n;l=l+1|0}else{u=n;break}}r=+o[b>>2];s=+o[f>>2];t=u}d=1.0/+o[a+108>>2];o[a+12>>2]=(r-s)/+(t|0);if((t|0)<0){v=k[c>>2]|0;w=a+16|0;k[w>>2]=v;x=c+4|0;y=k[x>>2]|0;z=a+20|0;k[z>>2]=y;A=c+8|0;B=k[A>>2]|0;C=a+24|0;k[C>>2]=B;return 0}u=a+84|0;f=t;t=0;while(1){s=+((k[u>>2]|0)>>>0)*+Y(+(+(t|0)/+(f|0)),+d);o[a+12120+(t<<2)>>2]=s;f=k[a>>2]|0;if((t|0)>=(f|0))break;else t=t+1|0}v=k[c>>2]|0;w=a+16|0;k[w>>2]=v;x=c+4|0;y=k[x>>2]|0;z=a+20|0;k[z>>2]=y;A=c+8|0;B=k[A>>2]|0;C=a+24|0;k[C>>2]=B;return 0}function Ke(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=(c|0)<0?0:(c|0)>255?255:c;c=(d|0)<0?0:(d|0)>255?255:d;d=(k[a+20>>2]|0)+((b>>>0>255?255:b)<<2)|0;b=(k[(k[a+4>>2]|0)+(c<<2)>>2]|0)+(k[d>>2]|0)|0;k[e>>2]=(b|0)<0?0:(b|0)>255?255:b;b=((k[(k[a+12>>2]|0)+(c<<2)>>2]|0)+(k[(k[a+16>>2]|0)+(h<<2)>>2]|0)>>16)+(k[d>>2]|0)|0;k[f>>2]=(b|0)<0?0:(b|0)>255?255:b;b=(k[(k[a+8>>2]|0)+(h<<2)>>2]|0)+(k[d>>2]|0)|0;k[g>>2]=(b|0)<0?0:(b|0)>255?255:b;return}function Le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0,g=0.0,h=0.0,j=0,l=0,m=0,n=0,p=0.0,q=0,r=0,s=0,t=0;pe(a+24|0,0,256);d=a+280|0;k[a>>2]=d;e=0;do{i[d+e>>0]=e;e=e+1|0}while((e|0)!=256);pe(d+256|0,255,512);k[a+4>>2]=d+768;k[a+8>>2]=d+1792;k[a+12>>2]=d+2816;k[a+16>>2]=d+3840;k[a+20>>2]=d+4864;f=+o[b>>2];g=2.0-f*2.0;a=~~(g*65536.0+.5);h=+o[b+4>>2];e=0-~~(f*g/h*65536.0+.5)|0;g=+o[b+8>>2];f=2.0-g*2.0;b=~~(f*65536.0+.5);j=~~(g*f/h*65536.0+.5);h=+o[c+16>>2]+-128.0;l=~~h;f=+o[c+20>>2]+-128.0-h;h=f!=0.0?f:1.0;f=+o[c+8>>2]+-128.0;m=~~f;g=+o[c+12>>2]+-128.0-f;f=g!=0.0?g:1.0;g=+o[c>>2];n=~~g;p=+o[c+4>>2]-g;g=p!=0.0?p:1.0;c=0;q=-128;while(1){r=~~(+(q-l|0)*127.0/h);s=~~(+(q-m|0)*127.0/f);t=(ha(r,a)|0)+32768>>16;k[d+(c+192<<2)>>2]=t;t=(ha(s,b)|0)+32768>>16;k[d+(c+448<<2)>>2]=t;t=ha(r,e)|0;k[d+(c+704<<2)>>2]=t;t=32768-(ha(s,j)|0)|0;k[d+(c+960<<2)>>2]=t;k[d+(c+1216<<2)>>2]=~~(+(q+128-n|0)*255.0/g);c=c+1|0;if((c|0)==256)break;else q=q+1|0}return 0}function Me(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=140114;vc(p,q,140080,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=140114;vc(m,n,140123,c);r=d;return -1}return 0}function Ne(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=143001;vc(p,q,140080,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=143001;vc(m,n,140123,c);r=d;return -1}return 0}function Oe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=142996;vc(p,q,140080,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=142996;vc(m,n,140123,c);r=d;return -1}return 0}function Pe(a){a=a|0;return 1}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=140114;vc(p,q,140176,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=140114;vc(m,n,140210,c);r=d;return -1}return 0}function Re(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=143001;vc(p,q,140176,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=143001;vc(m,n,140210,c);r=d;return -1}return 0}function Se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;d=r;r=r+16|0;c=d+8|0;b=d;e=j[a+88>>1]|0;f=k[1940]|0;a:do if(f){g=f;while(1){h=k[g+4>>2]|0;if((j[h+4>>1]|0)==e<<16>>16){i=h;break}g=k[g>>2]|0;if(!g){l=3;break a}}g=k[a+628>>2]|0;h=k[a>>2]|0;if(!i){m=g;n=h;l=11}else{o=i;p=g;q=h;l=10}}else l=3;while(0);b:do if((l|0)==3){c:do if(k[1941]|0){i=7764;while(1){if((j[i+4>>1]|0)==e<<16>>16){s=i;break}i=i+12|0;if(!(k[i>>2]|0))break c}o=s;p=k[a+628>>2]|0;q=k[a>>2]|0;l=10;break b}while(0);m=k[a+628>>2]|0;n=k[a>>2]|0;l=11}while(0);if((l|0)==10){k[b>>2]=k[o>>2];k[b+4>>2]=142996;vc(p,q,140176,b);r=d;return -1}else if((l|0)==11){k[c>>2]=e&65535;k[c+4>>2]=142996;vc(m,n,140210,c);r=d;return -1}return 0}function Te(a,b){a=a|0;b=b|0;b=r;r=r+16|0;vc(k[a+628>>2]|0,k[a>>2]|0,140263,b);r=b;return 0}function Ue(a,b){a=a|0;b=b|0;return 1}function Ve(a){a=a|0;var b=0;k[a+504>>2]=4;k[a+500>>2]=1;k[a+508>>2]=5;k[a+512>>2]=20;k[a+532>>2]=6;k[a+540>>2]=7;k[a+548>>2]=8;k[a+520>>2]=1;k[a+516>>2]=5;k[a+524>>2]=20;k[a+528>>2]=5;k[a+536>>2]=9;k[a+544>>2]=10;k[a+552>>2]=11;k[a+556>>2]=1;k[a+560>>2]=21;k[a+564>>2]=1;k[a+568>>2]=22;k[a+572>>2]=8;b=a+12|0;k[b>>2]=k[b>>2]&-131329;return}function We(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=b&65535;d=k[1940]|0;a:do if(!d)e=3;else{f=d;while(1){g=k[f+4>>2]|0;if((j[g+4>>1]|0)==c<<16>>16){h=g;break a}f=k[f>>2]|0;if(!f){e=3;break}}}while(0);b:do if((e|0)==3)if(!(k[1941]|0))h=0;else{d=7764;while(1){if((j[d+4>>1]|0)==c<<16>>16){h=d;break b}d=d+12|0;if(!(k[d>>2]|0)){h=0;break}}}while(0);k[a+504>>2]=4;k[a+500>>2]=1;k[a+508>>2]=5;k[a+512>>2]=20;k[a+532>>2]=6;k[a+540>>2]=7;k[a+548>>2]=8;k[a+520>>2]=1;k[a+516>>2]=5;k[a+524>>2]=20;k[a+528>>2]=5;k[a+536>>2]=9;k[a+544>>2]=10;k[a+552>>2]=11;k[a+556>>2]=1;k[a+560>>2]=21;k[a+564>>2]=1;k[a+568>>2]=22;k[a+572>>2]=8;c=a+12|0;k[c>>2]=k[c>>2]&-131329;if(!h){i=1;return i|0}i=yb[k[h+8>>2]&127](a,b)|0;return i|0}function Xe(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;b=k[1940]|0;a:do if(b){c=b;while(1){d=k[c+4>>2]|0;if((j[d+4>>1]|0)==a<<16>>16){e=d;break}c=k[c>>2]|0;if(!c)break a}return e|0}while(0);if(!(k[1941]|0)){e=0;return e|0}else f=7764;while(1){if((j[f+4>>1]|0)==a<<16>>16){e=f;g=7;break}f=f+12|0;if(!(k[f>>2]|0)){e=0;g=7;break}}if((g|0)==7)return e|0;return 0}function Ye(a){a=a|0;return 1}function Ze(a){a=a|0;return}function _e(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;b=r;r=r+112|0;c=b+88|0;d=b+80|0;e=b+72|0;f=b+64|0;g=b+56|0;h=b+48|0;i=b+40|0;j=b+32|0;l=b+24|0;n=b+100|0;o=b+96|0;p=b+92|0;q=b+16|0;s=b+8|0;t=b;u=a+16|0;v=u;w=k[v>>2]|0;x=k[v+4>>2]|0;if((w|0)==0&(x|0)==0){y=af(a,1,1,0)|0;r=b;return y|0}v=a+12|0;do if(!(k[v>>2]&524288)){z=a+428|0;A=k[z>>2]|0;if((A|0)==(w|0)&0==(x|0)){k[z>>2]=0;B=u;k[B>>2]=0;k[B+4>>2]=0;B=a+628|0;xb[k[a+640>>2]&63](k[B>>2]|0,4,0,0)|0;if((nb[k[a+636>>2]&63](k[B>>2]|0,z,4)|0)==4)break;vc(k[B>>2]|0,k[a>>2]|0,140316,l);y=0;r=b;return y|0}B=a+640|0;z=a+628|0;C=a+632|0;D=A;while(1){A=xb[k[B>>2]&63](k[z>>2]|0,D,0,0)|0;if(!((A|0)==(D|0)&(L|0)==0)){E=10;break}if((nb[k[C>>2]&63](k[z>>2]|0,n,2)|0)!=2){E=10;break}if(k[v>>2]&128)Qd(n);A=D+2|0;xb[k[B>>2]&63](k[z>>2]|0,((m[n>>1]|0)*12|0)+A|0,0,0)|0;if((nb[k[C>>2]&63](k[z>>2]|0,o,4)|0)!=4){E=14;break}if(k[v>>2]&128)Rd(o);D=k[o>>2]|0;F=u;if((D|0)==(k[F>>2]|0)?0==(k[F+4>>2]|0):0){G=A;E=18;break}}if((E|0)==10){vc(k[z>>2]|0,140343,140364,j);y=0;r=b;return y|0}else if((E|0)==14){vc(k[z>>2]|0,140343,140395,i);y=0;r=b;return y|0}else if((E|0)==18){k[p>>2]=0;xb[k[B>>2]&63](k[z>>2]|0,((m[n>>1]|0)*12|0)+G|0,0,0)|0;if((nb[k[a+636>>2]&63](k[z>>2]|0,p,4)|0)==4){D=u;k[D>>2]=0;k[D+4>>2]=0;break}vc(k[z>>2]|0,140343,140425,h);y=0;r=b;return y|0}}else{D=a+432|0;C=D;A=k[C>>2]|0;F=k[C+4>>2]|0;if((A|0)==(w|0)&(F|0)==(x|0)){C=D;k[C>>2]=0;k[C+4>>2]=0;C=u;k[C>>2]=0;k[C+4>>2]=0;C=a+628|0;xb[k[a+640>>2]&63](k[C>>2]|0,8,0,0)|0;if((nb[k[a+636>>2]&63](k[C>>2]|0,D,8)|0)==8)break;vc(k[C>>2]|0,k[a>>2]|0,140316,g);y=0;r=b;return y|0}C=a+640|0;D=a+628|0;H=a+632|0;I=A;A=F;while(1){F=xb[k[C>>2]&63](k[D>>2]|0,I,A,0)|0;if(!((F|0)==(I|0)&(L|0)==(A|0))){E=27;break}if((nb[k[H>>2]&63](k[D>>2]|0,q,8)|0)!=8){E=27;break}if(k[v>>2]&128)Sd(q);F=q;J=k[F>>2]|0;K=k[F+4>>2]|0;if(K>>>0>0|(K|0)==0&J>>>0>65535){E=31;break}K=k[C>>2]|0;F=k[D>>2]|0;M=sr(I|0,A|0,8,0)|0;N=sr(M|0,L|0,(J&65535)*20|0,0)|0;J=L;xb[K&63](F,N,J,0)|0;if((nb[k[H>>2]&63](k[D>>2]|0,s,8)|0)!=8){E=33;break}if(k[v>>2]&128)Sd(s);F=s;I=k[F>>2]|0;A=k[F+4>>2]|0;F=u;if((I|0)==(k[F>>2]|0)?(A|0)==(k[F+4>>2]|0):0){O=N;P=J;E=37;break}}if((E|0)==27){vc(k[D>>2]|0,140343,140364,f);y=0;r=b;return y|0}else if((E|0)==31){vc(k[D>>2]|0,140343,140454,e);y=0;r=b;return y|0}else if((E|0)==33){vc(k[D>>2]|0,140343,140395,d);y=0;r=b;return y|0}else if((E|0)==37){A=t;k[A>>2]=0;k[A+4>>2]=0;xb[k[C>>2]&63](k[D>>2]|0,O,P,0)|0;if((nb[k[a+636>>2]&63](k[D>>2]|0,t,8)|0)==8){A=u;k[A>>2]=0;k[A+4>>2]=0;break}vc(k[D>>2]|0,140343,140425,c);y=0;r=b;return y|0}}while(0);y=af(a,1,1,0)|0;r=b;return y|0}function $e(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0;f=r;r=r+176|0;g=f+128|0;h=f+120|0;i=f+112|0;l=f+104|0;n=f+96|0;o=f+88|0;p=f+80|0;q=f+72|0;s=f+64|0;t=f+56|0;u=f+48|0;v=f+40|0;w=f+160|0;x=f+140|0;y=f+138|0;z=f+136|0;A=f+16|0;B=f+8|0;C=f;D=f+132|0;j[y>>1]=0;j[z>>1]=0;E=A;k[E>>2]=0;k[E+4>>2]=0;E=B;k[E>>2]=0;k[E+4>>2]=0;E=b&65535;$b(a,E,0)|0;F=a+12|0;if(k[F>>2]&2048){vc(k[a+628>>2]|0,140508,140523,f+24|0);G=0;r=f;return G|0}H=a+16|0;I=H;J=k[I>>2]|0;K=k[I+4>>2]|0;if((J|0)==0&(K|0)==0){vc(k[a+628>>2]|0,140508,140587,f+32|0);G=0;r=f;return G|0}I=a+640|0;M=a+628|0;N=xb[k[I>>2]&63](k[M>>2]|0,J,K,0)|0;K=L;J=H;if(!((N|0)==(k[J>>2]|0)?(K|0)==(k[J+4>>2]|0):0)){J=k[M>>2]|0;k[v>>2]=k[a>>2];vc(J,140508,140644,v);G=0;r=f;return G|0}v=a+632|0;J=k[v>>2]|0;H=k[M>>2]|0;if(!(k[F>>2]&524288)){if((nb[J&63](H,w,2)|0)!=2){O=k[M>>2]|0;k[u>>2]=k[a>>2];vc(O,140508,140684,u);G=0;r=f;return G|0}if(k[F>>2]&128)Qd(w);u=sr(N|0,K|0,2,0)|0;P=u;Q=L;R=12;S=18}else{if((nb[J&63](H,C,8)|0)!=8){H=k[M>>2]|0;k[t>>2]=k[a>>2];vc(H,140508,140684,t);G=0;r=f;return G|0}if(k[F>>2]&128)Sd(C);t=k[C>>2]&65535;j[w>>1]=t;C=sr(N|0,K|0,8,0)|0;T=t;U=C;V=L;W=20}while(1){if((S|0)==18){S=0;T=j[w>>1]|0;U=P;V=Q;W=R}if(!(T<<16>>16)){S=26;break}if((nb[k[v>>2]&63](k[M>>2]|0,x,W)|0)!=(W|0)){S=21;break}C=j[x>>1]|0;j[y>>1]=C;if(!(k[F>>2]&128))X=C;else{Qd(y);X=j[y>>1]|0}if(X<<16>>16==b<<16>>16)break;C=sr(U|0,V|0,W|0,0)|0;P=C;Q=L;R=W;S=18}if((S|0)==21){R=k[M>>2]|0;k[s>>2]=k[a>>2];vc(R,140508,140722,s);G=0;r=f;return G|0}if((S|0)==26?(j[y>>1]|0)!=b<<16>>16:0){b=k[M>>2]|0;k[q>>2]=k[a>>2];k[q+4>>2]=E;vc(b,140508,140761,q);G=0;r=f;return G|0}q=x+2|0;j[z>>1]=j[q>>1]|0;b=k[F>>2]|0;if(!(b&128))Y=b;else{Qd(z);Y=k[F>>2]|0}b=x+4|0;if(Y&524288){E=b;y=E;S=E+4|0;E=m[S>>1]|m[S+2>>1]<<16;S=A;k[S>>2]=m[y>>1]|m[y+2>>1]<<16;k[S+4>>2]=E;if(!(Y&128))Z=Y;else{Sd(A);Z=k[F>>2]|0}E=x+12|0;S=E;y=E+4|0;E=m[y>>1]|m[y+2>>1]<<16;y=B;k[y>>2]=m[S>>1]|m[S+2>>1]<<16;k[y+4>>2]=E;if(Z&128)Sd(B)}else{Z=m[b>>1]|m[b+2>>1]<<16;k[D>>2]=Z;if(!(Y&128)){_=Z;$=Y}else{Rd(D);_=k[D>>2]|0;$=k[F>>2]|0}Y=A;k[Y>>2]=_;k[Y+4>>2]=0;Y=x+8|0;_=m[Y>>1]|m[Y+2>>1]<<16;k[D>>2]=_;if(!($&128))aa=_;else{Rd(D);aa=k[D>>2]|0}D=B;k[D>>2]=aa;k[D+4>>2]=0}a:do if((ac(c)|0)==8?(k[F>>2]&524288|0)==0:0)switch(c|0){case 16:{ba=4;break a;break}case 17:{ba=9;break a;break}case 18:{ba=13;break a;break}default:{ba=c;break a}}else ba=c;while(0);D=Ee(a,d,ac(ba)|0,140788)|0;if(!D){G=0;r=f;return G|0}b:do if((ba|0)==(c|0))wr(D|0,e|0,ha(ac(c)|0,d)|0)|0;else{if((c|0)==17&(ba|0)==9){if((d|0)<=0)break;aa=0;while(1){_=e+(aa<<3)|0;$=k[_>>2]|0;Y=k[_+4>>2]|0;k[D+(aa<<2)>>2]=$;aa=aa+1|0;if(!(($|0)==($|0)&((($|0)<0)<<31>>31|0)==(Y|0)))break;if((aa|0)>=(d|0))break b}ne(D);vc(k[M>>2]|0,140508,140806,p);G=0;r=f;return G|0}if((c|0)==16&(ba|0)==4){if((d|0)<=0)break}else if(!((c|0)==18&(ba|0)==13&(d|0)>0))break;aa=0;while(1){Y=e+(aa<<3)|0;$=k[Y>>2]|0;_=k[Y+4>>2]|0;k[D+(aa<<2)>>2]=$;aa=aa+1|0;if(!(($|0)==($|0)&0==(_|0)))break;if((aa|0)>=(d|0))break b}ne(D);vc(k[M>>2]|0,140508,140806,o);G=0;r=f;return G|0}while(0);do if((ac(ba)|0)>1?(k[F>>2]&128|0)!=0:0){if((ac(ba)|0)==2){Td(D,d);break}if((ac(ba)|0)==4){Vd(D,d);break}if((ac(ba)|0)==8)Wd(D,d)}while(0);o=(k[F>>2]&524288|0)==0;e=ha(ac(ba)|0,d)|0;if(o)if((e|0)<5){o=sr(U|0,V|0,8,0)|0;c=B;k[c>>2]=o;k[c+4>>2]=L;ca=1}else ca=0;else if((e|0)<9){e=sr(U|0,V|0,12,0)|0;c=B;k[c>>2]=e;k[c+4>>2]=L;ca=1}else ca=0;c=A;if(((k[c>>2]|0)==(d|0)?(k[c+4>>2]|0)==(((d|0)<0)<<31>>31|0):0)?(j[z>>1]|0)==(ba&65535)<<16>>16:0){c=B;e=xb[k[I>>2]&63](k[M>>2]|0,k[c>>2]|0,k[c+4>>2]|0,0)|0;c=B;if(!((e|0)==(k[c>>2]|0)?(L|0)==(k[c+4>>2]|0):0)){ne(D);c=k[M>>2]|0;k[n>>2]=k[a>>2];vc(c,140508,140644,n);G=0;r=f;return G|0}n=k[a+636>>2]|0;c=k[M>>2]|0;e=ha(ac(ba)|0,d)|0;o=nb[n&63](c,D,e)|0;e=(o|0)==(ha(ac(ba)|0,d)|0);ne(D);if(e){G=1;r=f;return G|0}vc(k[M>>2]|0,140508,140425,l);G=0;r=f;return G|0}if(!ca){ca=xb[k[I>>2]&63](k[M>>2]|0,0,0,2)|0;l=B;k[l>>2]=ca;k[l+4>>2]=L;l=k[a+636>>2]|0;ca=k[M>>2]|0;e=ha(ac(ba)|0,d)|0;o=nb[l&63](ca,D,e)|0;if((o|0)!=(ha(ac(ba)|0,d)|0)){ne(D);vc(k[M>>2]|0,140508,140425,i);G=0;r=f;return G|0}}else wr(B|0,D|0,ha(ac(ba)|0,d)|0)|0;ne(D);D=ba&65535;j[z>>1]=D;j[q>>1]=D;D=k[F>>2]|0;if(!(D&128))da=D;else{Qd(q);da=k[F>>2]|0}if(!(da&524288)){q=k[A>>2]|0;j[b>>1]=q;j[b+2>>1]=q>>>16;if(!(da&128))ea=da;else{Rd(b);ea=k[F>>2]|0}q=k[B>>2]|0;D=x+8|0;j[D>>1]=q;j[D+2>>1]=q>>>16;if(ea&128)Rd(D)}else{D=A;A=k[D>>2]|0;ea=k[D+4>>2]|0;D=b;q=D;j[q>>1]=A;j[q+2>>1]=A>>>16;A=D+4|0;j[A>>1]=ea;j[A+2>>1]=ea>>>16;if(!(da&128))fa=da;else{Sd(b);fa=k[F>>2]|0}F=x+12|0;b=B;B=k[b>>2]|0;da=k[b+4>>2]|0;b=F;ea=b;j[ea>>1]=B;j[ea+2>>1]=B>>>16;B=b+4|0;j[B>>1]=da;j[B+2>>1]=da>>>16;if(fa&128)Sd(F)}F=xb[k[I>>2]&63](k[M>>2]|0,U,V,0)|0;if(!((F|0)==(U|0)&(L|0)==(V|0))){V=k[M>>2]|0;k[h>>2]=k[a>>2];vc(V,140508,140644,h);G=0;r=f;return G|0}if((nb[k[a+636>>2]&63](k[M>>2]|0,x,W)|0)==(W|0)){G=1;r=f;return G|0}W=k[M>>2]|0;k[g>>2]=k[a>>2];vc(W,140508,140848,g);G=0;r=f;return G|0}function af(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,ob=0,pb=0,rb=0,sb=0,tb=0,vb=0,wb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Qb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0.0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0;e=r;r=r+352|0;f=e+288|0;g=e+280|0;h=e+272|0;l=e+264|0;n=e+256|0;p=e+248|0;q=e+240|0;s=e+232|0;t=e+224|0;u=e+216|0;v=e+208|0;w=e+200|0;x=e+192|0;y=e+184|0;z=e+176|0;A=e+168|0;B=e+160|0;C=e+152|0;D=e+144|0;E=e+136|0;F=e+128|0;G=e+120|0;H=e+112|0;I=e+104|0;J=e+96|0;K=e+88|0;M=e+80|0;N=e+72|0;O=e+64|0;P=e+56|0;Q=e+48|0;R=e+40|0;S=e+32|0;T=e+328|0;U=e+24|0;V=e+324|0;W=e+336|0;X=e+316|0;Y=e+16|0;Z=e+8|0;_=e;$=e+320|0;aa=e+334|0;ba=e+312|0;ca=e+308|0;da=e+332|0;ea=e+304|0;fa=e+300|0;ga=e+296|0;ha=e+292|0;if(!(k[a+8>>2]|0)){ia=1;r=e;return ia|0}gc(a)|0;ja=(c|0)!=0;c=a+12|0;if(ja){ka=k[c>>2]|0;if((ka&4096|0)!=0?(k[c>>2]=ka&-4097,(ub[k[a+528>>2]&63](a)|0)==0):0){vc(k[a+628>>2]|0,140888,140910,S);ia=0;r=e;return ia|0}qb[k[a+556>>2]&127](a);S=a+608|0;if(((k[S>>2]|0)>0?(k[c>>2]&64|0)!=0:0)?(je(a)|0)==0:0){vc(k[a+628>>2]|0,140888,140953,R);ia=0;r=e;return ia|0}R=k[c>>2]|0;if((R&512|0)!=0?(ka=a+588|0,la=k[ka>>2]|0,(la|0)!=0):0){ne(la);k[S>>2]=0;k[ka>>2]=0;k[ka+4>>2]=0;k[ka+8>>2]=0;k[ka+12>>2]=0;ma=k[c>>2]|0}else ma=R;k[c>>2]=ma&-81}ma=(b|0)!=0;b=a+40|0;R=a+156|0;ka=a+44|0;S=a+184|0;la=a+464|0;na=a+188|0;oa=a+472|0;pa=a+480|0;qa=a+660|0;ra=a+656|0;sa=a+216|0;ta=a+220|0;ua=a+84|0;va=a+98|0;wa=a+200|0;xa=a+204|0;ya=a+208|0;za=a+212|0;Aa=a+196|0;Ba=a+192|0;Ca=a+152|0;Da=a+76|0;Ea=a+64|0;Fa=a+112|0;Ga=a+108|0;Ha=a+86|0;Ia=a+140|0;Ka=a+144|0;La=a+148|0;Ma=a+168|0;Na=a+172|0;Oa=a+176|0;Pa=a+136|0;Qa=a+124|0;Ra=a+126|0;Sa=a+106|0;Ta=a+104|0;Ua=a+100|0;Va=a+96|0;Wa=a+94|0;Xa=a+92|0;Ya=a+90|0;Za=a+88|0;_a=a+80|0;$a=a+128|0;ab=a+132|0;bb=a+116|0;cb=a+120|0;db=a+68|0;eb=a+72|0;fb=a+56|0;gb=a+60|0;hb=a+224|0;ib=a+16|0;jb=a+640|0;kb=a+628|0;lb=a+432|0;mb=a+636|0;ob=a+632|0;pb=a+428|0;rb=(d|0)==0;sb=a+448|0;tb=a+228|0;vb=0;wb=0;a:while(1){k[$>>2]=0;do if(ma){do if(k[b>>2]&2){yb=k[fb>>2]|0;if(!vb){k[$>>2]=2;break}if(yb>>>0<65536){j[T>>1]=yb;if(k[c>>2]&128)Qd(T);zb=bf(a,$,vb,256,3,1,2,T)|0}else{k[T>>2]=yb;if(k[c>>2]&128)Rd(T);zb=bf(a,$,vb,256,4,1,4,T)|0}if(!zb){Ab=vb;Bb=593;break a}yb=k[gb>>2]|0;if(yb>>>0<65536){j[T>>1]=yb;if(k[c>>2]&128)Qd(T);Cb=bf(a,$,vb,257,3,1,2,T)|0}else{k[T>>2]=yb;if(k[c>>2]&128)Rd(T);Cb=bf(a,$,vb,257,4,1,4,T)|0}if(!Cb){Ab=vb;Bb=593;break a}}while(0);do if(k[b>>2]&4){yb=k[db>>2]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+2;break}if(yb>>>0<65536){j[T>>1]=yb;if(k[c>>2]&128)Qd(T);Db=bf(a,$,vb,322,3,1,2,T)|0}else{k[T>>2]=yb;if(k[c>>2]&128)Rd(T);Db=bf(a,$,vb,322,4,1,4,T)|0}if(!Db){Ab=vb;Bb=593;break a}yb=k[eb>>2]|0;if(yb>>>0<65536){j[T>>1]=yb;if(k[c>>2]&128)Qd(T);Eb=bf(a,$,vb,323,3,1,2,T)|0}else{k[T>>2]=yb;if(k[c>>2]&128)Rd(T);Eb=bf(a,$,vb,323,4,1,4,T)|0}if(!Eb){Ab=vb;Bb=593;break a}}while(0);yb=k[b>>2]|0;if(!(yb&8))Fb=yb;else{if(!(cf(a,$,vb,282,+o[bb>>2])|0)){Ab=vb;Bb=593;break a}if(!(cf(a,$,vb,283,+o[cb>>2])|0)){Ab=vb;Bb=593;break a}Fb=k[b>>2]|0}if(!(Fb&16))Gb=Fb;else{if(!(cf(a,$,vb,286,+o[$a>>2])|0)){Ab=vb;Bb=593;break a}if(!(cf(a,$,vb,287,+o[ab>>2])|0)){Ab=vb;Bb=593;break a}Gb=k[b>>2]|0}do if(!(Gb&32))Hb=Gb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Hb=Gb;break}k[T>>2]=k[_a>>2];if(k[c>>2]&128)Rd(T);if(!(bf(a,$,vb,254,4,1,4,T)|0)){Ab=vb;Bb=593;break a}Hb=k[b>>2]|0}while(0);do if(!(Hb&64))Ib=Hb;else{yb=j[ua>>1]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;Ib=Hb;break}Jb=me(m[va>>1]<<1)|0;if(!Jb){Kb=vb;Bb=76;break a}if(!(j[va>>1]|0))Lb=0;else{Mb=Jb;Nb=0;while(1){j[Mb>>1]=yb;Nb=Nb+1<<16>>16;Ob=j[va>>1]|0;if((Nb&65535)>=(Ob&65535)){Lb=Ob;break}else Mb=Mb+2|0}}Mb=Lb&65535;if(k[c>>2]&128)Td(Jb,Mb);Nb=bf(a,$,vb,258,3,Mb,Mb<<1,Jb)|0;ne(Jb);if(!Nb){Ab=vb;Bb=593;break a}Ib=k[b>>2]|0}while(0);do if(!(Ib&128))Qb=Ib;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Qb=Ib;break}j[T>>1]=j[Za>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,259,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Qb=k[b>>2]|0}while(0);do if(!(Qb&256))Tb=Qb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Tb=Qb;break}j[T>>1]=j[Ya>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,262,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Tb=k[b>>2]|0}while(0);do if(!(Tb&512))Ub=Tb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Ub=Tb;break}j[T>>1]=j[Xa>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,263,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Ub=k[b>>2]|0}while(0);do if(!(Ub&1024))Vb=Ub;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Vb=Ub;break}j[T>>1]=j[Wa>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,266,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Vb=k[b>>2]|0}while(0);do if(!(Vb&32768))Wb=Vb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Wb=Vb;break}j[T>>1]=j[Va>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,274,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Wb=k[b>>2]|0}while(0);do if(!(Wb&65536))Xb=Wb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;Xb=Wb;break}j[T>>1]=j[va>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,277,3,1,2,T)|0)){Ab=vb;Bb=593;break a}Xb=k[b>>2]|0}while(0);do if(!(Xb&131072))Yb=Xb;else{Nb=k[Ua>>2]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;Yb=Xb;break}if(Nb>>>0<65536){j[T>>1]=Nb;if(k[c>>2]&128)Qd(T);Zb=bf(a,$,vb,278,3,1,2,T)|0}else{k[T>>2]=Nb;if(k[c>>2]&128)Rd(T);Zb=bf(a,$,vb,278,4,1,4,T)|0}if(!Zb){Ab=vb;Bb=593;break a}Yb=k[b>>2]|0}while(0);do if(!(Yb&262144))_b=Yb;else{Nb=j[Ta>>1]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;_b=Yb;break}Mb=me(m[va>>1]<<1)|0;if(!Mb){$b=vb;Bb=141;break a}if(!(j[va>>1]|0))ac=0;else{yb=Mb;Ob=0;while(1){j[yb>>1]=Nb;Ob=Ob+1<<16>>16;bc=j[va>>1]|0;if((Ob&65535)>=(bc&65535)){ac=bc;break}else yb=yb+2|0}}yb=ac&65535;if(k[c>>2]&128)Td(Mb,yb);Ob=bf(a,$,vb,280,3,yb,yb<<1,Mb)|0;ne(Mb);if(!Ob){Ab=vb;Bb=593;break a}_b=k[b>>2]|0}while(0);do if(!(_b&524288))cc=_b;else{Ob=j[Sa>>1]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;cc=_b;break}yb=me(m[va>>1]<<1)|0;if(!yb){dc=vb;Bb=152;break a}if(!(j[va>>1]|0))ec=0;else{Nb=yb;Jb=0;while(1){j[Nb>>1]=Ob;Jb=Jb+1<<16>>16;bc=j[va>>1]|0;if((Jb&65535)>=(bc&65535)){ec=bc;break}else Nb=Nb+2|0}}Nb=ec&65535;if(k[c>>2]&128)Td(yb,Nb);Jb=bf(a,$,vb,281,3,Nb,Nb<<1,yb)|0;ne(yb);if(!Jb){Ab=vb;Bb=593;break a}cc=k[b>>2]|0}while(0);do if(!(cc&1048576))fc=cc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;fc=cc;break}j[T>>1]=j[Ra>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,284,3,1,2,T)|0)){Ab=vb;Bb=593;break a}fc=k[b>>2]|0}while(0);do if(!(fc&4194304))hc=fc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;hc=fc;break}j[T>>1]=j[Qa>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,296,3,1,2,T)|0)){Ab=vb;Bb=593;break a}hc=k[b>>2]|0}while(0);do if(!(hc&8388608))ic=hc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;ic=hc;break}if(k[c>>2]&128)Td(Pa,2);if(!(bf(a,$,vb,297,3,2,4,Pa)|0)){Ab=vb;Bb=593;break a}ic=k[b>>2]|0}while(0);do if(ic&16777216){Jb=k[Ma>>2]|0;Nb=k[Oa>>2]|0;if(!(k[c>>2]&1024))if(!(df(a,$,vb,279,Jb,Nb)|0)){Ab=vb;Bb=593;break a}else break;else if(!(df(a,$,vb,325,Jb,Nb)|0)){Ab=vb;Bb=593;break a}else break}while(0);do if(k[b>>2]&33554432){Nb=k[Ma>>2]|0;Jb=k[Na>>2]|0;if(!(k[c>>2]&1024))if(!(df(a,$,vb,273,Nb,Jb)|0)){Ab=vb;Bb=593;break a}else break;else if(!(df(a,$,vb,324,Nb,Jb)|0)){Ab=vb;Bb=593;break a}else break}while(0);Jb=k[b>>2]|0;do if(!(Jb&67108864))jc=Jb;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;jc=Jb;break}Nb=m[ua>>1]|0;Ob=1<<Nb;Mb=3<<Nb;Nb=Mb<<1;bc=me(Nb)|0;if(!bc){kc=vb;Bb=191;break a}lc=Ob<<1;qe(bc,k[Ia>>2]|0,lc);qe(bc+(Ob<<1)|0,k[Ka>>2]|0,lc);qe(bc+(lc<<1)|0,k[La>>2]|0,lc);if((Mb|0)<=-1){Bb=193;break a}if(k[c>>2]&128)Td(bc,Mb);lc=bf(a,$,vb,320,3,Mb,Nb,bc)|0;ne(bc);if(!lc){Ab=vb;Bb=593;break a}jc=k[b>>2]|0}while(0);do if((jc|0)<0){if(!(j[R>>1]|0))break;k[M>>2]=aa;k[M+4>>2]=ba;Ge(a,338,M)|0;Jb=m[aa>>1]|0;lc=k[ba>>2]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;break}if(k[c>>2]&128)Td(lc,Jb);if(!(bf(a,$,vb,338,3,Jb,Jb<<1,lc)|0)){Ab=vb;Bb=593;break a}}while(0);lc=k[ka>>2]|0;do if(!(lc&1))mc=lc;else{Jb=j[Ha>>1]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;mc=lc;break}bc=me(m[va>>1]<<1)|0;if(!bc){nc=vb;Bb=210;break a}if(!(j[va>>1]|0))oc=0;else{Nb=bc;Mb=0;while(1){j[Nb>>1]=Jb;Mb=Mb+1<<16>>16;Ob=j[va>>1]|0;if((Mb&65535)>=(Ob&65535)){oc=Ob;break}else Nb=Nb+2|0}}Nb=oc&65535;if(k[c>>2]&128)Td(bc,Nb);Mb=bf(a,$,vb,339,3,Nb,Nb<<1,bc)|0;ne(bc);if(!Mb){Ab=vb;Bb=593;break a}mc=k[ka>>2]|0}while(0);if(!(mc&2))pc=mc;else{if(!(ef(a,$,vb,340,m[va>>1]|0,k[Ga>>2]|0)|0)){Ab=vb;Bb=593;break a}pc=k[ka>>2]|0}if(!(pc&4))qc=pc;else{if(!(ef(a,$,vb,341,m[va>>1]|0,k[Fa>>2]|0)|0)){Ab=vb;Bb=593;break a}qc=k[ka>>2]|0}do if(!(qc&8))rc=qc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;rc=qc;break}k[T>>2]=k[Ea>>2];if(k[c>>2]&128)Rd(T);if(!(bf(a,$,vb,-32539,4,1,4,T)|0)){Ab=vb;Bb=593;break a}rc=k[ka>>2]|0}while(0);do if(!(rc&16))sc=rc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;sc=rc;break}k[T>>2]=k[Da>>2];if(k[c>>2]&128)Rd(T);if(!(bf(a,$,vb,-32538,4,1,4,T)|0)){Ab=vb;Bb=593;break a}sc=k[ka>>2]|0}while(0);do if(!(sc&32))tc=sc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;tc=sc;break}if(k[c>>2]&128)Td(Ca,2);if(!(bf(a,$,vb,321,3,2,4,Ca)|0)){Ab=vb;Bb=593;break a}tc=k[ka>>2]|0}while(0);do if(!(tc&128))uc=tc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;uc=tc;break}if(k[c>>2]&128)Td(Ba,2);if(!(bf(a,$,vb,530,3,2,4,Ba)|0)){Ab=vb;Bb=593;break a}uc=k[ka>>2]|0}while(0);do if(!(uc&256))wc=uc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;wc=uc;break}j[T>>1]=j[Aa>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,531,3,1,2,T)|0)){Ab=vb;Bb=593;break a}wc=k[ka>>2]|0}while(0);if(!(wc&512))xc=wc;else{if(!(ff(a,$,vb,532,6,k[za>>2]|0)|0)){Ab=vb;Bb=593;break a}xc=k[ka>>2]|0}do if(!(xc&4096))yc=xc;else{if(!vb){k[$>>2]=(k[$>>2]|0)+1;yc=xc;break}lc=m[ua>>1]|0;Mb=1<<lc;Nb=(m[va>>1]|0)-(m[R>>1]|0)|0;Jb=(Nb&65532)>>>0>3?3:Nb&65535;switch(Jb<<16>>16){case 3:{Nb=Mb<<1;if(!(re(k[wa>>2]|0,k[ya>>2]|0,Nb)|0)){zc=Nb;Bb=266}else Ac=3;break}case 2:{zc=Mb<<1;Bb=266;break}default:Ac=Jb}if((Bb|0)==266){Bb=0;Jb=(re(k[wa>>2]|0,k[xa>>2]|0,zc)|0)==0;Ac=Jb?1:2}Jb=Ac<<16>>16==0?1:Ac;Nb=(Jb&65535)<<lc;lc=Nb<<1;yb=me(lc)|0;if(!yb){Bc=vb;Bb=268;break a}Ob=Mb<<1;qe(yb,k[wa>>2]|0,Ob);do if((Jb&65535)>1){qe(yb+(Mb<<1)|0,k[xa>>2]|0,Ob);if((Jb&65535)<=2)break;qe(yb+(Ob<<1)|0,k[ya>>2]|0,Ob)}while(0);if((Nb|0)<=-1){Bb=273;break a}if(k[c>>2]&128)Td(yb,Nb);Ob=bf(a,$,vb,301,3,Nb,lc,yb)|0;ne(yb);if(!Ob){Ab=vb;Bb=593;break a}yc=k[ka>>2]|0}while(0);do if(!(yc&16384))Cc=yc;else{Ob=k[sa>>2]|0;if(!vb){k[$>>2]=(k[$>>2]|0)+1;Cc=yc;break}if(!(bf(a,$,vb,333,2,Ob,Ob,k[ta>>2]|0)|0)){Dc=vb;break a}Cc=k[ka>>2]|0}while(0);do if(Cc&131072){Ob=j[S>>1]|0;Jb=Ob&65535;if(!(Ob<<16>>16))break;if(!vb){k[$>>2]=(k[$>>2]|0)+1;break}Ob=la;Mb=k[Ob>>2]|0;bc=k[Ob+4>>2]|0;Ob=k[c>>2]|0;if(!(Ob&524288)){Ec=me(Jb<<2)|0;if(!Ec){Fc=vb;Bb=289;break a}Gc=j[S>>1]|0;if(!(Gc<<16>>16))Hc=0;else{Ic=0;Jc=k[na>>2]|0;Kc=Ec;while(1){if(!Jc){Bb=293;break a}Lc=Jc;Mc=k[Lc>>2]|0;Nc=k[Lc+4>>2]|0;if(!(Nc>>>0<1|(Nc|0)==1&Mc>>>0<0)){Bb=295;break a}k[Kc>>2]=Mc;Ic=Ic+1<<16>>16;if((Ic&65535)>=(Gc&65535)){Hc=Gc;break}else{Jc=Jc+8|0;Kc=Kc+4|0}}}Kc=Hc&65535;if(k[c>>2]&128)Vd(Ec,Kc);Jc=bf(a,$,vb,330,13,Kc,Kc<<2,Ec)|0;ne(Ec);Oc=Jc}else{Jc=k[na>>2]|0;if(Ob&128)Wd(Jc,Jb);Oc=bf(a,$,vb,330,18,Jb,Jb<<3,Jc)|0}if(!Oc){Ab=vb;Bb=593;break a}k[c>>2]=k[c>>2]|8192;Jc=j[S>>1]|0;j[oa>>1]=Jc;if(Jc<<16>>16==1){Jc=pa;k[Jc>>2]=0;k[Jc+4>>2]=0;break}else{Jc=pa;k[Jc>>2]=Mb;k[Jc+4>>2]=bc;break}}while(0);if(!(k[qa>>2]|0))break;Jc=(vb|0)==0;Kc=0;do{Gc=k[(k[ra>>2]|0)+(Kc<<2)>>2]|0;Ic=j[Gc+24>>1]|0;b:do if((Ic&65535)>65){if(!(k[a+40+(((Ic&65535)>>>5&65535)<<2)>>2]&1<<(Ic&31)))break;switch(k[Gc+20>>2]|0){case 1:{if((k[Gc+8>>2]|0)!=2){Bb=313;break a}if((j[Gc+4>>1]|0)!=-1){Bb=315;break a}if(i[Gc+27>>0]|0){Bb=317;break a}yb=k[Gc>>2]|0;k[H>>2]=ca;Pb(a,yb,H)|0;yb=k[ca>>2]|0;lc=Qq(yb)|0;if(!Jc)if(!(bf(a,$,vb,k[Gc>>2]&65535,2,lc,lc,yb)|0)){Dc=vb;break a}else break b;else{k[$>>2]=(k[$>>2]|0)+1;break b}break}case 4:{if((k[Gc+8>>2]|0)!=3){Bb=322;break a}if((j[Gc+4>>1]|0)!=1){Bb=324;break a}if(i[Gc+27>>0]|0){Bb=326;break a}yb=k[Gc>>2]|0;k[G>>2]=da;Pb(a,yb,G)|0;yb=k[Gc>>2]&65535;if(Jc){k[$>>2]=(k[$>>2]|0)+1;break b}j[T>>1]=j[da>>1]|0;if(k[c>>2]&128)Qd(T);if(!(bf(a,$,vb,yb,3,1,2,T)|0)){Dc=vb;break a}else break b;break}case 6:{if((k[Gc+8>>2]|0)!=4){Bb=333;break a}if((j[Gc+4>>1]|0)!=1){Bb=335;break a}if(i[Gc+27>>0]|0){Bb=337;break a}yb=k[Gc>>2]|0;k[F>>2]=ea;Pb(a,yb,F)|0;yb=k[Gc>>2]&65535;if(Jc){k[$>>2]=(k[$>>2]|0)+1;break b}k[T>>2]=k[ea>>2];if(k[c>>2]&128)Rd(T);if(!(bf(a,$,vb,yb,4,1,4,T)|0)){Dc=vb;break a}else break b;break}case 40:{if((k[Gc+8>>2]|0)!=7){Bb=344;break a}if((j[Gc+4>>1]|0)!=-3){Bb=346;break a}if((i[Gc+27>>0]|0)!=1){Bb=348;break a}yb=k[Gc>>2]|0;k[E>>2]=fa;k[E+4>>2]=ga;Pb(a,yb,E)|0;yb=k[fa>>2]|0;if(!Jc)if(!(bf(a,$,vb,k[Gc>>2]&65535,7,yb,yb,k[ga>>2]|0)|0)){Dc=vb;break a}else break b;else{k[$>>2]=(k[$>>2]|0)+1;break b}break}default:{Bb=352;break a}}}while(0);Kc=Kc+1|0}while(Kc>>>0<(k[qa>>2]|0)>>>0)}while(0);c:do if(k[hb>>2]|0){Kc=(vb|0)==0;Jc=0;while(1){Gc=k[tb>>2]|0;Ic=k[Gc+(Jc*12|0)>>2]|0;d:do switch(k[Ic+8>>2]|0){case 2:{bc=k[Gc+(Jc*12|0)+4>>2]|0;if(!Kc)if(!(bf(a,$,vb,k[Ic>>2]&65535,2,bc,bc,k[Gc+(Jc*12|0)+8>>2]|0)|0)){Dc=vb;break a}else break d;else{k[$>>2]=(k[$>>2]|0)+1;break d}break}case 7:{bc=k[Gc+(Jc*12|0)+4>>2]|0;if(!Kc)if(!(bf(a,$,vb,k[Ic>>2]&65535,7,bc,bc,k[Gc+(Jc*12|0)+8>>2]|0)|0)){Dc=vb;break a}else break d;else{k[$>>2]=(k[$>>2]|0)+1;break d}break}case 1:{bc=k[Gc+(Jc*12|0)+4>>2]|0;if(!Kc)if(!(bf(a,$,vb,k[Ic>>2]&65535,1,bc,bc,k[Gc+(Jc*12|0)+8>>2]|0)|0)){Dc=vb;break a}else break d;else{k[$>>2]=(k[$>>2]|0)+1;break d}break}case 6:{bc=k[Gc+(Jc*12|0)+4>>2]|0;if(!Kc)if(!(bf(a,$,vb,k[Ic>>2]&65535,6,bc,bc,k[Gc+(Jc*12|0)+8>>2]|0)|0)){Dc=vb;break a}else break d;else{k[$>>2]=(k[$>>2]|0)+1;break d}break}case 3:{bc=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if((Mb|0)<=-1){Bb=370;break a}if(k[c>>2]&128)Td(Jb,Mb);if(!(bf(a,$,vb,bc,3,Mb,Mb<<1,Jb)|0)){Ab=vb;Bb=593;break a}break}case 8:{Jb=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;bc=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if((Mb|0)<=-1){Bb=377;break a}if(k[c>>2]&128)Td(bc,Mb);if(!(bf(a,$,vb,Jb,8,Mb,Mb<<1,bc)|0)){Ab=vb;Bb=593;break a}break}case 4:{bc=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(Mb>>>0>=1073741824){Bb=384;break a}if(k[c>>2]&128)Vd(Jb,Mb);if(!(bf(a,$,vb,bc,4,Mb,Mb<<2,Jb)|0)){Ab=vb;Bb=593;break a}break}case 9:{Jb=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;bc=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(Mb>>>0>=1073741824){Bb=391;break a}if(k[c>>2]&128)Vd(bc,Mb);if(!(bf(a,$,vb,Jb,9,Mb,Mb<<2,bc)|0)){Ab=vb;Bb=593;break a}break}case 16:{bc=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(Mb>>>0>=536870912){Bb=398;break a}Ob=k[c>>2]|0;if(!(Ob&524288)){Bb=400;break a}if(Ob&128)Wd(Jb,Mb);if(!(bf(a,$,vb,bc,16,Mb,Mb<<3,Jb)|0)){Ab=vb;Bb=593;break a}break}case 17:{Jb=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;bc=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(Mb>>>0>=536870912){Bb=407;break a}Ob=k[c>>2]|0;if(!(Ob&524288)){Bb=409;break a}if(Ob&128)Wd(bc,Mb);if(!(bf(a,$,vb,Jb,17,Mb,Mb<<3,bc)|0)){Ab=vb;Bb=593;break a}break}case 5:{if(!(ff(a,$,vb,k[Ic>>2]&65535,k[Gc+(Jc*12|0)+4>>2]|0,k[Gc+(Jc*12|0)+8>>2]|0)|0)){Ab=vb;Bb=593;break a}break}case 10:{bc=k[Ic>>2]&65535;Mb=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}Ob=Mb<<1;Ec=Mb<<3;yb=me(Ec)|0;if(!yb){Pc=vb;Bb=418;break a}if(Mb){lc=Jb;Jb=yb;Nb=0;while(1){Qc=+o[lc>>2];Mc=~~Qc;Nc=Qc==+(Mc|0);do if(Qc<0.0){if(Nc){k[Jb>>2]=Mc;k[Jb+4>>2]=1;break}if(Qc>-1.0){k[Jb>>2]=0-~~(Qc*-2147483648.0);k[Jb+4>>2]=2147483647;break}else{k[Jb>>2]=-2147483647;k[Jb+4>>2]=~~(2147483648.0/-Qc);break}}else{if(Nc){k[Jb>>2]=Mc;k[Jb+4>>2]=1;break}if(Qc<1.0){k[Jb>>2]=~~(Qc*2147483648.0);k[Jb+4>>2]=2147483647;break}else{k[Jb>>2]=2147483647;k[Jb+4>>2]=~~(2147483648.0/Qc);break}}while(0);Nb=Nb+1|0;if((Nb|0)==(Mb|0))break;else{lc=lc+4|0;Jb=Jb+8|0}}}if(k[c>>2]&128)Vd(yb,Ob);Jb=bf(a,$,vb,bc,10,Mb,Ec,yb)|0;ne(yb);if(!Jb){Ab=vb;Bb=593;break a}break}case 11:{Jb=k[Ic>>2]&65535;lc=k[Gc+(Jc*12|0)+4>>2]|0;Nb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(lc>>>0>=1073741824){Bb=437;break a}if(k[c>>2]&128)Xd(Nb,lc);if(!(bf(a,$,vb,Jb,11,lc,lc<<2,Nb)|0)){Ab=vb;Bb=593;break a}break}case 12:{Nb=k[Ic>>2]&65535;lc=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(lc>>>0>=536870912){Bb=444;break a}if(k[c>>2]&128)Yd(Jb,lc);if(!(bf(a,$,vb,Nb,12,lc,lc<<3,Jb)|0)){Ab=vb;Bb=593;break a}break}case 13:{Jb=k[Ic>>2]&65535;lc=k[Gc+(Jc*12|0)+4>>2]|0;Nb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}if(lc>>>0>=1073741824){Bb=451;break a}if(k[c>>2]&128)Vd(Nb,lc);if(!(bf(a,$,vb,Jb,13,lc,lc<<2,Nb)|0)){Ab=vb;Bb=593;break a}break}case 18:{Nb=k[Ic>>2]&65535;lc=k[Gc+(Jc*12|0)+4>>2]|0;Jb=k[Gc+(Jc*12|0)+8>>2]|0;if(Kc){k[$>>2]=(k[$>>2]|0)+1;break d}Mc=k[c>>2]|0;if(!(Mc&524288)){Nc=lc<<2;Lc=me(Nc)|0;if(!Lc){Rc=vb;Bb=465;break a}if(lc){Sc=Jb;Tc=0;Uc=Lc;while(1){Vc=Sc;Wc=k[Vc>>2]|0;Xc=k[Vc+4>>2]|0;if(Xc>>>0>0|(Xc|0)==0&Wc>>>0>4294967295){Yc=Lc;Zc=vb;Bb=467;break a}k[Uc>>2]=Wc;Tc=Tc+1|0;if(Tc>>>0>=lc>>>0)break;else{Sc=Sc+8|0;Uc=Uc+4|0}}if(lc>>>0>=1073741824){Bb=470;break a}}if(k[c>>2]&128)Vd(Lc,lc);Uc=bf(a,$,vb,Nb,13,lc,Nc,Lc)|0;ne(Lc);_c=Uc}else{if(lc>>>0>=536870912){Bb=459;break a}if(Mc&128)Wd(Jb,lc);_c=bf(a,$,vb,Nb,18,lc,lc<<3,Jb)|0}if(!_c){Ab=vb;Bb=593;break a}break}default:{Bb=475;break a}}while(0);Jc=Jc+1|0;if(Jc>>>0>=(k[hb>>2]|0)>>>0)break c}}while(0);if(vb){$c=vb;ad=wb;Bb=548;break}Jc=me((k[$>>2]|0)*24|0)|0;if(!Jc){bd=Jc;Bb=479;break}if(ma){Kc=ib;if((k[Kc>>2]|0)==0&(k[Kc+4>>2]|0)==0){Kc=xb[k[jb>>2]&63](k[kb>>2]|0,0,0,2)|0;Gc=sr(Kc|0,L|0,1,0)|0;Kc=L;Ic=Gc&-2;Gc=ib;k[Gc>>2]=Ic;k[Gc+4>>2]=Kc;Gc=k[c>>2]|0;Uc=(Gc&524288|0)!=0;do if(!(Gc&8192)){if(!Uc){k[V>>2]=Ic;if(Gc&128)Rd(V);Sc=k[pb>>2]|0;if(!Sc){k[pb>>2]=k[ib>>2];xb[k[jb>>2]&63](k[kb>>2]|0,4,0,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,V,4)|0)==4)break;else{cd=Jc;Bb=503;break a}}else dd=Sc;while(1){Sc=xb[k[jb>>2]&63](k[kb>>2]|0,dd,0,0)|0;if(!((Sc|0)==(dd|0)&(L|0)==0)){ed=Jc;Bb=506;break a}if((nb[k[ob>>2]&63](k[kb>>2]|0,W,2)|0)!=2){ed=Jc;Bb=506;break a}if(k[c>>2]&128)Qd(W);Sc=dd+2|0;xb[k[jb>>2]&63](k[kb>>2]|0,((m[W>>1]|0)*12|0)+Sc|0,0,0)|0;if((nb[k[ob>>2]&63](k[kb>>2]|0,X,4)|0)!=4){fd=Jc;Bb=510;break a}if(k[c>>2]&128)Rd(X);dd=k[X>>2]|0;if(!dd){gd=Sc;break}}xb[k[jb>>2]&63](k[kb>>2]|0,((m[W>>1]|0)*12|0)+gd|0,0,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,V,4)|0)==4)break;else{hd=Jc;Bb=515;break a}}Sc=Y;k[Sc>>2]=Ic;k[Sc+4>>2]=Kc;if(Gc&128)Sd(Y);Sc=lb;Tc=k[Sc>>2]|0;yb=k[Sc+4>>2]|0;if((Tc|0)==0&(yb|0)==0){Sc=ib;Ec=k[Sc+4>>2]|0;Mb=lb;k[Mb>>2]=k[Sc>>2];k[Mb+4>>2]=Ec;xb[k[jb>>2]&63](k[kb>>2]|0,8,0,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,Y,8)|0)==8)break;else{id=Jc;Bb=520;break a}}else{jd=Tc;kd=yb}while(1){yb=xb[k[jb>>2]&63](k[kb>>2]|0,jd,kd,0)|0;if(!((yb|0)==(jd|0)&(L|0)==(kd|0))){ld=Jc;Bb=523;break a}if((nb[k[ob>>2]&63](k[kb>>2]|0,Z,8)|0)!=8){ld=Jc;Bb=523;break a}if(k[c>>2]&128)Sd(Z);yb=Z;Tc=k[yb>>2]|0;Ec=k[yb+4>>2]|0;if(Ec>>>0>0|(Ec|0)==0&Tc>>>0>65535){md=Jc;Bb=527;break a}Ec=k[jb>>2]|0;yb=k[kb>>2]|0;Mb=sr(jd|0,kd|0,8,0)|0;Sc=sr(Mb|0,L|0,(Tc&65535)*20|0,0)|0;Tc=L;xb[Ec&63](yb,Sc,Tc,0)|0;if((nb[k[ob>>2]&63](k[kb>>2]|0,_,8)|0)!=8){nd=Jc;Bb=529;break a}if(k[c>>2]&128)Sd(_);yb=_;jd=k[yb>>2]|0;kd=k[yb+4>>2]|0;if((jd|0)==0&(kd|0)==0){od=Sc;pd=Tc;break}}xb[k[jb>>2]&63](k[kb>>2]|0,od,pd,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,Y,8)|0)!=8){qd=Jc;Bb=534;break a}}else if(Uc){Tc=U;k[Tc>>2]=Ic;k[Tc+4>>2]=Kc;if(Gc&128)Sd(U);Tc=pa;xb[k[jb>>2]&63](k[kb>>2]|0,k[Tc>>2]|0,k[Tc+4>>2]|0,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,U,8)|0)!=8){rd=Jc;Bb=494;break a}Tc=(j[oa>>1]|0)+-1<<16>>16;j[oa>>1]=Tc;if(!(Tc<<16>>16)){k[c>>2]=k[c>>2]&-8193;break}else{Tc=pa;Sc=sr(k[Tc>>2]|0,k[Tc+4>>2]|0,8,0)|0;Tc=pa;k[Tc>>2]=Sc;k[Tc+4>>2]=L;break}}else{k[T>>2]=Ic;if(Gc&128)Rd(T);Tc=pa;xb[k[jb>>2]&63](k[kb>>2]|0,k[Tc>>2]|0,k[Tc+4>>2]|0,0)|0;if((nb[k[mb>>2]&63](k[kb>>2]|0,T,4)|0)!=4){sd=Jc;Bb=487;break a}Tc=(j[oa>>1]|0)+-1<<16>>16;j[oa>>1]=Tc;if(!(Tc<<16>>16)){k[c>>2]=k[c>>2]&-8193;break}else{Tc=pa;Sc=sr(k[Tc>>2]|0,k[Tc+4>>2]|0,4,0)|0;Tc=pa;k[Tc>>2]=Sc;k[Tc+4>>2]=L;break}}while(0)}}else{Gc=xb[k[jb>>2]&63](k[kb>>2]|0,0,0,2)|0;Ic=sr(Gc|0,L|0,1,0)|0;Gc=ib;k[Gc>>2]=Ic&-2;k[Gc+4>>2]=L}if(!rb){Gc=ib;Ic=k[Gc+4>>2]|0;Kc=d;k[Kc>>2]=k[Gc>>2];k[Kc+4>>2]=Ic}Ic=k[$>>2]|0;if(!(k[c>>2]&524288)){Kc=(Ic*12|2)+4|0;Gc=ib;Uc=k[Gc>>2]|0;Tc=k[Gc+4>>2]|0;Gc=sr(Uc|0,Tc|0,Kc|0,0)|0;td=Gc;ud=0;vd=Tc;wd=Uc;xd=0;yd=Kc;zd=Kc}else{Kc=(Ic*20|0)+16|0;Ic=ib;Uc=k[Ic>>2]|0;Tc=k[Ic+4>>2]|0;Ic=sr(Uc|0,Tc|0,Kc|0,0)|0;td=Ic;ud=L;vd=Tc;wd=Uc;xd=0;yd=Kc;zd=Kc}Kc=la;k[Kc>>2]=td;k[Kc+4>>2]=ud;if(ud>>>0<xd>>>0|(ud|0)==(xd|0)&td>>>0<yd>>>0|(ud>>>0<vd>>>0|(ud|0)==(vd|0)&td>>>0<wd>>>0)){Ad=Jc;Bb=543;break}if(!((td&1|0)==0&0==0)){Kc=sr(td|0,ud|0,1,0)|0;Uc=la;k[Uc>>2]=Kc;k[Uc+4>>2]=L}if(!ma){vb=Jc;wb=zd;continue}j[sb>>1]=(j[sb>>1]|0)+1<<16>>16;vb=Jc;wb=zd}switch(Bb|0){case 76:{vc(k[kb>>2]|0,140996,150005,Q);Dc=Kb;break}case 141:{vc(k[kb>>2]|0,140996,150005,P);Dc=$b;break}case 152:{vc(k[kb>>2]|0,140996,150005,O);Dc=dc;break}case 191:{vc(k[kb>>2]|0,141032,150005,N);Dc=kc;break}case 193:{Ja(141062,141079,1956,141094);break}case 210:{vc(k[kb>>2]|0,140996,150005,K);Dc=nc;break}case 268:{vc(k[kb>>2]|0,141133,150005,J);Dc=Bc;break}case 273:{Ja(141062,141079,1956,141094);break}case 289:{vc(k[kb>>2]|0,141171,150005,I);Dc=Fc;break}case 293:{Ja(141199,141079,1868,141171);break}case 295:{Ja(141207,141079,1869,141171);break}case 313:{Ja(141227,141079,643,140888);break}case 315:{Ja(141253,141079,644,140888);break}case 317:{Ja(141287,141079,645,140888);break}case 322:{Ja(141309,141079,655,140888);break}case 324:{Ja(141335,141079,656,140888);break}case 326:{Ja(141287,141079,657,140888);break}case 333:{Ja(141357,141079,666,140888);break}case 335:{Ja(141335,141079,667,140888);break}case 337:{Ja(141287,141079,668,140888);break}case 344:{Ja(141382,141079,678,140888);break}case 346:{Ja(141412,141079,679,140888);break}case 348:{Ja(141447,141079,680,140888);break}case 352:{Ja(141469,141079,687,140888);break}case 370:{Ja(141062,141079,1956,141094);break}case 377:{Ja(141062,141079,1979,141471);break}case 384:{Ja(141511,141079,2e3,141528);break}case 391:{Ja(141511,141079,2023,141566);break}case 398:{Ja(141605,141079,2047,141622);break}case 400:{Ja(141661,141079,2049,141622);break}case 407:{Ja(141605,141079,2072,141689);break}case 409:{Ja(141661,141079,2074,141689);break}case 418:{vc(k[kb>>2]|0,141729,150005,D);Dc=Pc;break}case 437:{Ja(141511,141079,2239,141772);break}case 444:{Ja(141605,141079,2264,141811);break}case 451:{Ja(141511,141079,2275,141851);break}case 459:{Ja(141605,141079,2285,141888);break}case 465:{vc(k[kb>>2]|0,141926,150005,C);Dc=Rc;break}case 467:{vc(k[kb>>2]|0,141926,141960,B);ne(Yc);Ab=Zc;Bb=593;break}case 470:{Ja(141511,141079,2275,141851);break}case 475:{Ja(141469,141079,763,140888);break}case 479:{vc(k[kb>>2]|0,140888,150005,A);Ab=bd;Bb=593;break}case 487:{vc(k[kb>>2]|0,142028,142046,z);Ab=sd;Bb=593;break}case 494:{vc(k[kb>>2]|0,142028,142046,y);Ab=rd;Bb=593;break}case 503:{vc(k[kb>>2]|0,k[a>>2]|0,142082,x);Ab=cd;Bb=593;break}case 506:{vc(k[kb>>2]|0,142028,140364,w);Ab=ed;Bb=593;break}case 510:{vc(k[kb>>2]|0,142028,140395,v);Ab=fd;Bb=593;break}case 515:{vc(k[kb>>2]|0,142028,140425,u);Ab=hd;Bb=593;break}case 520:{vc(k[kb>>2]|0,k[a>>2]|0,142082,t);Ab=id;Bb=593;break}case 523:{vc(k[kb>>2]|0,142028,140364,s);Ab=ld;Bb=593;break}case 527:{vc(k[kb>>2]|0,142028,140454,q);Ab=md;Bb=593;break}case 529:{vc(k[kb>>2]|0,142028,140395,p);Ab=nd;Bb=593;break}case 534:{vc(k[kb>>2]|0,142028,140425,n);Ab=qd;Bb=593;break}case 543:{vc(k[kb>>2]|0,140888,142108,l);Ab=Ad;Bb=593;break}case 548:{do if((ma?(k[ka>>2]&131072|0)!=0:0)?(Ad=pa,(k[Ad>>2]|0)==0&(k[Ad+4>>2]|0)==0):0){Ad=k[$>>2]|0;if(!Ad)Ja(142140,141079,809,140888);else{Bd=0;Cd=$c}while(1){if((j[Cd>>1]|0)==330){Dd=Bd;break}Bd=Bd+1|0;if(Bd>>>0>=Ad>>>0){Bb=552;break}else Cd=Cd+24|0}if((Bb|0)==552)Ja(142140,141079,809,140888);Ad=ib;Jc=k[Ad>>2]|0;l=k[Ad+4>>2]|0;if(!(k[c>>2]&524288)){Ad=sr(Dd*12|0,0,10,0)|0;qd=sr(Ad|0,L|0,Jc|0,l|0)|0;Ad=pa;k[Ad>>2]=qd;k[Ad+4>>2]=L;break}else{Ad=sr(Dd*20|0,0,20,0)|0;qd=sr(Ad|0,L|0,Jc|0,l|0)|0;l=pa;k[l>>2]=qd;k[l+4>>2]=L;break}}while(0);pa=me(ad)|0;if(!pa){vc(k[kb>>2]|0,140888,150005,h);Ab=$c;Bb=593;break}h=k[c>>2]|0;Dd=k[$>>2]|0;if(h&524288){Cd=pa;k[Cd>>2]=Dd;k[Cd+4>>2]=0;if(!(h&128))Ed=Dd;else{Sd(pa);Ed=k[$>>2]|0}Cd=pa+8|0;if(!Ed)Fd=Cd;else{Ed=pa;Bd=0;ka=Cd;Cd=$c;while(1){j[ka>>1]=j[Cd>>1]|0;ma=k[c>>2]|0;if(!(ma&128))Gd=ma;else{Qd(ka);Gd=k[c>>2]|0}ma=Ed+10|0;j[ma>>1]=j[Cd+2>>1]|0;if(Gd&128)Qd(ma);ma=Ed+12|0;qe(ma,Cd+8|0,8);if(k[c>>2]&128)Sd(ma);ma=Ed;Ed=Ed+20|0;qe(Ed,Cd+16|0,8);Bd=Bd+1|0;l=ma+28|0;if(Bd>>>0>=(k[$>>2]|0)>>>0){Fd=l;break}else{ka=l;Cd=Cd+24|0}}}qe(Fd,a+24|0,8);if(k[c>>2]&128)Sd(Fd)}else{j[pa>>1]=Dd;if(!(h&128))Hd=Dd;else{Qd(pa);Hd=k[$>>2]|0}Dd=pa+2|0;if(!Hd)Id=Dd;else{Hd=0;h=Dd;Dd=$c;while(1){j[h>>1]=j[Dd>>1]|0;Fd=k[c>>2]|0;if(!(Fd&128))Jd=Fd;else{Qd(h);Jd=k[c>>2]|0}Fd=h+2|0;j[Fd>>1]=j[Dd+2>>1]|0;if(Jd&128)Qd(Fd);Fd=h+4|0;k[ha>>2]=k[Dd+8>>2];qe(Fd,ha,4);if(k[c>>2]&128)Rd(Fd);qe(h+8|0,Dd+16|0,4);Fd=h+12|0;Hd=Hd+1|0;if(Hd>>>0>=(k[$>>2]|0)>>>0){Id=Fd;break}else{h=Fd;Dd=Dd+24|0}}}k[ha>>2]=k[a+24>>2];if(k[c>>2]&128)Rd(ha);qe(Id,ha,4)}ne($c);$c=ib;ha=ib;do if((xb[k[jb>>2]&63](k[kb>>2]|0,k[$c>>2]|0,k[$c+4>>2]|0,0)|0)==(k[ha>>2]|0)?(L|0)==(k[ha+4>>2]|0):0){if((nb[k[mb>>2]&63](k[kb>>2]|0,pa,ad)|0)!=(ad|0)){vc(k[kb>>2]|0,140888,142148,f);break}ne(pa);if(!ja){ia=1;r=e;return ia|0}Rb(a);k[c>>2]=k[c>>2]&-2097161;qb[k[a+564>>2]&127](a);Sb(a)|0;ia=1;r=e;return ia|0}else vc(k[kb>>2]|0,140888,142148,g);while(0);ne(pa);ia=0;r=e;return ia|0}}if((Bb|0)==593)if(!Ab){ia=0;r=e;return ia|0}else Dc=Ab;ne(Dc);ia=0;r=e;return ia|0}function bf(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;i=r;r=r+32|0;l=i+16|0;m=i+8|0;n=i;o=i+20|0;p=k[b>>2]|0;a:do if(!p)q=0;else{s=0;while(1){t=j[c+(s*24|0)>>1]|0;if(t<<16>>16==d<<16>>16)break;if((t&65535)>(d&65535)){q=s;break a}t=s+1|0;if(t>>>0<p>>>0)s=t;else{q=t;break a}}Ja(142340,141079,2301,142361)}while(0);if(q>>>0<p>>>0){s=p;do{p=c+(s*24|0)|0;s=s+-1|0;t=c+(s*24|0)|0;k[p>>2]=k[t>>2];k[p+4>>2]=k[t+4>>2];k[p+8>>2]=k[t+8>>2];k[p+12>>2]=k[t+12>>2];k[p+16>>2]=k[t+16>>2];k[p+20>>2]=k[t+20>>2]}while(s>>>0>q>>>0)}j[c+(q*24|0)>>1]=d;j[c+(q*24|0)+2>>1]=e;e=c+(q*24|0)+8|0;k[e>>2]=f;k[e+4>>2]=0;e=c+(q*24|0)+16|0;q=e;k[q>>2]=0;k[q+4>>2]=0;q=a+12|0;c=k[q>>2]&524288;do if(((c>>>17)+4|0)>>>0<g>>>0){f=(c|0)==0;d=a+464|0;s=d;t=k[s>>2]|0;p=k[s+4>>2]|0;s=sr(t|0,p|0,g|0,0)|0;u=f?s:s;s=f?0:L;if(s>>>0<p>>>0|(s|0)==(p|0)&u>>>0<t>>>0|(s>>>0<0|(s|0)==0&u>>>0<g>>>0)){vc(k[a+628>>2]|0,142361,142108,n);v=0;r=i;return v|0}f=a+628|0;w=xb[k[a+640>>2]&63](k[f>>2]|0,t,p,0)|0;if(!((w|0)==(t|0)&(L|0)==(p|0))){vc(k[f>>2]|0,142361,142387,m);v=0;r=i;return v|0}if((g|0)<=-1)Ja(142413,141079,2335,142361);if((nb[k[a+636>>2]&63](k[f>>2]|0,h,g)|0)!=(g|0)){vc(k[f>>2]|0,142361,142387,l);v=0;r=i;return v|0}f=sr(u&1|0,0,u|0,s|0)|0;s=d;k[s>>2]=f;k[s+4>>2]=L;s=k[q>>2]|0;if(s&524288){f=e;k[f>>2]=t;k[f+4>>2]=p;if(!(s&128))break;Sd(e);break}k[o>>2]=t;if(s&128)Rd(o);qe(e,o,4)}else qe(e,h,g);while(0);k[b>>2]=(k[b>>2]|0)+1;v=1;r=i;return v|0}function cf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;var f=0,g=0,h=0,i=0;f=r;r=r+16|0;g=f;if(!c){k[b>>2]=(k[b>>2]|0)+1;h=1;r=f;return h|0}if(!(e>=0.0))Ja(142292,141079,2084,142303);do if(!(e<=0.0)){i=~~e>>>0;if(+(i>>>0)==e){k[g>>2]=i;k[g+4>>2]=1;break}if(e<1.0){k[g>>2]=~~(e*4294967295.0)>>>0;k[g+4>>2]=-1;break}else{k[g>>2]=-1;k[g+4>>2]=~~(4294967295.0/e)>>>0;break}}else{k[g>>2]=0;k[g+4>>2]=1}while(0);if(k[a+12>>2]&128){Rd(g);Rd(g+4|0)}h=bf(a,b,c,d,5,1,8,g)|0;r=f;return h|0}function df(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;g=r;r=r+16|0;h=g+8|0;i=g;if(!c){k[b>>2]=(k[b>>2]|0)+1;j=1;r=g;return j|0}l=a+12|0;m=k[l>>2]|0;if(m&524288){if(e>>>0>=536870912)Ja(141605,141079,2047,141622);if(m&128)Wd(f,e);j=bf(a,b,c,d,16,e,e<<3,f)|0;r=g;return j|0}m=e<<2;n=me(m)|0;if(!n){vc(k[a+628>>2]|0,142256,150005,i);j=0;r=g;return j|0}do if(e){i=f;o=0;p=n;while(1){q=i;s=k[q>>2]|0;t=k[q+4>>2]|0;if(t>>>0>0|(t|0)==0&s>>>0>4294967295){u=13;break}k[p>>2]=s;o=o+1|0;if(o>>>0>=e>>>0){u=15;break}else{i=i+8|0;p=p+4|0}}if((u|0)==13){vc(k[a+628>>2]|0,142256,141960,h);ne(n);j=0;r=g;return j|0}else if((u|0)==15){if(e>>>0<1073741824)break;Ja(141511,141079,2e3,141528)}}while(0);if(k[l>>2]&128)Vd(n,e);l=bf(a,b,c,d,4,e,m,n)|0;ne(n);j=l;r=g;return j|0}function ef(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,l=0,n=0,q=0,s=0,t=0,u=0;g=r;r=r+16|0;h=e<<3;l=me(h)|0;if(!l){vc(k[a+628>>2]|0,142217,150005,g);n=0;r=g;return n|0}a:do switch(m[a+86>>1]|0|0){case 3:{if((m[a+84>>1]|0)>=33){if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if(e>>>0>=536870912)Ja(141605,141079,2264,141811);if(k[a+12>>2]&128)Yd(f,e);q=bf(a,b,c,d,12,e,h,f)|0;break a}if(e){s=0;do{o[l+(s<<2)>>2]=+p[f+(s<<3)>>3];s=s+1|0}while((s|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if(e>>>0>=1073741824)Ja(141511,141079,2239,141772);if(k[a+12>>2]&128)Xd(l,e);q=bf(a,b,c,d,11,e,e<<2,l)|0;break}case 2:{s=j[a+84>>1]|0;if((s&65535)<9){if(e){t=0;do{i[l+t>>0]=~~+p[f+(t<<3)>>3];t=t+1|0}while((t|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}else{q=bf(a,b,c,d,6,e,e,l)|0;break a}}t=(e|0)==0;if((s&65535)<17){if(!t){u=0;do{j[l+(u<<1)>>1]=~~+p[f+(u<<3)>>3];u=u+1|0}while((u|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if((e|0)<=-1)Ja(141062,141079,1979,141471);if(k[a+12>>2]&128)Td(l,e);q=bf(a,b,c,d,8,e,e<<1,l)|0;break a}else{if(!t){u=0;do{k[l+(u<<2)>>2]=~~+p[f+(u<<3)>>3];u=u+1|0}while((u|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if(e>>>0>=1073741824)Ja(141511,141079,2023,141566);if(k[a+12>>2]&128)Vd(l,e);q=bf(a,b,c,d,9,e,e<<2,l)|0;break a}break}case 1:{u=j[a+84>>1]|0;if((u&65535)<9){if(e){t=0;do{i[l+t>>0]=~~+p[f+(t<<3)>>3];t=t+1|0}while((t|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}else{q=bf(a,b,c,d,1,e,e,l)|0;break a}}t=(e|0)==0;if((u&65535)<17){if(!t){s=0;do{j[l+(s<<1)>>1]=~~+p[f+(s<<3)>>3];s=s+1|0}while((s|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if((e|0)<=-1)Ja(141062,141079,1956,141094);if(k[a+12>>2]&128)Td(l,e);q=bf(a,b,c,d,3,e,e<<1,l)|0;break a}else{if(!t){s=0;do{k[l+(s<<2)>>2]=~~+p[f+(s<<3)>>3]>>>0;s=s+1|0}while((s|0)!=(e|0))}if(!c){k[b>>2]=(k[b>>2]|0)+1;q=1;break a}if(e>>>0>=1073741824)Ja(141511,141079,2e3,141528);if(k[a+12>>2]&128)Vd(l,e);q=bf(a,b,c,d,4,e,e<<2,l)|0;break a}break}default:q=0}while(0);ne(l);n=q;r=g;return n|0}function ff(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,p=0.0,q=0;g=r;r=r+16|0;if(!c){k[b>>2]=(k[b>>2]|0)+1;h=1;r=g;return h|0}i=e<<1;j=e<<3;l=me(j)|0;if(!l){vc(k[a+628>>2]|0,142175,150005,g);h=0;r=g;return h|0}if(e){m=f;f=l;n=0;while(1){p=+o[m>>2];do if(!(p<=0.0)){q=~~p>>>0;if(p==+(q>>>0)){k[f>>2]=q;k[f+4>>2]=1;break}if(p<1.0){k[f>>2]=~~(p*4294967296.0)>>>0;k[f+4>>2]=-1;break}else{k[f>>2]=-1;k[f+4>>2]=~~(4294967296.0/p)>>>0;break}}else{k[f>>2]=0;k[f+4>>2]=1}while(0);n=n+1|0;if((n|0)==(e|0))break;else{m=m+4|0;f=f+8|0}}}if(k[a+12>>2]&128)Vd(l,i);i=bf(a,b,c,d,5,e,j,l)|0;ne(l);h=i;r=g;return h|0}function gf(a,b){a=a|0;b=b|0;k[a+504>>2]=6;k[a+500>>2]=0;k[a+508>>2]=6;k[a+520>>2]=0;k[a+516>>2]=6;return 1}function hf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=r;r=r+32|0;c=b+8|0;d=b;e=b+12|0;f=a+88|0;g=Xe(j[f>>1]|0)|0;k[d>>2]=m[f>>1];Bq(e,142602,d)|0;d=k[a+628>>2]|0;f=k[a>>2]|0;if(!g)h=e;else h=k[g>>2]|0;k[c>>2]=h;vc(d,f,142605,c);r=b;return 0}function jf(a,b){a=a|0;b=b|0;k[a+504>>2]=7;k[a+532>>2]=12;k[a+540>>2]=12;k[a+548>>2]=12;k[a+536>>2]=13;k[a+544>>2]=13;k[a+552>>2]=13;k[a+560>>2]=23;return 1}function kf(a){a=a|0;return 1}function lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=r;r=r+32|0;e=d;f=a+608|0;g=k[f>>2]|0;if((g|0)<(c|0)){h=k[a+628>>2]|0;k[e>>2]=k[a+444>>2];i=e+8|0;k[i>>2]=g;k[i+4>>2]=((g|0)<0)<<31>>31;i=e+16|0;k[i>>2]=c;k[i+4>>2]=((c|0)<0)<<31>>31;vc(h,142682,142697,e);j=0;r=d;return j|0}e=a+604|0;a=k[e>>2]|0;if((a|0)==(b|0)){l=b;m=g}else{qe(b,a,c);l=k[e>>2]|0;m=k[f>>2]|0}k[e>>2]=l+c;k[f>>2]=m-c;j=1;r=d;return j|0}function mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;if((c|0)<=0){e=1;return e|0}d=a+608|0;f=a+592|0;g=a+604|0;h=c;c=b;while(1){b=k[d>>2]|0;i=k[f>>2]|0;j=(b+h|0)>(i|0)?i-b|0:h;if((j|0)<=0){l=4;break}m=k[g>>2]|0;if((m|0)==(c|0)){n=c;o=b;p=i}else{qe(m,c,j);n=k[g>>2]|0;o=k[d>>2]|0;p=k[f>>2]|0}k[g>>2]=n+j;m=o+j|0;k[d>>2]=m;c=c+j|0;h=h-j|0;if((m|0)>=(p|0)?(je(a)|0)==0:0){e=-1;l=10;break}if((h|0)<=0){e=1;l=10;break}}if((l|0)==4)Ja(142646,142652,55,142667);else if((l|0)==10)return e|0;return 0}function nf(a,b){a=a|0;b=b|0;var c=0;c=ha(k[a+580>>2]|0,b)|0;b=a+604|0;k[b>>2]=(k[b>>2]|0)+c;b=a+608|0;k[b>>2]=(k[b>>2]|0)-c;return 1}function of(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;if(!(c-b&4))e=c;else{k[c>>2]=0;e=c+4|0}if(e>>>0>b>>>0){c=b;b=0;while(1){f=k[c>>2]|0;if(f>>>0>d>>>0|(f+b|0)>>>0>d>>>0){g=d-b|0;k[c>>2]=g;h=g}else h=f;if(!h)j=b;else{f=b>>>3;g=a+f|0;m=b&7;n=8-m|0;if(h>>>0>n>>>0){if(!m){o=g;p=h}else{i[g>>0]=(l[g>>0]|0)&255<<n;o=a+(f+1)|0;p=h-n|0}n=p>>>3;if(!n){q=o;r=p}else{if(p>>>0>63){if(!(o&3)){s=o;t=n}else{f=o;u=n;while(1){v=f+1|0;i[f>>0]=0;w=u+-1|0;if((w|0)!=0&(v&3|0)!=0){f=v;u=w}else{s=v;t=w;break}}}u=t>>>2;f=u<<2;qr(s|0,0,f|0)|0;x=s+f|0;y=t-(u<<2)|0}else{x=o;y=n}switch(y|0){case 15:{i[x+14>>0]=0;z=17;break}case 14:{z=17;break}case 13:{z=18;break}case 12:{z=19;break}case 11:{z=20;break}case 10:{z=21;break}case 9:{z=22;break}case 8:{z=23;break}case 7:{z=24;break}case 6:{z=25;break}case 5:{z=26;break}case 4:{z=27;break}case 3:{z=28;break}case 2:{z=29;break}case 1:{z=30;break}default:A=x}if((z|0)==17){z=0;i[x+13>>0]=0;z=18}if((z|0)==18){z=0;i[x+12>>0]=0;z=19}if((z|0)==19){z=0;i[x+11>>0]=0;z=20}if((z|0)==20){z=0;i[x+10>>0]=0;z=21}if((z|0)==21){z=0;i[x+9>>0]=0;z=22}if((z|0)==22){z=0;i[x+8>>0]=0;z=23}if((z|0)==23){z=0;i[x+7>>0]=0;z=24}if((z|0)==24){z=0;i[x+6>>0]=0;z=25}if((z|0)==25){z=0;i[x+5>>0]=0;z=26}if((z|0)==26){z=0;i[x+4>>0]=0;z=27}if((z|0)==27){z=0;i[x+3>>0]=0;z=28}if((z|0)==28){z=0;i[x+2>>0]=0;z=29}if((z|0)==29){z=0;i[x+1>>0]=0;z=30}if((z|0)==30){z=0;i[x>>0]=0;A=x+y|0}q=A;r=p&7}if(r)i[q>>0]=(l[q>>0]|0)&255>>>r}else i[g>>0]=((l[142803+h>>0]|0)>>>m^255)&(l[g>>0]|0);j=(k[c>>2]|0)+b|0}u=c+4|0;f=k[u>>2]|0;if(f>>>0>d>>>0|(f+j|0)>>>0>d>>>0){w=d-j|0;k[u>>2]=w;B=w}else B=f;if(!B)C=j;else{f=j>>>3;w=a+f|0;v=j&7;D=8-v|0;if(B>>>0>D>>>0){if(!v){E=w;F=B}else{i[w>>0]=l[w>>0]|0|255>>>v;E=a+(f+1)|0;F=B-D|0}D=F>>>3;if(!D){G=E;H=F}else{if(F>>>0>63){if(!(E&3)){I=E;J=D}else{f=E;K=D;while(1){L=f+1|0;i[f>>0]=-1;M=K+-1|0;if((M|0)!=0&(L&3|0)!=0){f=L;K=M}else{I=L;J=M;break}}}K=J>>>2;f=K<<2;qr(I|0,-1,f|0)|0;N=I+f|0;O=J-(K<<2)|0}else{N=E;O=D}switch(O|0){case 15:{i[N+14>>0]=-1;z=49;break}case 14:{z=49;break}case 13:{z=50;break}case 12:{z=51;break}case 11:{z=52;break}case 10:{z=53;break}case 9:{z=54;break}case 8:{z=55;break}case 7:{z=56;break}case 6:{z=57;break}case 5:{z=58;break}case 4:{z=59;break}case 3:{z=60;break}case 2:{z=61;break}case 1:{z=62;break}default:P=N}if((z|0)==49){z=0;i[N+13>>0]=-1;z=50}if((z|0)==50){z=0;i[N+12>>0]=-1;z=51}if((z|0)==51){z=0;i[N+11>>0]=-1;z=52}if((z|0)==52){z=0;i[N+10>>0]=-1;z=53}if((z|0)==53){z=0;i[N+9>>0]=-1;z=54}if((z|0)==54){z=0;i[N+8>>0]=-1;z=55}if((z|0)==55){z=0;i[N+7>>0]=-1;z=56}if((z|0)==56){z=0;i[N+6>>0]=-1;z=57}if((z|0)==57){z=0;i[N+5>>0]=-1;z=58}if((z|0)==58){z=0;i[N+4>>0]=-1;z=59}if((z|0)==59){z=0;i[N+3>>0]=-1;z=60}if((z|0)==60){z=0;i[N+2>>0]=-1;z=61}if((z|0)==61){z=0;i[N+1>>0]=-1;z=62}if((z|0)==62){z=0;i[N>>0]=-1;P=N+O|0}G=P;H=F&7}if(H)i[G>>0]=l[G>>0]|0|65280>>>H}else i[w>>0]=l[w>>0]|0|(l[142803+B>>0]|0)>>>v;C=(k[u>>2]|0)+j|0}c=c+8|0;if(c>>>0>=e>>>0){Q=C;break}else b=C}}else Q=0;if((Q|0)==(d|0))return;else Ja(142812,142823,453,142834)}function pf(a,b){a=a|0;b=b|0;var c=0,d=0;b=r;r=r+16|0;c=b+8|0;if(!(tf(a)|0)){d=1;r=b;return d|0}if(!(_b(a,7992,1)|0)){vc(k[a+628>>2]|0,142852,142870,b);d=0;r=b;return d|0}else{k[c>>2]=1;d=Ob(a,65536,c)|0;r=b;return d|0}return 0}function qf(a,b){a=a|0;b=b|0;var c=0,d=0;b=r;r=r+16|0;c=b+8|0;if(!(tf(a)|0)){d=0;r=b;return d|0}if(!(_b(a,8028,1)|0)){vc(k[a+628>>2]|0,142917,142935,b);d=0;r=b;return d|0}else{k[a+532>>2]=14;k[a+540>>2]=14;k[a+548>>2]=14;k[a+536>>2]=15;k[a+544>>2]=15;k[a+552>>2]=15;k[a+528>>2]=8;k[c>>2]=1;d=Ob(a,65536,c)|0;r=b;return d|0}return 0}function rf(a,b){a=a|0;b=b|0;var c=0,d=0;b=r;r=r+16|0;c=b;if(!(tf(a)|0)){d=0;r=b;return d|0}k[a+532>>2]=16;k[a+540>>2]=16;k[a+548>>2]=16;k[c>>2]=7;d=Ob(a,65536,c)|0;r=b;return d|0}function sf(a,b){a=a|0;b=b|0;var c=0,d=0;b=r;r=r+16|0;c=b;if(!(tf(a)|0)){d=0;r=b;return d|0}k[a+532>>2]=16;k[a+540>>2]=16;k[a+548>>2]=16;k[c>>2]=11;d=Ob(a,65536,c)|0;r=b;return d|0}function tf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;b=r;r=r+32|0;c=b+16|0;if(!(_b(a,8100,5)|0)){vc(k[a+628>>2]|0,143889,143903,b);d=0;r=b;return d|0}e=me(96)|0;f=a+576|0;k[f>>2]=e;if(!e){vc(k[a+628>>2]|0,143889,143955,b+8|0);d=0;r=b;return d|0}g=k[a+8>>2]|0;k[e>>2]=g;h=a+668|0;i=a+672|0;k[e+32>>2]=k[i>>2];k[i>>2]=11;k[e+36>>2]=k[h>>2];k[h>>2]=12;h=a+676|0;k[e+40>>2]=k[h>>2];k[h>>2]=9;k[e+28>>2]=0;if(!g){g=a+12|0;k[g>>2]=k[g>>2]|256}k[e+64>>2]=0;k[c>>2]=3;Ob(a,65540,c)|0;k[(k[f>>2]|0)+80>>2]=0;k[a+504>>2]=9;k[a+508>>2]=10;k[a+512>>2]=24;k[a+532>>2]=17;k[a+540>>2]=17;k[a+548>>2]=17;k[a+516>>2]=10;k[a+524>>2]=25;k[a+528>>2]=11;k[a+536>>2]=18;k[a+544>>2]=18;k[a+552>>2]=18;k[a+556>>2]=2;k[a+564>>2]=3;d=1;r=b;return d|0}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0,pd=0,qd=0,rd=0,sd=0,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=0,Bd=0,Cd=0,Dd=0,Ed=0,Fd=0,Gd=0,Hd=0,Id=0,Jd=0,Kd=0,Ld=0,Md=0,Nd=0,Od=0,Pd=0,Qd=0,Rd=0,Sd=0,Td=0,Ud=0,Vd=0,Wd=0,Xd=0,Yd=0,Zd=0,_d=0,$d=0,ae=0,be=0,ce=0;d=r;r=r+176|0;e=d+144|0;f=d+120|0;g=d+104|0;h=d+88|0;i=d+72|0;j=d+56|0;m=d+40|0;n=d+24|0;o=d+8|0;p=k[a+576>>2]|0;q=k[p+12>>2]|0;s=k[p+44>>2]|0;t=p+8|0;if((c|0)%(k[t>>2]|0)|0){vc(k[a+628>>2]|0,143789,153793,d);u=-1;r=d;return u|0}v=p+48|0;w=k[v>>2]|0;x=p+52|0;y=k[x>>2]|0;z=p+56|0;A=k[z>>2]|0;B=a+604|0;C=k[B>>2]|0;D=a+608|0;E=k[D>>2]|0;F=C+E|0;do if((c|0)>0){G=p+72|0;H=p+68|0;I=(q|0)>0;J=p+92|0;K=a+628|0;L=a+12|0;M=a+492|0;N=a+452|0;O=p+60|0;P=b;Q=c;R=k[H>>2]|0;S=k[G>>2]|0;T=w;U=y;V=A;W=C;a:while(1){b:do if(I){X=S;Y=T;Z=U;_=0;$=0;aa=k[R>>2]|0;ba=W;ca=S;da=R+4|0;c:while(1){ea=(ca|0)==(S|0);d:do if(ea){fa=Y;ga=Z;ha=0;ia=_;ja=$;ka=aa;la=ba;ma=da;while(1){do if((ga|0)<7)if(la>>>0>=F>>>0)if(!ga){na=P;oa=S;pa=fa;qa=0;ra=V;sa=ha;ta=ja;ua=la;va=S;wa=88;break a}else{xa=fa;ya=7;za=la;break}else{xa=(l[s+(l[la>>0]|0)>>0]|0)<<ga|fa;ya=ga+8|0;za=la+1|0;break}else{xa=fa;ya=ga;za=la}while(0);Aa=xa&127;Ba=l[8280+(Aa<<3)+1>>0]|0;Ca=ya-Ba|0;Da=xa>>>Ba;switch(l[8280+(Aa<<3)>>0]|0|0){case 6:{Ea=Ca;Fa=Da;Ga=ha;Ha=ja;Ia=za;Ja=S;wa=77;break c;break}case 12:{Ka=Ba;La=Ca;Ma=Da;Na=ya;Oa=ha;Pa=ja;Qa=za;Ra=S;wa=78;break c;break}case 2:{Sa=Ca;Ta=Da;Ua=ha;Va=ja;Wa=ka;Xa=za;Ya=ma;wa=22;break d;break}case 3:{Za=Ca;_a=Da;$a=ha;ab=ja;bb=ia;cb=ka;db=za;eb=ma;wa=62;break d;break}case 4:{fb=Aa;gb=Ca;hb=Da;ib=ha;jb=ja;kb=ia;lb=ka;mb=za;nb=ma;wa=66;break d;break}case 5:{ob=Aa;pb=Ca;qb=Da;rb=ha;sb=ja;tb=ka;ub=za;vb=ma;wa=70;break d;break}case 1:break;default:{wb=Da;xb=Ca;yb=ha;zb=ja;Bb=za;Cb=S;wa=85;break c}}Aa=(k[ma>>2]|0)+ka|0;Ba=ia+ha+Aa|0;if((q|0)>(Aa|0)){fa=Da;ga=Ca;ha=Ba;ia=0-Aa|0;ja=Aa;ka=Aa+(k[ma+4>>2]|0)|0;la=za;ma=ma+8|0}else{Db=Da;Eb=Ca;Fb=Ba;Gb=Aa;Hb=za;Ib=S;wa=99;break c}}}else{ma=Y;la=Z;ka=0;ja=_;ia=$;ha=aa;ga=ba;fa=da;while(1){do if((la|0)<7)if(ga>>>0>=F>>>0)if(!la){na=P;oa=S;pa=ma;qa=0;ra=V;sa=ka;ta=ia;ua=ga;va=ca;wa=88;break a}else{Jb=ma;Kb=7;Lb=ga;break}else{Jb=(l[s+(l[ga>>0]|0)>>0]|0)<<la|ma;Kb=la+8|0;Lb=ga+1|0;break}else{Jb=ma;Kb=la;Lb=ga}while(0);Aa=Jb&127;Ba=l[8280+(Aa<<3)+1>>0]|0;Ca=Kb-Ba|0;Da=Jb>>>Ba;switch(l[8280+(Aa<<3)>>0]|0|0){case 6:{Ea=Ca;Fa=Da;Ga=ka;Ha=ia;Ia=Lb;Ja=ca;wa=77;break c;break}case 12:{Ka=Ba;La=Ca;Ma=Da;Na=Kb;Oa=ka;Pa=ia;Qa=Lb;Ra=ca;wa=78;break c;break}case 2:{Sa=Ca;Ta=Da;Ua=ka;Va=ia;Wa=ha;Xa=Lb;Ya=fa;wa=22;break d;break}case 3:{Za=Ca;_a=Da;$a=ka;ab=ia;bb=ja;cb=ha;db=Lb;eb=fa;wa=62;break d;break}case 4:{fb=Aa;gb=Ca;hb=Da;ib=ka;jb=ia;kb=ja;lb=ha;mb=Lb;nb=fa;wa=66;break d;break}case 5:{ob=Aa;pb=Ca;qb=Da;rb=ka;sb=ia;tb=ha;ub=Lb;vb=fa;wa=70;break d;break}case 1:break;default:{wb=Da;xb=Ca;yb=ka;zb=ia;Bb=Lb;Cb=ca;wa=85;break c}}if((ha|0)<=(ia|0)&(ha|0)<(q|0)){Aa=ha;Ba=fa;while(1){Mb=(k[Ba>>2]|0)+Aa+(k[Ba+4>>2]|0)|0;Nb=Ba+8|0;if((Mb|0)<=(ia|0)&(Mb|0)<(q|0)){Aa=Mb;Ba=Nb}else{Ob=Mb;Pb=Nb;break}}}else{Ob=ha;Pb=fa}Ba=(k[Pb>>2]|0)+Ob|0;Aa=ja+ka+Ba|0;if((q|0)>(Ba|0)){ma=Da;la=Ca;ka=Aa;ja=0-Ba|0;ia=Ba;ha=Ba+(k[Pb+4>>2]|0)|0;ga=Lb;fa=Pb+8|0}else{Db=Da;Eb=Ca;Fb=Aa;Gb=Ba;Hb=Lb;Ib=ca;wa=99;break c}}}while(0);if((wa|0)==22){wa=0;if(!(ca-X&4)){fa=Ta;ga=Sa;ha=Ua;ia=Va;ja=Xa;e:while(1){do if((ga|0)<12){if(ja>>>0>=F>>>0)if(!ga){na=P;oa=S;pa=fa;qa=0;ra=V;sa=ha;ta=ia;ua=ja;va=ca;wa=88;break a}else{Qb=fa;Rb=12;Sb=ja;break}ka=ja+1|0;la=(l[s+(l[ja>>0]|0)>>0]|0)<<ga|fa;ma=ga+8|0;if((ma|0)<12)if(ka>>>0<F>>>0){Qb=(l[s+(l[ka>>0]|0)>>0]|0)<<ma|la;Rb=ga+16|0;Sb=ja+2|0}else{Qb=la;Rb=12;Sb=ka}else{Qb=la;Rb=ma;Sb=ka}}else{Qb=fa;Rb=ga;Sb=ja}while(0);ka=Qb&4095;ma=l[9304+(ka<<3)+1>>0]|0;la=Rb-ma|0;Ba=Qb>>>ma;switch(l[9304+(ka<<3)>>0]|0|0){case 7:{Tb=ka;Ub=la;Vb=Ba;Wb=ha;Xb=ia;Yb=Sb;break e;break}case 11:case 9:break;default:{Zb=Ba;_b=la;$b=ha;ac=ia;bc=Sb;cc=ca;wa=87;break c}}ma=k[9304+(ka<<3)+4>>2]|0;fa=Ba;ga=la;ha=ma+ha|0;ia=ma+ia|0;ja=Sb}ja=k[9304+(Tb<<3)+4>>2]|0;ia=ca+4|0;k[ca>>2]=ja+Wb;ha=Vb;ga=Ub;fa=0;ma=ja+Xb|0;ja=Yb;f:while(1){do if((ga|0)<13){if(ja>>>0>=F>>>0)if(!ga){na=P;oa=S;pa=ha;qa=0;ra=V;sa=fa;ta=ma;ua=ja;va=ia;wa=88;break a}else{dc=ha;ec=13;fc=ja;break}la=ja+1|0;Ba=(l[s+(l[ja>>0]|0)>>0]|0)<<ga|ha;ka=ga+8|0;if((ka|0)<13)if(la>>>0<F>>>0){dc=(l[s+(l[la>>0]|0)>>0]|0)<<ka|Ba;ec=ga+16|0;fc=ja+2|0}else{dc=Ba;ec=13;fc=la}else{dc=Ba;ec=ka;fc=la}}else{dc=ha;ec=ga;fc=ja}while(0);la=dc&8191;ka=l[42072+(la<<3)+1>>0]|0;Ba=ec-ka|0;Aa=dc>>>ka;switch(l[42072+(la<<3)>>0]|0|0){case 8:{gc=la;hc=Ba;ic=Aa;jc=fa;kc=ma;lc=fc;break f;break}case 11:case 10:break;default:{mc=Aa;nc=Ba;oc=fa;pc=ma;qc=fc;rc=ia;wa=86;break c}}ka=k[42072+(la<<3)+4>>2]|0;ha=Aa;ga=Ba;fa=ka+fa|0;ma=ka+ma|0;ja=fc}ja=k[42072+(gc<<3)+4>>2]|0;k[ia>>2]=ja+jc;sc=ic;tc=hc;uc=ja+kc|0;wc=lc}else{ja=Ta;ma=Sa;fa=Ua;ga=Va;ha=Xa;g:while(1){do if((ma|0)<13){if(ha>>>0>=F>>>0)if(!ma){na=P;oa=S;pa=ja;qa=0;ra=V;sa=fa;ta=ga;ua=ha;va=ca;wa=88;break a}else{xc=ja;yc=13;zc=ha;break}ka=ha+1|0;Ba=(l[s+(l[ha>>0]|0)>>0]|0)<<ma|ja;Aa=ma+8|0;if((Aa|0)<13)if(ka>>>0<F>>>0){xc=(l[s+(l[ka>>0]|0)>>0]|0)<<Aa|Ba;yc=ma+16|0;zc=ha+2|0}else{xc=Ba;yc=13;zc=ka}else{xc=Ba;yc=Aa;zc=ka}}else{xc=ja;yc=ma;zc=ha}while(0);ka=xc&8191;Aa=l[42072+(ka<<3)+1>>0]|0;Ba=yc-Aa|0;la=xc>>>Aa;switch(l[42072+(ka<<3)>>0]|0|0){case 8:{Ac=ka;Bc=Ba;Cc=la;Dc=fa;Ec=ga;Fc=zc;break g;break}case 11:case 10:break;default:{mc=la;nc=Ba;oc=fa;pc=ga;qc=zc;rc=ca;wa=86;break c}}Aa=k[42072+(ka<<3)+4>>2]|0;ja=la;ma=Ba;fa=Aa+fa|0;ga=Aa+ga|0;ha=zc}ha=k[42072+(Ac<<3)+4>>2]|0;ga=ca+4|0;k[ca>>2]=ha+Dc;fa=Cc;ma=Bc;ja=0;ia=ha+Ec|0;ha=Fc;h:while(1){do if((ma|0)<12){if(ha>>>0>=F>>>0)if(!ma){na=P;oa=S;pa=fa;qa=0;ra=V;sa=ja;ta=ia;ua=ha;va=ga;wa=88;break a}else{Gc=fa;Hc=12;Ic=ha;break}Aa=ha+1|0;Ba=(l[s+(l[ha>>0]|0)>>0]|0)<<ma|fa;la=ma+8|0;if((la|0)<12)if(Aa>>>0<F>>>0){Gc=(l[s+(l[Aa>>0]|0)>>0]|0)<<la|Ba;Hc=ma+16|0;Ic=ha+2|0}else{Gc=Ba;Hc=12;Ic=Aa}else{Gc=Ba;Hc=la;Ic=Aa}}else{Gc=fa;Hc=ma;Ic=ha}while(0);Aa=Gc&4095;la=l[9304+(Aa<<3)+1>>0]|0;Ba=Hc-la|0;ka=Gc>>>la;switch(l[9304+(Aa<<3)>>0]|0|0){case 7:{Jc=Aa;Kc=Ba;Lc=ka;Mc=ja;Nc=ia;Oc=Ic;break h;break}case 11:case 9:break;default:{Zb=ka;_b=Ba;$b=ja;ac=ia;bc=Ic;cc=ga;wa=87;break c}}la=k[9304+(Aa<<3)+4>>2]|0;fa=ka;ma=Ba;ja=la+ja|0;ia=la+ia|0;ha=Ic}ha=k[9304+(Jc<<3)+4>>2]|0;k[ga>>2]=ha+Mc;sc=Lc;tc=Kc;uc=ha+Nc|0;wc=Oc}ha=ca+8|0;if((ha|0)!=(S|0))if((Wa|0)<=(uc|0)&(Wa|0)<(q|0)){ia=Wa;ja=Ya;while(1){ma=(k[ja>>2]|0)+ia+(k[ja+4>>2]|0)|0;fa=ja+8|0;if((ma|0)<=(uc|0)&(ma|0)<(q|0)){ia=ma;ja=fa}else{Pc=sc;Qc=tc;Rc=uc;Sc=ma;Tc=wc;Uc=ha;Vc=fa;break}}}else{Pc=sc;Qc=tc;Rc=uc;Sc=Wa;Tc=wc;Uc=ha;Vc=Ya}else{Pc=sc;Qc=tc;Rc=uc;Sc=Wa;Tc=wc;Uc=S;Vc=Ya}}else if((wa|0)==62){wa=0;if(!ea?(cb|0)<=(ab|0)&(cb|0)<(q|0):0){ja=cb;ia=eb;while(1){ga=(k[ia>>2]|0)+ja+(k[ia+4>>2]|0)|0;fa=ia+8|0;if((ga|0)<=(ab|0)&(ga|0)<(q|0)){ja=ga;ia=fa}else{Wc=ga;Xc=fa;break}}}else{Wc=cb;Xc=eb}k[ca>>2]=bb+$a+Wc;Pc=_a;Qc=Za;Rc=Wc;Sc=(k[Xc>>2]|0)+Wc|0;Tc=db;Uc=ca+4|0;Vc=Xc+4|0}else if((wa|0)==66){wa=0;if(!ea?(lb|0)<=(jb|0)&(lb|0)<(q|0):0){ia=lb;ja=nb;while(1){ha=(k[ja>>2]|0)+ia+(k[ja+4>>2]|0)|0;fa=ja+8|0;if((ha|0)<=(jb|0)&(ha|0)<(q|0)){ia=ha;ja=fa}else{Yc=ha;Zc=fa;break}}}else{Yc=lb;Zc=nb}ja=k[8280+(fb<<3)+4>>2]|0;k[ca>>2]=kb+ib+Yc+ja;Pc=hb;Qc=gb;Rc=ja+Yc|0;Sc=(k[Zc>>2]|0)+Yc|0;Tc=mb;Uc=ca+4|0;Vc=Zc+4|0}else if((wa|0)==70){wa=0;ja=(ca|0)!=(S|0);if(ja?(tb|0)<=(sb|0)&(tb|0)<(q|0):0){ia=tb;ea=vb;while(1){fa=(k[ea>>2]|0)+ia+(k[ea+4>>2]|0)|0;ha=ea+8|0;if((fa|0)<=(sb|0)&(fa|0)<(q|0)){ia=fa;ea=ha}else{_c=fa;$c=ha;break}}}else{_c=tb;$c=vb}ea=k[8280+(ob<<3)+4>>2]|0;ia=ea+sb|0;if((_c|0)<=(ia|0)&(ja|(_c|0)<(ia|0))){ad=pb;bd=qb;cd=rb;dd=sb;ed=ub;fd=ca;wa=74;break}k[ca>>2]=_c-sb+rb-ea;ia=$c+-4|0;Pc=qb;Qc=pb;Rc=_c-ea|0;Sc=_c-(k[ia>>2]|0)|0;Tc=ub;Uc=ca+4|0;Vc=ia}if((q|0)>(Rc|0)){Y=Pc;Z=Qc;_=0-Rc|0;$=Rc;aa=Sc;ba=Tc;ca=Uc;da=Vc}else{gd=Pc;hd=Qc;id=V;jd=Rc;kd=Tc;ld=Uc;break b}}do if((wa|0)==74){wa=0;da=k[K>>2]|0;ca=(k[L>>2]&1024|0)!=0;ba=k[(ca?M:N)>>2]|0;k[o>>2]=k[J>>2];k[o+4>>2]=ca?142996:143001;k[o+8>>2]=ba;k[o+12>>2]=dd;vc(da,143789,143007,o);md=bd;nd=ad;od=V;pd=cd;qd=dd;rd=ed;sd=fd}else if((wa|0)==77){wa=0;k[Ja>>2]=q-Ha;da=k[K>>2]|0;ba=(k[L>>2]&1024|0)!=0;ca=k[(ba?M:N)>>2]|0;k[n>>2]=k[J>>2];k[n+4>>2]=ba?142996:143001;k[n+8>>2]=ca;k[n+12>>2]=Ha;vc(da,143789,143800,n);md=Fa;nd=Ea;od=V;pd=Ga;qd=Ha;rd=Ia;sd=Ja+4|0}else if((wa|0)==78){wa=0;da=Ra+4|0;k[Ra>>2]=q-Pa;do if((La|0)<4)if(Qa>>>0>=F>>>0)if((Na|0)==(Ka|0)){na=P;oa=S;pa=Ma;qa=La;ra=V;sa=Oa;ta=Pa;ua=Qa;va=da;wa=88;break a}else{td=Ma;ud=4;vd=Qa;break}else{td=(l[s+(l[Qa>>0]|0)>>0]|0)<<La|Ma;ud=La+8|0;vd=Qa+1|0;break}else{td=Ma;ud=La;vd=Qa}while(0);if(td&15){ja=k[K>>2]|0;ca=(k[L>>2]&1024|0)!=0;ba=k[(ca?M:N)>>2]|0;k[m>>2]=k[J>>2];k[m+4>>2]=ca?142996:143001;k[m+8>>2]=ba;k[m+12>>2]=Pa;vc(ja,143789,143007,m)}md=td>>>4;nd=ud+-4|0;od=1;pd=Oa;qd=Pa;rd=vd;sd=da}else if((wa|0)==86){wa=0;ja=k[K>>2]|0;ba=(k[L>>2]&1024|0)!=0;ca=k[(ba?M:N)>>2]|0;k[i>>2]=k[J>>2];k[i+4>>2]=ba?142996:143001;k[i+8>>2]=ca;k[i+12>>2]=pc;vc(ja,143789,143007,i);md=mc;nd=nc;od=V;pd=oc;qd=pc;rd=qc;sd=rc}else if((wa|0)==87){wa=0;ja=k[K>>2]|0;ca=(k[L>>2]&1024|0)!=0;ba=k[(ca?M:N)>>2]|0;k[h>>2]=k[J>>2];k[h+4>>2]=ca?142996:143001;k[h+8>>2]=ba;k[h+12>>2]=ac;vc(ja,143789,143007,h);md=Zb;nd=_b;od=V;pd=$b;qd=ac;rd=bc;sd=cc}else if((wa|0)==99){wa=0;if(!Fb){gd=Db;hd=Eb;id=V;jd=Gb;kd=Hb;ld=Ib;break b}if((Gb+Fb|0)<(q|0)){do if((Eb|0)<1)if(Hb>>>0>=F>>>0)if(!Eb){na=P;oa=S;pa=Db;qa=0;ra=V;sa=Fb;ta=Gb;ua=Hb;va=Ib;wa=88;break a}else{wd=Db;xd=1;yd=Hb;break}else{wd=(l[s+(l[Hb>>0]|0)>>0]|0)<<Eb|Db;xd=Eb+8|0;yd=Hb+1|0;break}else{wd=Db;xd=Eb;yd=Hb}while(0);if(!(wd&1)){wb=wd;xb=xd;yb=Fb;zb=Gb;Bb=yd;Cb=Ib;wa=85;break}zd=wd>>>1;Ad=xd+-1|0;Bd=yd}else{zd=Db;Ad=Eb;Bd=Hb}k[Ib>>2]=Fb;gd=zd;hd=Ad;id=V;jd=Gb;kd=Bd;ld=Ib+4|0;break b}while(0);if((wa|0)==85){wa=0;da=k[K>>2]|0;ja=(k[L>>2]&1024|0)!=0;ba=k[(ja?M:N)>>2]|0;k[j>>2]=k[J>>2];k[j+4>>2]=ja?142996:143001;k[j+8>>2]=ba;k[j+12>>2]=zb;vc(da,143789,143007,j);md=wb;nd=xb;od=V;pd=yb;qd=zb;rd=Bb;sd=Cb}if(!pd){gd=md;hd=nd;id=od;jd=qd;kd=rd;ld=sd}else{k[sd>>2]=pd;gd=md;hd=nd;id=od;jd=qd;kd=rd;ld=sd+4|0}}else{gd=T;hd=U;id=V;jd=0;kd=W;ld=S}while(0);do if((jd|0)==(q|0))Cd=ld;else{da=k[J>>2]|0;ba=k[K>>2]|0;ja=(k[L>>2]&1024|0)!=0;ca=k[(ja?M:N)>>2]|0;k[e>>2]=jd>>>0<q>>>0?143089:143103;k[e+4>>2]=da;k[e+8>>2]=ja?142996:143001;k[e+12>>2]=ca;k[e+16>>2]=jd;k[e+20>>2]=q;ie(ba,143789,143124,e);ba=(jd|0)>(q|0);if(ba&ld>>>0>S>>>0){ca=jd;ja=ld;while(1){da=ja+-4|0;aa=ca-(k[da>>2]|0)|0;$=(aa|0)>(q|0);if($&da>>>0>S>>>0){ca=aa;ja=da}else{Dd=$;Ed=aa;Fd=da;break}}}else{Dd=ba;Ed=jd;Fd=ld}if((Ed|0)>=(q|0)){if(!Dd){Cd=Fd;break}k[Fd>>2]=q;k[Fd+4>>2]=0;Cd=Fd+8|0;break}if(!(Fd-S&4))Gd=Fd;else{k[Fd>>2]=0;Gd=Fd+4|0}k[Gd>>2]=q-((Ed|0)<0?0:Ed);Cd=Gd+4|0}while(0);if(id){Hd=P;Id=S;Jd=gd;Kd=hd;Ld=id;Md=kd;Nd=Cd;break}Ab[k[O>>2]&31](P,S,Cd,q);k[Cd>>2]=0;R=k[G>>2]|0;S=k[H>>2]|0;k[G>>2]=S;k[H>>2]=R;ja=k[t>>2]|0;Q=Q-ja|0;k[J>>2]=(k[J>>2]|0)+1;if((Q|0)<=0){Od=gd;Pd=hd;Qd=kd;wa=128;break}else{P=P+ja|0;T=gd;U=hd;V=0;W=kd}}if((wa|0)==128){Rd=k[B>>2]|0;Sd=k[D>>2]|0;Td=Od;Ud=Pd;Vd=0;Wd=Qd;break}do if((wa|0)==88){W=k[K>>2]|0;V=(k[L>>2]&1024|0)!=0;U=k[(V?M:N)>>2]|0;k[g>>2]=k[J>>2];k[g+4>>2]=V?142996:143001;k[g+8>>2]=U;k[g+12>>2]=ta;ie(W,143789,143048,g);if(!sa)Xd=va;else{k[va>>2]=sa;Xd=va+4|0}if((ta|0)==(q|0)){Hd=na;Id=oa;Jd=pa;Kd=qa;Ld=ra;Md=ua;Nd=Xd}else{W=k[J>>2]|0;U=k[K>>2]|0;V=(k[L>>2]&1024|0)!=0;T=k[(V?M:N)>>2]|0;k[f>>2]=ta>>>0<q>>>0?143089:143103;k[f+4>>2]=W;k[f+8>>2]=V?142996:143001;k[f+12>>2]=T;k[f+16>>2]=ta;k[f+20>>2]=q;ie(U,143789,143124,f);U=(ta|0)>(q|0);if(U&Xd>>>0>oa>>>0){T=ta;V=Xd;while(1){W=V+-4|0;P=T-(k[W>>2]|0)|0;Q=(P|0)>(q|0);if(Q&W>>>0>oa>>>0){T=P;V=W}else{Yd=Q;Zd=P;_d=W;break}}}else{Yd=U;Zd=ta;_d=Xd}if((Zd|0)>=(q|0)){if(!Yd){Hd=na;Id=oa;Jd=pa;Kd=qa;Ld=ra;Md=ua;Nd=_d;break}k[_d>>2]=q;k[_d+4>>2]=0;Hd=na;Id=oa;Jd=pa;Kd=qa;Ld=ra;Md=ua;Nd=_d+8|0;break}if(!(_d-oa&4))$d=_d;else{k[_d>>2]=0;$d=_d+4|0}k[$d>>2]=q-((Zd|0)<0?0:Zd);Hd=na;Id=oa;Jd=pa;Kd=qa;Ld=ra;Md=ua;Nd=$d+4|0}}while(0);do if((Kd|0)<13){if(Md>>>0>=F>>>0){ae=Jd;be=(Kd|0)==0?0:13;ce=Md;break}N=Md+1|0;M=(l[s+(l[Md>>0]|0)>>0]|0)<<Kd|Jd;L=Kd+8|0;if((L|0)<13)if(N>>>0<F>>>0){ae=(l[s+(l[N>>0]|0)>>0]|0)<<L|M;be=Kd+16|0;ce=Md+2|0}else{ae=M;be=13;ce=N}else{ae=M;be=L;ce=N}}else{ae=Jd;be=Kd;ce=Md}while(0);Ab[k[O>>2]&31](Hd,Id,Nd,q);k[x>>2]=be+-13;k[v>>2]=ae>>>13;k[z>>2]=Ld;k[D>>2]=(k[B>>2]|0)-ce+(k[D>>2]|0);k[B>>2]=ce;u=(k[J>>2]|0)!=0?1:-1;r=d;return u|0}else{Rd=C;Sd=E;Td=w;Ud=y;Vd=A;Wd=C}while(0);k[x>>2]=Ud;k[v>>2]=Td;k[z>>2]=Vd;k[D>>2]=Rd-Wd+Sd;k[B>>2]=Wd;u=1;r=d;return u|0}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;d=r;r=r+16|0;e=k[a+576>>2]|0;f=e+8|0;if((c|0)%(k[f>>2]|0)|0){vc(k[a+628>>2]|0,143192,143203,d);g=0;r=d;return g|0}if((c|0)<=0){g=1;r=d;return g|0}h=e+80|0;i=e+12|0;e=b;b=c;while(1){zf(a,e,k[h>>2]|0,k[i>>2]|0);qe(k[h>>2]|0,e,k[f>>2]|0);c=k[f>>2]|0;b=b-c|0;if((b|0)<=0){g=1;break}else e=e+c|0}r=d;return g|0}function wf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+576>>2]|0;yf(a,1,12);yf(a,1,12);c=b+52|0;if((k[c>>2]|0)==8)return 1;d=a+608|0;if((k[d>>2]|0)>=(k[a+592>>2]|0))je(a)|0;e=b+48|0;b=k[e>>2]&255;f=a+604|0;a=k[f>>2]|0;k[f>>2]=a+1;i[a>>0]=b;k[d>>2]=(k[d>>2]|0)+1;k[e>>2]=0;k[c>>2]=8;return 1}function xf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0;d=r;r=r+112|0;e=d+80|0;f=d+56|0;g=d+40|0;h=d+24|0;i=d+8|0;j=k[a+576>>2]|0;m=k[j+12>>2]|0;n=k[j+44>>2]|0;o=k[j+4>>2]|0;p=j+8|0;if((c|0)%(k[p>>2]|0)|0){vc(k[a+628>>2]|0,142982,153793,d);q=-1;r=d;return q|0}s=j+48|0;t=k[s>>2]|0;u=j+52|0;v=k[u>>2]|0;w=j+56|0;x=k[w>>2]|0;y=a+604|0;z=k[y>>2]|0;A=a+608|0;B=k[A>>2]|0;C=z+B|0;D=k[j+72>>2]|0;do if((c|0)>0){E=j+92|0;F=a+628|0;G=a+12|0;H=a+492|0;I=a+452|0;J=j+60|0;K=(o&4|0)==0;L=(o&8|0)==0;M=D;N=b;O=c;P=t;Q=v;R=x;S=z;a:while(1){T=P;U=Q;V=0;W=S;X=D;b:while(1){Y=T;Z=U;_=0;$=V;aa=W;c:while(1){do if((Z|0)<12){if(aa>>>0>=C>>>0)if(!Z){ba=N;ca=Y;da=R;ea=_;fa=$;ga=aa;ha=X;break a}else{ia=Y;ja=12;ka=aa;break}la=aa+1|0;ma=(l[n+(l[aa>>0]|0)>>0]|0)<<Z|Y;na=Z+8|0;if((na|0)<12)if(la>>>0<C>>>0){ia=(l[n+(l[la>>0]|0)>>0]|0)<<na|ma;ja=Z+16|0;ka=aa+2|0}else{ia=ma;ja=12;ka=la}else{ia=ma;ja=na;ka=la}}else{ia=Y;ja=Z;ka=aa}while(0);la=ia&4095;na=l[9304+(la<<3)+1>>0]|0;ma=ja-na|0;oa=ia>>>na;switch(l[9304+(la<<3)>>0]|0|0){case 12:{pa=oa;qa=ma;ra=1;sa=_;ta=$;ua=ka;va=X;wa=39;break b;break}case 7:{xa=la;ya=ma;za=oa;Aa=_;Ba=$;Ca=ka;break c;break}case 11:case 9:break;default:{Da=ma;Ea=oa;Fa=_;Ga=$;Ha=ka;Ia=X;wa=16;break b}}na=k[9304+(la<<3)+4>>2]|0;Y=oa;Z=ma;_=na+_|0;$=na+$|0;aa=ka}aa=k[9304+(xa<<3)+4>>2]|0;$=aa+Aa|0;_=X+4|0;k[X>>2]=$;Z=aa+Ba|0;if((Z|0)<(m|0)){Ja=za;Ka=ya;La=0;Ma=Z;Na=Ca}else{Oa=za;Pa=ya;Qa=R;Ra=Z;Sa=Ca;Ta=_;break}d:while(1){do if((Ka|0)<13){if(Na>>>0>=C>>>0)if(!Ka){ba=N;ca=Ja;da=R;ea=La;fa=Ma;ga=Na;ha=_;break a}else{Ua=Ja;Va=13;Wa=Na;break}Z=Na+1|0;aa=(l[n+(l[Na>>0]|0)>>0]|0)<<Ka|Ja;Y=Ka+8|0;if((Y|0)<13)if(Z>>>0<C>>>0){Ua=(l[n+(l[Z>>0]|0)>>0]|0)<<Y|aa;Va=Ka+16|0;Wa=Na+2|0}else{Ua=aa;Va=13;Wa=Z}else{Ua=aa;Va=Y;Wa=Z}}else{Ua=Ja;Va=Ka;Wa=Na}while(0);Z=Ua&8191;Y=l[42072+(Z<<3)+1>>0]|0;aa=Va-Y|0;na=Ua>>>Y;switch(l[42072+(Z<<3)>>0]|0|0){case 12:{pa=na;qa=aa;ra=1;sa=La;ta=Ma;ua=Wa;va=_;wa=39;break b;break}case 8:{Xa=Z;Ya=aa;Za=na;_a=La;$a=Ma;ab=Wa;break d;break}case 11:case 10:break;default:{bb=aa;cb=na;db=_;eb=La;fb=Ma;gb=Wa;wa=26;break b}}Y=k[42072+(Z<<3)+4>>2]|0;Ja=na;Ka=aa;La=Y+La|0;Ma=Y+Ma|0;Na=Wa}Y=k[42072+(Xa<<3)+4>>2]|0;aa=Y+_a|0;na=X+8|0;k[_>>2]=aa;Z=Y+$a|0;if((Z|0)>=(m|0)){Oa=Za;Pa=Ya;Qa=R;Ra=Z;Sa=ab;Ta=na;break}T=Za;U=Ya;V=Z;W=ab;X=(aa|$|0)==0?X:na}if((wa|0)==16){wa=0;X=k[F>>2]|0;W=(k[G>>2]&1024|0)!=0;V=k[(W?H:I)>>2]|0;k[i>>2]=k[E>>2];k[i+4>>2]=W?142996:143001;k[i+8>>2]=V;k[i+12>>2]=Ga;vc(X,142982,143007,i);pa=Ea;qa=Da;ra=R;sa=Fa;ta=Ga;ua=Ha;va=Ia;wa=39}else if((wa|0)==26){wa=0;X=k[F>>2]|0;V=(k[G>>2]&1024|0)!=0;W=k[(V?H:I)>>2]|0;k[h>>2]=k[E>>2];k[h+4>>2]=V?142996:143001;k[h+8>>2]=W;k[h+12>>2]=fb;vc(X,142982,143007,h);pa=cb;qa=bb;ra=R;sa=eb;ta=fb;ua=gb;va=db;wa=39}if((wa|0)==39){wa=0;if(!sa){Oa=pa;Pa=qa;Qa=ra;Ra=ta;Sa=ua;Ta=va}else{k[va>>2]=sa;Oa=pa;Pa=qa;Qa=ra;Ra=ta;Sa=ua;Ta=va+4|0}}do if((Ra|0)==(m|0))hb=Ta;else{X=k[E>>2]|0;W=k[F>>2]|0;V=(k[G>>2]&1024|0)!=0;U=k[(V?H:I)>>2]|0;k[e>>2]=Ra>>>0<m>>>0?143089:143103;k[e+4>>2]=X;k[e+8>>2]=V?142996:143001;k[e+12>>2]=U;k[e+16>>2]=Ra;k[e+20>>2]=m;ie(W,142982,143124,e);W=(Ra|0)>(m|0);if(Ta>>>0>D>>>0&W){U=Ra;V=Ta;while(1){X=V+-4|0;T=U-(k[X>>2]|0)|0;na=(T|0)>(m|0);if(X>>>0>D>>>0&na){U=T;V=X}else{ib=na;jb=T;kb=X;break}}}else{ib=W;jb=Ra;kb=Ta}if((jb|0)>=(m|0)){if(!ib){hb=kb;break}k[kb>>2]=m;k[kb+4>>2]=0;hb=kb+8|0;break}if(!(kb-M&4))lb=kb;else{k[kb>>2]=0;lb=kb+4|0}k[lb>>2]=m-((jb|0)<0?0:jb);hb=lb+4|0}while(0);Ab[k[J>>2]&31](N,D,hb,m);if(K)if(!L){V=Pa&-16;U=Oa>>>(Pa-V|0);if(!V){mb=U;nb=0;ob=(Sa&1|0)==0?Sa:Sa+1|0}else{mb=U;nb=V;ob=Sa}}else{mb=Oa;nb=Pa;ob=Sa}else{V=Pa&-8;mb=Oa>>>(Pa-V|0);nb=V;ob=Sa}V=k[p>>2]|0;O=O-V|0;k[E>>2]=(k[E>>2]|0)+1;if((O|0)<=0){pb=mb;qb=nb;rb=Qa;sb=ob;wa=57;break}else{N=N+V|0;P=mb;Q=nb;R=Qa;S=ob}}if((wa|0)==57){tb=k[y>>2]|0;ub=k[A>>2]|0;vb=pb;wb=qb;xb=rb;yb=sb;break}S=k[F>>2]|0;R=(k[G>>2]&1024|0)!=0;Q=k[(R?H:I)>>2]|0;k[g>>2]=k[E>>2];k[g+4>>2]=R?142996:143001;k[g+8>>2]=Q;k[g+12>>2]=fa;ie(S,142982,143048,g);if(!ea)zb=ha;else{k[ha>>2]=ea;zb=ha+4|0}do if((fa|0)==(m|0))Bb=zb;else{S=k[E>>2]|0;Q=k[F>>2]|0;R=(k[G>>2]&1024|0)!=0;P=k[(R?H:I)>>2]|0;k[f>>2]=fa>>>0<m>>>0?143089:143103;k[f+4>>2]=S;k[f+8>>2]=R?142996:143001;k[f+12>>2]=P;k[f+16>>2]=fa;k[f+20>>2]=m;ie(Q,142982,143124,f);Q=(fa|0)>(m|0);if(zb>>>0>D>>>0&Q){P=fa;R=zb;while(1){S=R+-4|0;N=P-(k[S>>2]|0)|0;O=(N|0)>(m|0);if(S>>>0>D>>>0&O){P=N;R=S}else{Cb=O;Db=N;Eb=S;break}}}else{Cb=Q;Db=fa;Eb=zb}if((Db|0)>=(m|0)){if(!Cb){Bb=Eb;break}k[Eb>>2]=m;k[Eb+4>>2]=0;Bb=Eb+8|0;break}if(!(Eb-M&4))Fb=Eb;else{k[Eb>>2]=0;Fb=Eb+4|0}k[Fb>>2]=m-((Db|0)<0?0:Db);Bb=Fb+4|0}while(0);Ab[k[J>>2]&31](ba,D,Bb,m);k[u>>2]=0;k[s>>2]=ca;k[w>>2]=da;k[A>>2]=(k[y>>2]|0)-ga+(k[A>>2]|0);k[y>>2]=ga;q=-1;r=d;return q|0}else{tb=z;ub=B;vb=t;wb=v;xb=x;yb=z}while(0);k[u>>2]=wb;k[s>>2]=vb;k[w>>2]=xb;k[A>>2]=tb-yb+ub;k[y>>2]=yb;q=1;r=d;return q|0}function yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;d=k[a+576>>2]|0;e=d+52|0;f=k[e>>2]|0;g=d+48|0;d=k[g>>2]|0;if(f>>>0>=c>>>0)if(c>>>0<9){h=c;j=f;l=d}else Ja(143169,142823,609,143180);else{m=a+608|0;n=a+592|0;o=a+604|0;p=c;c=k[m>>2]|0;q=f;f=d;while(1){d=p-q|0;if((c|0)>=(k[n>>2]|0))je(a)|0;r=k[o>>2]|0;k[o>>2]=r+1;i[r>>0]=b>>>d|f;c=(k[m>>2]|0)+1|0;k[m>>2]=c;if(d>>>0<=8){h=d;j=8;l=0;break}else{p=d;q=8;f=0}}}f=j-h|0;q=(k[8064+(h<<2)>>2]&b)<<f|l;if((j|0)!=(h|0)){s=f;t=q;k[g>>2]=t;k[e>>2]=s;return}f=a+608|0;if((k[f>>2]|0)>=(k[a+592>>2]|0))je(a)|0;h=a+604|0;a=k[h>>2]|0;k[h>>2]=a+1;i[a>>0]=q;k[f>>2]=(k[f>>2]|0)+1;s=8;t=0;k[g>>2]=t;k[e>>2]=s;return}function zf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0;e=i[b>>0]|0;f=(d|0)>0;a:do if(f&e<<24>>24>-1){if((d|0)>63){b:do if(!(b&3)){g=d;h=b;j=0;n=10}else{c:do if(!(e<<24>>24)){o=b;p=d;q=0;while(1){r=q+8|0;p=p+-8|0;o=o+1|0;if(!(o&3)){s=r;t=p;u=o;break}v=i[o>>0]|0;if(v<<24>>24){w=v;x=r;break c}else q=r}if((t|0)>31){g=t;h=u;j=s;n=10;break b}else{y=t;z=u;A=s;break b}}else{w=e;x=0}while(0);B=(l[143242+(w&255)>>0]|0)+x|0;break a}while(0);d:do if((n|0)==10)while(1){n=0;if(k[h>>2]|0){y=g;z=h;A=j;break d}q=j+32|0;o=g+-32|0;p=h+4|0;if((o|0)>31){g=o;h=p;j=q;n=10}else{y=o;z=p;A=q;break}}while(0);C=z;D=y;E=A}else{C=b;D=d;E=0}e:do if((D|0)>7){q=C;p=D;o=E;while(1){r=i[q>>0]|0;if(r<<24>>24){F=r;G=o;break}r=o+8|0;v=p+-8|0;H=q+1|0;if((v|0)>7){q=H;p=v;o=r}else{I=H;J=v;K=r;break e}}B=(l[143242+(F&255)>>0]|0)+G|0;break a}else{I=C;J=D;K=E}while(0);if((J|0)>0){o=l[143242+(l[I>>0]|0)>>0]|0;B=((o|0)>(J|0)?J:o)+K|0}else B=K}else B=0;while(0);K=i[c>>0]|0;f:do if(f&K<<24>>24>-1){if((d|0)>63){g:do if(!(c&3)){L=d;M=c;N=0;n=28}else{h:do if(!(K<<24>>24)){J=c;I=d;E=0;while(1){D=E+8|0;I=I+-8|0;J=J+1|0;if(!(J&3)){O=D;P=I;Q=J;break}C=i[J>>0]|0;if(C<<24>>24){R=C;S=D;break h}else E=D}if((P|0)>31){L=P;M=Q;N=O;n=28;break g}else{T=P;U=Q;V=O;break g}}else{R=K;S=0}while(0);W=(l[143242+(R&255)>>0]|0)+S|0;break f}while(0);i:do if((n|0)==28)while(1){n=0;if(k[M>>2]|0){T=L;U=M;V=N;break i}E=N+32|0;J=L+-32|0;I=M+4|0;if((J|0)>31){L=J;M=I;N=E;n=28}else{T=J;U=I;V=E;break}}while(0);X=U;Y=T;Z=V}else{X=c;Y=d;Z=0}j:do if((Y|0)>7){E=X;I=Y;J=Z;while(1){D=i[E>>0]|0;if(D<<24>>24){_=D;$=J;break}D=J+8|0;C=I+-8|0;G=E+1|0;if((C|0)>7){E=G;I=C;J=D}else{aa=G;ba=C;ca=D;break j}}W=(l[143242+(_&255)>>0]|0)+$|0;break f}else{aa=X;ba=Y;ca=Z}while(0);if((ba|0)>0){J=l[143242+(l[aa>>0]|0)>>0]|0;W=((J|0)>(ba|0)?ba:J)+ca|0}else W=ca}else W=0;while(0);ca=a+576|0;ba=a+608|0;aa=a+592|0;Z=a+604|0;Y=0;X=B;B=W;while(1){if(B>>>0<d>>>0){if(!((l[c+(B>>>3)>>0]|0)&1<<(B&7^7)))da=Bf(c,B,d)|0;else da=Af(c,B,d)|0;ea=da+B|0}else ea=d;do if(ea>>>0<X>>>0){W=k[ca>>2]|0;$=W+52|0;_=k[$>>2]|0;V=W+48|0;W=k[V>>2]|0;if(_>>>0<4){T=4;U=k[ba>>2]|0;n=_;N=W;while(1){M=T-n|0;if((U|0)>=(k[aa>>2]|0))je(a)|0;L=k[Z>>2]|0;k[Z>>2]=L+1;i[L>>0]=1>>>M|N;U=(k[ba>>2]|0)+1|0;k[ba>>2]=U;if(M>>>0<=8){fa=M;ga=8;ha=0;break}else{T=M;n=8;N=0}}}else{fa=4;ga=_;ha=W}N=ga-fa|0;n=(k[8064+(fa<<2)>>2]&1)<<N|ha;if((ga|0)==(fa|0)){if((k[ba>>2]|0)>=(k[aa>>2]|0))je(a)|0;T=k[Z>>2]|0;k[Z>>2]=T+1;i[T>>0]=n;k[ba>>2]=(k[ba>>2]|0)+1;ia=8;ja=0}else{ia=N;ja=n}k[V>>2]=ja;k[$>>2]=ia;ka=ea}else{n=B-X+3|0;if(n>>>0<7){yf(a,m[125028+(n*6|0)+2>>1]|0,m[125028+(n*6|0)>>1]|0);ka=X;break}if(X>>>0<d>>>0){if(!((l[b+(X>>>3)>>0]|0)&1<<(X&7^7)))la=Bf(b,X,d)|0;else la=Af(b,X,d)|0;ma=la+X|0}else ma=d;n=k[ca>>2]|0;N=n+52|0;T=k[N>>2]|0;U=n+48|0;n=k[U>>2]|0;if(T>>>0<3){M=3;L=k[ba>>2]|0;S=T;R=n;while(1){K=M-S|0;if((L|0)>=(k[aa>>2]|0))je(a)|0;O=k[Z>>2]|0;k[Z>>2]=O+1;i[O>>0]=1>>>K|R;L=(k[ba>>2]|0)+1|0;k[ba>>2]=L;if(K>>>0<=8){na=K;oa=8;pa=0;break}else{M=K;S=8;R=0}}}else{na=3;oa=T;pa=n}R=oa-na|0;S=(k[8064+(na<<2)>>2]&1)<<R|pa;if((oa|0)==(na|0)){if((k[ba>>2]|0)>=(k[aa>>2]|0))je(a)|0;M=k[Z>>2]|0;k[Z>>2]=M+1;i[M>>0]=S;k[ba>>2]=(k[ba>>2]|0)+1;qa=8;ra=0}else{qa=R;ra=S}k[U>>2]=ra;k[N>>2]=qa;if((Y|0)!=(0-X|0)?((l[b+(Y>>>3)>>0]|0)&1<<(Y&7^7)|0)!=0:0){Cf(a,X-Y|0,124374);Cf(a,ma-X|0,123720);ka=ma;break}Cf(a,X-Y|0,123720);Cf(a,ma-X|0,124374);ka=ma}while(0);if(ka>>>0>=d>>>0)break;if(!((l[b+(ka>>>3)>>0]|0)&1<<(ka&7^7))){S=Bf(b,ka,d)|0;R=(Af(c,ka,d)|0)+ka|0;sa=S;ta=Bf(c,R,d)|0;ua=R}else{R=Af(b,ka,d)|0;S=(Bf(c,ka,d)|0)+ka|0;sa=R;ta=Af(c,S,d)|0;ua=S}Y=ka;X=sa+ka|0;B=ta+ua|0}return}function Af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=c-b|0;c=b>>3;e=a+c|0;if((d|0)<=0){f=0;return f|0}g=b&7;do if(g){b=l[143533+((l[e>>0]|0)<<g&255)>>0]|0;h=8-g|0;j=b>>>0>h>>>0?h:b;b=(j|0)>(d|0)?d:j;if((b+g|0)<8){f=b;return f|0}else{m=a+(c+1)|0;n=d-b|0;o=b;break}}else{m=e;n=d;o=0}while(0);if((n|0)>63){do if(!(m&3)){p=n;q=m;r=o;s=12}else{d=m;e=n;c=o;while(1){a=i[d>>0]|0;if(a<<24>>24!=-1){t=a;u=c;break}a=c+8|0;g=e+-8|0;b=d+1|0;if(!(b&3)){v=a;w=g;x=b;s=11;break}else{d=b;e=g;c=a}}if((s|0)==11)if((w|0)>31){p=w;q=x;r=v;s=12;break}else{y=w;z=x;A=v;break}f=(l[143533+(t&255)>>0]|0)+u|0;return f|0}while(0);a:do if((s|0)==12)while(1){s=0;if((k[q>>2]|0)!=-1){y=p;z=q;A=r;break a}u=r+32|0;t=p+-32|0;v=q+4|0;if((t|0)>31){p=t;q=v;r=u;s=12}else{y=t;z=v;A=u;break}}while(0);B=z;C=y;D=A}else{B=m;C=n;D=o}b:do if((C|0)>7){o=B;n=C;m=D;while(1){A=i[o>>0]|0;if(A<<24>>24!=-1){E=A;F=m;break}A=m+8|0;y=n+-8|0;z=o+1|0;if((y|0)>7){o=z;n=y;m=A}else{G=z;H=y;I=A;break b}}f=(l[143533+(E&255)>>0]|0)+F|0;return f|0}else{G=B;H=C;I=D}while(0);if((H|0)<=0){f=I;return f|0}D=l[143533+(l[G>>0]|0)>>0]|0;f=((D|0)>(H|0)?H:D)+I|0;return f|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;d=c-b|0;c=b>>3;e=a+c|0;if((d|0)<=0){f=0;return f|0}g=b&7;do if(g){b=l[143242+((l[e>>0]|0)<<g&255)>>0]|0;h=8-g|0;j=b>>>0>h>>>0?h:b;b=(j|0)>(d|0)?d:j;if((b+g|0)<8){f=b;return f|0}else{m=a+(c+1)|0;n=d-b|0;o=b;break}}else{m=e;n=d;o=0}while(0);if((n|0)>63){do if(!(m&3)){p=n;q=m;r=o;s=12}else{d=m;e=n;c=o;while(1){a=i[d>>0]|0;if(a<<24>>24){t=a;u=c;break}a=c+8|0;g=e+-8|0;b=d+1|0;if(!(b&3)){v=a;w=g;x=b;s=11;break}else{d=b;e=g;c=a}}if((s|0)==11)if((w|0)>31){p=w;q=x;r=v;s=12;break}else{y=w;z=x;A=v;break}f=(l[143242+(t&255)>>0]|0)+u|0;return f|0}while(0);a:do if((s|0)==12)while(1){s=0;if(k[q>>2]|0){y=p;z=q;A=r;break a}u=r+32|0;t=p+-32|0;v=q+4|0;if((t|0)>31){p=t;q=v;r=u;s=12}else{y=t;z=v;A=u;break}}while(0);B=z;C=y;D=A}else{B=m;C=n;D=o}b:do if((C|0)>7){o=B;n=C;m=D;while(1){A=i[o>>0]|0;if(A<<24>>24){E=A;F=m;break}A=m+8|0;y=n+-8|0;z=o+1|0;if((y|0)>7){o=z;n=y;m=A}else{G=z;H=y;I=A;break b}}f=(l[143242+(E&255)>>0]|0)+F|0;return f|0}else{G=B;H=C;I=D}while(0);if((H|0)<=0){f=I;return f|0}D=l[143242+(l[G>>0]|0)>>0]|0;f=((D|0)>(H|0)?H:D)+I|0;return f|0}function Cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0;d=k[a+576>>2]|0;e=d+52|0;f=k[e>>2]|0;g=d+48|0;d=k[g>>2]|0;a:do if((b|0)>2623){h=c+620|0;l=c+618|0;n=a+608|0;o=a+592|0;p=a+604|0;q=c+622|0;r=b;s=f;t=d;while(1){u=m[h>>1]|0;v=j[l>>1]|0;w=v&65535;if(w>>>0<=s>>>0)if((v&65535)<9){x=s;y=t;z=w}else break;else{v=k[n>>2]|0;A=s;B=t;C=w;while(1){w=C-A|0;if((v|0)>=(k[o>>2]|0))je(a)|0;D=k[p>>2]|0;k[p>>2]=D+1;i[D>>0]=u>>>w|B;v=(k[n>>2]|0)+1|0;k[n>>2]=v;if(w>>>0<=8){x=8;y=0;z=w;break}else{A=8;B=0;C=w}}}C=x-z|0;B=(k[8064+(z<<2)>>2]&u)<<C|y;if((x|0)==(z|0)){if((k[n>>2]|0)>=(k[o>>2]|0))je(a)|0;A=k[p>>2]|0;k[p>>2]=A+1;i[A>>0]=B;k[n>>2]=(k[n>>2]|0)+1;E=8;F=0}else{E=C;F=B}B=r-(j[q>>1]|0)|0;if((B|0)>2623){r=B;s=E;t=F}else{G=B;H=E;I=F;break a}}Ja(143169,142823,651,143498)}else{G=b;H=f;I=d}while(0);if((G|0)>63){d=G>>6;f=d+63|0;b=c+(f*6|0)+4|0;if((j[b>>1]|0)!=(d<<6|0))Ja(143506,142823,656,143498);d=m[c+(f*6|0)+2>>1]|0;F=j[c+(f*6|0)>>1]|0;f=F&65535;if(f>>>0<=H>>>0)if((F&65535)<9){J=H;K=I;L=f}else Ja(143169,142823,661,143498);else{F=a+608|0;E=a+592|0;z=a+604|0;x=k[F>>2]|0;y=H;t=I;s=f;while(1){f=s-y|0;if((x|0)>=(k[E>>2]|0))je(a)|0;r=k[z>>2]|0;k[z>>2]=r+1;i[r>>0]=d>>>f|t;x=(k[F>>2]|0)+1|0;k[F>>2]=x;if(f>>>0<=8){J=8;K=0;L=f;break}else{y=8;t=0;s=f}}}s=J-L|0;t=(k[8064+(L<<2)>>2]&d)<<s|K;if((J|0)==(L|0)){L=a+608|0;if((k[L>>2]|0)>=(k[a+592>>2]|0))je(a)|0;J=a+604|0;K=k[J>>2]|0;k[J>>2]=K+1;i[K>>0]=t;k[L>>2]=(k[L>>2]|0)+1;M=8;N=0}else{M=s;N=t}O=G-(j[b>>1]|0)|0;P=M;Q=N}else{O=G;P=H;Q=I}I=m[c+(O*6|0)+2>>1]|0;H=j[c+(O*6|0)>>1]|0;O=H&65535;if(O>>>0<=P>>>0)if((H&65535)<9){R=P;S=Q;T=O}else Ja(143169,142823,668,143498);else{H=a+608|0;c=a+592|0;G=a+604|0;N=k[H>>2]|0;M=P;P=Q;Q=O;while(1){O=Q-M|0;if((N|0)>=(k[c>>2]|0))je(a)|0;b=k[G>>2]|0;k[G>>2]=b+1;i[b>>0]=I>>>O|P;N=(k[H>>2]|0)+1|0;k[H>>2]=N;if(O>>>0<=8){R=8;S=0;T=O;break}else{M=8;P=0;Q=O}}}Q=R-T|0;P=(k[8064+(T<<2)>>2]&I)<<Q|S;if((R|0)!=(T|0)){U=Q;V=P;k[g>>2]=V;k[e>>2]=U;return}Q=a+608|0;if((k[Q>>2]|0)>=(k[a+592>>2]|0))je(a)|0;T=a+604|0;a=k[T>>2]|0;k[T>>2]=a+1;i[a>>0]=P;k[Q>>2]=(k[Q>>2]|0)+1;U=8;V=0;k[g>>2]=V;k[e>>2]=U;return}function Df(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;d=k[a+576>>2]|0;if(!d)Ja(154168,142823,1199,144538);a:do if((b|0)>=327)if((b|0)<65536)switch(b|0){case 327:{e=j[d+16>>1]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;j[g>>1]=e;h=1;return h|0}case 328:{e=k[d+20>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}default:break a}else switch(b|0){case 65536:{e=k[d+4>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}case 65540:{e=k[d+60>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}default:break a}else switch(b|0){case 293:case 292:{e=k[d+28>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);g=k[f>>2]|0;k[c>>2]=f+4;k[g>>2]=e;h=1;return h|0}case 326:{e=k[d+24>>2]|0;g=(k[c>>2]|0)+(4-1)&~(4-1);f=k[g>>2]|0;k[c>>2]=g+4;k[f>>2]=e;h=1;return h|0}default:break a}while(0);h=nb[k[d+32>>2]&63](a,b,c)|0;return h|0}function Ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0;d=a+576|0;e=k[d>>2]|0;if(!e)Ja(154168,142823,1152,144504);f=k[e+36>>2]|0;if(!f)Ja(144518,142823,1153,144504);a:do if((b|0)<327)switch(b|0){case 292:{if((j[a+88>>1]|0)!=3)break a;g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[e+28>>2]=h;break a;break}case 293:{if((j[a+88>>1]|0)!=4)break a;h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;k[e+28>>2]=g;break a;break}case 326:{g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[e+24>>2]=h;break a;break}default:{i=15;break a}}else{if((b|0)<65536)switch(b|0){case 327:{h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;j[e+16>>1]=g;break a;break}case 328:{g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[e+20>>2]=h;break a;break}default:{i=15;break a}}switch(b|0){case 65536:{h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;k[e+4>>2]=g;l=1;return l|0}case 65540:{g=(k[c>>2]|0)+(4-1)&~(4-1);h=k[g>>2]|0;k[c>>2]=g+4;k[(k[d>>2]|0)+60>>2]=h;l=1;return l|0}default:{i=15;break a}}}while(0);if((i|0)==15){l=nb[f&63](a,b,c)|0;return l|0}c=cc(a,b)|0;if(!c){l=0;return l|0}b=j[c+24>>1]|0;c=a+40+(((b&65535)>>>5&65535)<<2)|0;k[c>>2]=1<<(b&31)|k[c>>2];c=a+12|0;k[c>>2]=k[c>>2]|8;l=1;return l|0}function Ff(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;d=r;r=r+64|0;e=d+56|0;f=d+48|0;g=d+40|0;h=d+32|0;i=d+24|0;l=d+16|0;n=d+8|0;o=d;p=k[a+576>>2]|0;if(!p)Ja(154168,142823,1232,144253);q=a+48|0;s=k[q>>2]|0;if(!(s&512))t=s;else{if((j[a+88>>1]|0)==4){zq(144266,18,1,b)|0;s=p+28|0;if(!(k[s>>2]&2))u=s;else{k[o>>2]=144305;wq(b,144285,o)|0;u=s}}else{zq(144307,18,1,b)|0;s=p+28|0;o=k[s>>2]|0;if(!(o&1)){v=o;w=144305}else{k[n>>2]=144305;wq(b,144326,n)|0;v=k[s>>2]|0;w=144341}if(!(v&4)){x=v;y=w}else{k[l>>2]=w;wq(b,144343,l)|0;x=k[s>>2]|0;y=144341}if(!(x&2))u=s;else{k[i>>2]=y;wq(b,144285,i)|0;u=s}}s=k[u>>2]|0;k[h>>2]=s;k[h+4>>2]=s;wq(b,144357,h)|0;t=k[q>>2]|0}if(!(t&8))z=t;else{zq(144373,11,1,b)|0;t=p+16|0;switch(m[t>>1]|0){case 0:{zq(144385,6,1,b)|0;break}case 1:{zq(144392,21,1,b)|0;break}case 2:{zq(144414,19,1,b)|0;break}default:{}}h=m[t>>1]|0;k[g>>2]=h;k[g+4>>2]=h;wq(b,144434,g)|0;z=k[q>>2]|0}if(!(z&4))A=z;else{k[f>>2]=k[p+24>>2];wq(b,144448,f)|0;A=k[q>>2]|0}if(A&16){k[e>>2]=k[p+20>>2];wq(b,144470,e)|0}e=k[p+40>>2]|0;if(!e){r=d;return}vb[e&127](a,b,c);r=d;return}function Gf(a){a=a|0;return 1}function Hf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;b=r;r=r+32|0;c=b+16|0;d=b+8|0;e=a+576|0;f=k[e>>2]|0;if((j[a+84>>1]|0)!=1){vc(k[a+628>>2]|0,144065,144080,b);g=0;r=b;return g|0}if(!(k[a+12>>2]&1024)){h=Pd(a)|0;i=a+56|0}else{h=de(a)|0;i=a+68|0}l=k[i>>2]|0;k[f+8>>2]=h;k[f+12>>2]=l;i=f+28|0;if(!(k[i>>2]&1)){m=(j[a+88>>1]|0)==4;n=f+64|0;k[n>>2]=0;o=l>>>0<4294967264?l+31&-32:0;if(m){p=o;q=n;s=n;t=9}else{u=n;v=n;w=0;x=o;t=10}}else{o=f+64|0;k[o>>2]=0;p=l>>>0<4294967264?l+31&-32:0;q=o;s=o;t=9}if((t|0)==9?(p&2147483616|0)==(p|0):0){u=s;v=q;w=1;x=p<<1;t=10}if(((t|0)==10?(x|0)!=0:0)?(t=x<<1,!((t|0)==0|(x&2147483647|0)!=(x|0))):0){p=Ee(a,t,4,144177)|0;k[u>>2]=p;if(!p){g=0;r=b;return g|0}qr(p|0,0,x<<3|0)|0;k[f+72>>2]=k[u>>2];if(w)k[f+68>>2]=(k[v>>2]|0)+(x<<2);else k[f+68>>2]=0;if((j[a+88>>1]|0)==3?(k[i>>2]&1|0)!=0:0){k[a+532>>2]=19;k[a+540>>2]=19;k[a+548>>2]=19}i=k[e>>2]|0;if(!w){k[i+80>>2]=0;g=1;r=b;return g|0}w=me(h)|0;k[i+80>>2]=w;if(w){g=1;r=b;return g|0}vc(k[a+628>>2]|0,144065,144202,c);g=0;r=b;return g|0}c=k[a+628>>2]|0;w=k[a>>2]|0;k[d>>2]=l;vc(c,w,144134,d);g=0;r=b;return g|0}function If(a,b){a=a|0;b=b|0;var c=0,d=0;b=k[a+576>>2]|0;if(!b)Ja(154187,142823,152,144051);k[b+52>>2]=0;k[b+48>>2]=0;k[b+56>>2]=0;c=Zd((j[a+94>>1]|0)!=2&1)|0;k[b+44>>2]=c;c=k[b+68>>2]|0;if(!c){d=b+92|0;k[d>>2]=0;return 1}k[c>>2]=k[b+12>>2];k[c+4>>2]=0;d=b+92|0;k[d>>2]=0;return 1}function Jf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0;d=r;r=r+128|0;e=d+104|0;f=d+80|0;g=d+56|0;h=d+40|0;i=d+24|0;j=d+8|0;m=k[a+576>>2]|0;n=k[m+12>>2]|0;o=k[m+44>>2]|0;p=m+8|0;if((c|0)%(k[p>>2]|0)|0){vc(k[a+628>>2]|0,144038,153793,d);q=-1;r=d;return q|0}s=m+48|0;t=k[s>>2]|0;u=m+52|0;v=k[u>>2]|0;w=m+56|0;x=k[w>>2]|0;y=a+604|0;z=k[y>>2]|0;A=a+608|0;B=k[A>>2]|0;C=z+B|0;D=k[m+72>>2]|0;a:do if((c|0)>0){E=m+92|0;F=a+628|0;G=a+12|0;H=a+492|0;I=a+452|0;J=m+60|0;K=D;L=b;M=c;N=t;O=v;P=x;Q=z;b:while(1){c:do if(!P){R=N;S=O;T=Q;while(1){do if((S|0)<11){if(T>>>0>=C>>>0)if(!S){U=L;V=R;W=0;X=T;Y=67;break b}else{Z=R;_=11;$=T;break}aa=T+1|0;ba=(l[o+(l[T>>0]|0)>>0]|0)<<S|R;ca=S+8|0;if((ca|0)<11)if(aa>>>0<C>>>0){Z=(l[o+(l[aa>>0]|0)>>0]|0)<<ca|ba;_=S+16|0;$=T+2|0}else{Z=ba;_=11;$=aa}else{Z=ba;_=ca;$=aa}}else{Z=R;_=S;$=T}while(0);if(!(Z&2047)){da=Z;ea=_;fa=$;break c}R=Z>>>1;S=_+-1|0;T=$}}else{da=N;ea=O;fa=Q}while(0);while(1){do if((ea|0)<8)if(fa>>>0>=C>>>0)if(!ea){U=L;V=da;W=P;X=fa;Y=67;break b}else{ga=da;ha=8;ia=fa;break}else{ga=(l[o+(l[fa>>0]|0)>>0]|0)<<ea|da;ha=ea+8|0;ia=fa+1|0;break}else{ga=da;ha=ea;ia=fa}while(0);if(ga&255){ja=ga;ka=ha;la=ia;break}da=ga>>>8;ea=ha+-8|0;fa=ia}T=ja;S=ka;while(1){R=S+-1|0;aa=T>>>1;if(!(T&1)){T=aa;S=R}else{ma=aa;na=R;oa=0;pa=la;qa=D;break}}d:while(1){S=ma;T=na;R=0;aa=oa;ca=pa;e:while(1){do if((T|0)<12){if(ca>>>0>=C>>>0)if(!T){ra=L;sa=S;ta=R;ua=aa;va=ca;wa=qa;Y=44;break b}else{xa=S;ya=12;za=ca;break}ba=ca+1|0;Aa=(l[o+(l[ca>>0]|0)>>0]|0)<<T|S;Ba=T+8|0;if((Ba|0)<12)if(ba>>>0<C>>>0){xa=(l[o+(l[ba>>0]|0)>>0]|0)<<Ba|Aa;ya=T+16|0;za=ca+2|0}else{xa=Aa;ya=12;za=ba}else{xa=Aa;ya=Ba;za=ba}}else{xa=S;ya=T;za=ca}while(0);ba=xa&4095;Ba=l[9304+(ba<<3)+1>>0]|0;Aa=ya-Ba|0;Ca=xa>>>Ba;switch(l[9304+(ba<<3)>>0]|0|0){case 12:{Da=Ca;Ea=Aa;Fa=1;Ga=R;Ha=aa;Ia=za;Ja=qa;Y=55;break d;break}case 7:{Ka=ba;La=Aa;Ma=Ca;Na=R;Oa=aa;Pa=za;break e;break}case 11:case 9:break;default:{Qa=Aa;Ra=Ca;Sa=R;Ta=aa;Ua=za;Va=qa;Y=32;break d}}Ba=k[9304+(ba<<3)+4>>2]|0;S=Ca;T=Aa;R=Ba+R|0;aa=Ba+aa|0;ca=za}ca=k[9304+(Ka<<3)+4>>2]|0;aa=ca+Na|0;R=qa+4|0;k[qa>>2]=aa;T=ca+Oa|0;if((T|0)<(n|0)){Wa=Ma;Xa=La;Ya=0;Za=T;_a=Pa}else{$a=Ma;ab=La;bb=0;cb=T;db=Pa;eb=R;break}f:while(1){do if((Xa|0)<13){if(_a>>>0>=C>>>0)if(!Xa){ra=L;sa=Wa;ta=Ya;ua=Za;va=_a;wa=R;Y=44;break b}else{fb=Wa;gb=13;hb=_a;break}T=_a+1|0;ca=(l[o+(l[_a>>0]|0)>>0]|0)<<Xa|Wa;S=Xa+8|0;if((S|0)<13)if(T>>>0<C>>>0){fb=(l[o+(l[T>>0]|0)>>0]|0)<<S|ca;gb=Xa+16|0;hb=_a+2|0}else{fb=ca;gb=13;hb=T}else{fb=ca;gb=S;hb=T}}else{fb=Wa;gb=Xa;hb=_a}while(0);T=fb&8191;S=l[42072+(T<<3)+1>>0]|0;ca=gb-S|0;Ba=fb>>>S;switch(l[42072+(T<<3)>>0]|0|0){case 12:{Da=Ba;Ea=ca;Fa=1;Ga=Ya;Ha=Za;Ia=hb;Ja=R;Y=55;break d;break}case 8:{ib=T;jb=ca;kb=Ba;lb=Ya;mb=Za;nb=hb;break f;break}case 11:case 10:break;default:{ob=ca;pb=Ba;qb=R;rb=Ya;sb=Za;tb=hb;Y=42;break d}}S=k[42072+(T<<3)+4>>2]|0;Wa=Ba;Xa=ca;Ya=S+Ya|0;Za=S+Za|0;_a=hb}S=k[42072+(ib<<3)+4>>2]|0;ca=S+lb|0;Ba=qa+8|0;k[R>>2]=ca;T=S+mb|0;if((T|0)>=(n|0)){$a=kb;ab=jb;bb=0;cb=T;db=nb;eb=Ba;break}ma=kb;na=jb;oa=T;pa=nb;qa=(ca|aa|0)==0?qa:Ba}if((Y|0)==32){Y=0;Ba=k[F>>2]|0;ca=(k[G>>2]&1024|0)!=0;T=k[(ca?H:I)>>2]|0;k[j>>2]=k[E>>2];k[j+4>>2]=ca?142996:143001;k[j+8>>2]=T;k[j+12>>2]=Ta;vc(Ba,144038,143007,j);Da=Ra;Ea=Qa;Fa=0;Ga=Sa;Ha=Ta;Ia=Ua;Ja=Va;Y=55}else if((Y|0)==42){Y=0;Ba=k[F>>2]|0;T=(k[G>>2]&1024|0)!=0;ca=k[(T?H:I)>>2]|0;k[i>>2]=k[E>>2];k[i+4>>2]=T?142996:143001;k[i+8>>2]=ca;k[i+12>>2]=sb;vc(Ba,144038,143007,i);Da=pb;Ea=ob;Fa=0;Ga=rb;Ha=sb;Ia=tb;Ja=qb;Y=55}if((Y|0)==55){Y=0;if(!Ga){$a=Da;ab=Ea;bb=Fa;cb=Ha;db=Ia;eb=Ja}else{k[Ja>>2]=Ga;$a=Da;ab=Ea;bb=Fa;cb=Ha;db=Ia;eb=Ja+4|0}}do if((cb|0)==(n|0))ub=eb;else{Ba=k[E>>2]|0;ca=k[F>>2]|0;T=(k[G>>2]&1024|0)!=0;S=k[(T?H:I)>>2]|0;k[f>>2]=cb>>>0<n>>>0?143089:143103;k[f+4>>2]=Ba;k[f+8>>2]=T?142996:143001;k[f+12>>2]=S;k[f+16>>2]=cb;k[f+20>>2]=n;ie(ca,144038,143124,f);ca=(cb|0)>(n|0);if(ca&eb>>>0>D>>>0){S=cb;T=eb;while(1){Ba=T+-4|0;Aa=S-(k[Ba>>2]|0)|0;Ca=(Aa|0)>(n|0);if(Ca&Ba>>>0>D>>>0){S=Aa;T=Ba}else{vb=Ca;wb=Aa;xb=Ba;break}}}else{vb=ca;wb=cb;xb=eb}if((wb|0)>=(n|0)){if(!vb){ub=xb;break}k[xb>>2]=n;k[xb+4>>2]=0;ub=xb+8|0;break}if(!(xb-K&4))yb=xb;else{k[xb>>2]=0;yb=xb+4|0}k[yb>>2]=n-((wb|0)<0?0:wb);ub=yb+4|0}while(0);Ab[k[J>>2]&31](L,D,ub,n);T=k[p>>2]|0;M=M-T|0;k[E>>2]=(k[E>>2]|0)+1;if((M|0)<=0){zb=$a;Bb=ab;Cb=bb;Db=db;Y=71;break}else{L=L+T|0;N=$a;O=ab;P=bb;Q=db}}do if((Y|0)==44){Q=k[F>>2]|0;P=(k[G>>2]&1024|0)!=0;O=k[(P?H:I)>>2]|0;k[h>>2]=k[E>>2];k[h+4>>2]=P?142996:143001;k[h+8>>2]=O;k[h+12>>2]=ua;ie(Q,144038,143048,h);if(!ta)Eb=wa;else{k[wa>>2]=ta;Eb=wa+4|0}if((ua|0)==(n|0)){Fb=ra;Gb=sa;Hb=0;Ib=va;Jb=Eb}else{Q=k[E>>2]|0;O=k[F>>2]|0;P=(k[G>>2]&1024|0)!=0;N=k[(P?H:I)>>2]|0;k[g>>2]=ua>>>0<n>>>0?143089:143103;k[g+4>>2]=Q;k[g+8>>2]=P?142996:143001;k[g+12>>2]=N;k[g+16>>2]=ua;k[g+20>>2]=n;ie(O,144038,143124,g);O=(ua|0)>(n|0);if(O&Eb>>>0>D>>>0){N=ua;P=Eb;while(1){Q=P+-4|0;L=N-(k[Q>>2]|0)|0;M=(L|0)>(n|0);if(M&Q>>>0>D>>>0){N=L;P=Q}else{Kb=M;Lb=L;Mb=Q;break}}}else{Kb=O;Lb=ua;Mb=Eb}if((Lb|0)>=(n|0)){if(!Kb){Fb=ra;Gb=sa;Hb=0;Ib=va;Jb=Mb;break}k[Mb>>2]=n;k[Mb+4>>2]=0;Fb=ra;Gb=sa;Hb=0;Ib=va;Jb=Mb+8|0;break}if(!(Mb-K&4))Nb=Mb;else{k[Mb>>2]=0;Nb=Mb+4|0}k[Nb>>2]=n-((Lb|0)<0?0:Lb);Fb=ra;Gb=sa;Hb=0;Ib=va;Jb=Nb+4|0}}else if((Y|0)==67)if(n){P=k[E>>2]|0;N=k[F>>2]|0;Q=(k[G>>2]&1024|0)!=0;L=k[(Q?H:I)>>2]|0;k[e>>2]=143089;k[e+4>>2]=P;k[e+8>>2]=Q?142996:143001;k[e+12>>2]=L;k[e+16>>2]=0;k[e+20>>2]=n;ie(N,144038,143124,e);N=D+4|0;k[D>>2]=n;if((n|0)>0){Fb=U;Gb=V;Hb=W;Ib=X;Jb=N}else{k[N>>2]=0;Fb=U;Gb=V;Hb=W;Ib=X;Jb=D+8|0}}else{Fb=U;Gb=V;Hb=W;Ib=X;Jb=D}else if((Y|0)==71){Ob=k[y>>2]|0;Pb=k[A>>2]|0;Qb=zb;Rb=Bb;Sb=Cb;Tb=Db;break a}while(0);Ab[k[J>>2]&31](Fb,D,Jb,n);k[u>>2]=0;k[s>>2]=Gb;k[w>>2]=Hb;k[A>>2]=(k[y>>2]|0)-Ib+(k[A>>2]|0);k[y>>2]=Ib;q=-1;r=d;return q|0}else{Ob=z;Pb=B;Qb=t;Rb=v;Sb=x;Tb=z}while(0);k[u>>2]=Rb;k[s>>2]=Qb;k[w>>2]=Sb;k[A>>2]=Ob-Tb+Pb;k[y>>2]=Tb;q=1;r=d;return q|0}function Kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0.0;b=k[a+576>>2]|0;if(!b)Ja(154187,142823,723,144024);k[b+52>>2]=8;k[b+48>>2]=0;k[b+76>>2]=0;c=k[b+80>>2]|0;if(c)pe(c,0,k[b+8>>2]|0);if(!(k[b+28>>2]&1)){d=0;e=0;f=b+88|0;k[f>>2]=e;g=b+84|0;k[g>>2]=d;h=b+92|0;k[h>>2]=0;return 1}i=+o[a+120>>2];c=((j[a+124>>1]|0)==3?i*2.5399999618530273:i)>150.0?4:2;d=c+-1|0;e=c;f=b+88|0;k[f>>2]=e;g=b+84|0;k[g>>2]=d;h=b+92|0;k[h>>2]=0;return 1}function Lf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+576>>2]|0;c=b+52|0;if((k[c>>2]|0)==8)return 1;d=a+608|0;if((k[d>>2]|0)>=(k[a+592>>2]|0))je(a)|0;e=b+48|0;b=k[e>>2]&255;f=a+604|0;a=k[f>>2]|0;k[f>>2]=a+1;i[a>>0]=b;k[d>>2]=(k[d>>2]|0)+1;k[e>>2]=0;k[c>>2]=8;return 1}function Mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;d=r;r=r+16|0;e=a+576|0;f=k[e>>2]|0;g=f+8|0;if((c|0)%(k[g>>2]|0)|0){vc(k[a+628>>2]|0,143992,143203,d);h=0;r=d;return h|0}if((c|0)<=0){h=1;r=d;return h|0}j=f+4|0;l=a+608|0;m=a+592|0;n=a+604|0;o=f+28|0;p=f+12|0;q=f+76|0;s=f+84|0;t=f+88|0;u=f+80|0;f=b;b=c;a:while(1){if(!(k[j>>2]&2)){c=k[e>>2]|0;v=c+52|0;w=k[v>>2]|0;x=c+48|0;y=k[x>>2]|0;z=c+28|0;do if(!((w|0)==4|(k[z>>2]&4|0)==0)){A=(w|0)<4?4:-4;B=A+w|0;if(w>>>0>=B>>>0){if(B>>>0>=9){C=14;break a}D=0-A|0;E=y;break}A=k[l>>2]|0;F=w;G=y&255;H=B;while(1){B=H-F|0;if((A|0)>=(k[m>>2]|0))je(a)|0;I=k[n>>2]|0;k[n>>2]=I+1;i[I>>0]=G;I=(k[l>>2]|0)+1|0;k[l>>2]=I;if(B>>>0>8){A=I;F=8;G=0;H=B}else{J=B;K=I;break}}H=8-J|0;if((J|0)==8){if((K|0)>=(k[m>>2]|0))je(a)|0;G=k[n>>2]|0;k[n>>2]=G+1;i[G>>0]=0;k[l>>2]=(k[l>>2]|0)+1;D=8;E=0}else{D=H;E=0}}else{D=w;E=y}while(0);if(!(k[z>>2]&1)){L=1;M=12}else{L=(k[c+76>>2]|0)==0|2;M=13}if(M>>>0<=D>>>0){C=26;break}y=k[l>>2]|0;w=D;H=E;G=M;while(1){F=G-w|0;if((y|0)>=(k[m>>2]|0))je(a)|0;A=k[n>>2]|0;k[n>>2]=A+1;i[A>>0]=L>>>F|H;A=(k[l>>2]|0)+1|0;k[l>>2]=A;if(F>>>0>8){y=A;w=8;H=0;G=F}else{N=F;O=A;break}}G=8-N|0;H=(k[8064+(N<<2)>>2]&L)<<G;if((N|0)==8){if((O|0)>=(k[m>>2]|0))je(a)|0;w=k[n>>2]|0;k[n>>2]=w+1;i[w>>0]=H;k[l>>2]=(k[l>>2]|0)+1;P=8;Q=0}else{P=G;Q=H}k[x>>2]=Q;k[v>>2]=P}do if(k[o>>2]&1){if(!(k[q>>2]|0)){Pf(a,f,k[p>>2]|0);k[q>>2]=1;R=k[s>>2]|0}else{zf(a,f,k[u>>2]|0,k[p>>2]|0);H=(k[s>>2]|0)+-1|0;k[s>>2]=H;R=H}if(!R){k[q>>2]=0;k[s>>2]=(k[t>>2]|0)+-1;break}else{qe(k[u>>2]|0,f,k[g>>2]|0);break}}else Pf(a,f,k[p>>2]|0);while(0);v=k[g>>2]|0;b=b-v|0;if((b|0)<=0){h=1;C=41;break}else f=f+v|0}if((C|0)==14)Ja(144003,142823,702,144013);else if((C|0)==26)Ja(143169,142823,708,144013);else if((C|0)==41){r=d;return h|0}return 0}function Nf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;b=k[a+576>>2]|0;if(k[b+4>>2]&1)return;if(!(k[b+28>>2]&1)){c=1;d=12}else{c=(k[b+76>>2]|0)==0|2;d=13}yf(a,c,d);yf(a,c,d);yf(a,c,d);yf(a,c,d);yf(a,c,d);yf(a,c,d);d=a+608|0;if((k[d>>2]|0)>=(k[a+592>>2]|0))je(a)|0;c=b+48|0;e=k[c>>2]&255;f=a+604|0;a=k[f>>2]|0;k[f>>2]=a+1;i[a>>0]=e;k[d>>2]=(k[d>>2]|0)+1;k[c>>2]=0;k[b+52>>2]=8;return}function Of(a){a=a|0;var b=0,c=0,d=0,e=0;b=a+576|0;c=k[b>>2]|0;if(!c)Ja(154168,142823,1110,143980);k[a+672>>2]=k[c+32>>2];k[a+668>>2]=k[c+36>>2];k[a+676>>2]=k[c+40>>2];d=k[c+64>>2]|0;if(d)ne(d);d=k[c+80>>2]|0;if(!d){e=k[b>>2]|0;ne(e);k[b>>2]=0;Ve(a);return}ne(d);e=k[b>>2]|0;ne(e);k[b>>2]=0;Ve(a);return}function Pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;d=k[a+576>>2]|0;e=0;do{f=Bf(b,e,c)|0;Cf(a,f,123720);g=f+e|0;if(g>>>0>=c>>>0)break;f=Af(b,g,c)|0;Cf(a,f,124374);e=f+g|0}while(e>>>0<c>>>0);c=d+4|0;e=k[c>>2]|0;if(!(e&12))return;b=d+52|0;if((k[b>>2]|0)==8)h=e;else{e=a+608|0;if((k[e>>2]|0)>=(k[a+592>>2]|0))je(a)|0;g=d+48|0;f=k[g>>2]&255;j=a+604|0;l=k[j>>2]|0;k[j>>2]=l+1;i[l>>0]=f;k[e>>2]=(k[e>>2]|0)+1;k[g>>2]=0;k[b>>2]=8;h=k[c>>2]|0}if(!(h&8))return;h=a+604|0;c=k[h>>2]|0;if(!(c&1))return;g=a+608|0;if((k[g>>2]|0)<(k[a+592>>2]|0))m=c;else{je(a)|0;m=k[h>>2]|0}a=d+48|0;d=k[a>>2]&255;k[h>>2]=m+1;i[m>>0]=d;k[g>>2]=(k[g>>2]|0)+1;k[a>>2]=0;k[b>>2]=8;return}
92
+function Bb(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function Cb(){return r|0}function Db(a){a=a|0;r=a}function Eb(a,b){a=a|0;b=b|0;r=a;s=b}function Fb(a,b){a=a|0;b=b|0;if(!w){w=a;x=b}}function Gb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0]}function Hb(a){a=a|0;i[t>>0]=i[a>>0];i[t+1>>0]=i[a+1>>0];i[t+2>>0]=i[a+2>>0];i[t+3>>0]=i[a+3>>0];i[t+4>>0]=i[a+4>>0];i[t+5>>0]=i[a+5>>0];i[t+6>>0]=i[a+6>>0];i[t+7>>0]=i[a+7>>0]}function Ib(a){a=a|0;L=a}function Jb(){return L|0}function Kb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c;e=c+4|0;k[e>>2]=0;k[d>>2]=e;Pb(a,b,d)|0;r=c;return k[e>>2]|0}function Lb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;if(k[a+8>>2]|0)wc(a)|0;qb[k[a+564>>2]&127](a);Rb(a);b=k[a+32>>2]|0;if(b)ne(b);b=a+680|0;c=k[b>>2]|0;if(c){d=c;do{k[b>>2]=k[d>>2];ne(k[d+8>>2]|0);ne(d);d=k[b>>2]|0}while((d|0)!=0)}d=k[a+588>>2]|0;b=a+12|0;if((d|0)!=0?(k[b>>2]&512|0)!=0:0)ne(d);if(k[b>>2]&2048){b=k[a+616>>2]|0;Ab[k[a+624>>2]&31](k[a+628>>2]|0,k[a+612>>2]|0,b,((b|0)<0)<<31>>31)}b=a+656|0;d=k[b>>2]|0;if((d|0)!=0?(c=a+660|0,e=k[c>>2]|0,(e|0)!=0):0){f=d;d=e;e=0;while(1){g=k[f+(e<<2)>>2]|0;if((j[g+24>>1]|0)==65?(h=k[g+28>>2]|0,(Rq(129700,h,4)|0)==0):0){ne(h);ne(g);i=k[c>>2]|0}else i=d;g=e+1|0;if(g>>>0>=i>>>0)break;f=k[b>>2]|0;d=i;e=g}ne(k[b>>2]|0)}b=a+688|0;e=k[b>>2]|0;if(!e){ne(a);return}i=a+684|0;d=e;e=0;while(1){f=k[i>>2]|0;if(!(k[f+(e<<4)+4>>2]|0))l=d;else{ne(k[f+(e<<4)+12>>2]|0);l=k[b>>2]|0}e=e+1|0;if(e>>>0>=l>>>0)break;else d=l}ne(k[i>>2]|0);ne(a);return}function Mb(a){a=a|0;var b=0,c=0;b=k[a+644>>2]|0;c=k[a+628>>2]|0;Lb(a);ub[b&63](c)|0;return}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=k[a>>2]|0;if(d){ne(d);k[a>>2]=0}if(!b)return;d=me(c)|0;k[a>>2]=d;if(!d)return;qe(d,b,c);return}function Ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;d=r;r=r+48|0;e=d+16|0;f=d;g=d+24|0;k[g>>2]=c;c=$b(a,b,0)|0;if(!c){h=k[a+628>>2]|0;k[f>>2]=k[a>>2];k[f+4>>2]=b>>>0>65535?128936:155687;k[f+8>>2]=b;vc(h,128944,128957,f);j=0;r=d;return j|0}if(((b|0)!=257?(k[a+12>>2]&64|0)!=0:0)?(i[c+26>>0]|0)==0:0){f=k[a+628>>2]|0;h=k[c+28>>2]|0;k[e>>2]=k[a>>2];k[e+4>>2]=h;vc(f,128944,128978,e);j=0;r=d;return j|0}j=nb[k[a+668>>2]&63](a,b,g)|0;r=d;return j|0}function Pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=r;r=r+16|0;e=d;k[e>>2]=c;c=$b(a,b,0)|0;if(!c){f=0;r=d;return f|0}if(b>>>0<=65535?(g=j[c+24>>1]|0,(1<<(g&31)&k[a+40+(((g&65535)>>>5&65535)<<2)>>2]|0)==0):0){f=0;r=d;return f|0}f=nb[k[a+672>>2]&63](a,b,e)|0;r=d;return f|0}function Qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=$b(a,b,0)|0;if(!d){e=0;return e|0}if(b>>>0<=65535?(f=j[d+24>>1]|0,(1<<(f&31)&k[a+40+(((f&65535)>>>5&65535)<<2)>>2]|0)==0):0){e=0;return e|0}e=nb[k[a+672>>2]&63](a,b,c)|0;return e|0}function Rb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;pe(a+40|0,0,4);b=a+108|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+112|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+140|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+144|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+148|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+160|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+188|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+220|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+212|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+200|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+204|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+208|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+172|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+176|0;c=k[b>>2]|0;if(c){ne(c);k[b>>2]=0}b=a+44|0;k[b>>2]=k[b>>2]&-385;b=a+224|0;c=k[b>>2]|0;d=a+228|0;if((c|0)>0){a=c;c=0;while(1){e=k[(k[d>>2]|0)+(c*12|0)+8>>2]|0;if(!e)f=a;else{ne(e);f=k[b>>2]|0}c=c+1|0;if((c|0)>=(f|0))break;else a=f}}k[b>>2]=0;b=k[d>>2]|0;if(!b)return;ne(b);k[d>>2]=0;return}function Sb(a){a=a|0;var b=0,c=0;Tb(a)|0;b=a+16|0;c=a+456|0;k[c>>2]=0;k[c+4>>2]=0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[a+444>>2]=-1;k[a+452>>2]=-1;return 0}function Tb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0;b=r;r=r+16|0;c=b;Zb(a,Yb()|0);pe(a+40|0,0,192);j[a+94>>1]=1;j[a+84>>1]=1;j[a+92>>1]=1;j[a+96>>1]=1;j[a+98>>1]=1;k[a+100>>2]=-1;k[a+68>>2]=0;k[a+72>>2]=0;k[a+76>>2]=1;k[a+180>>2]=1;j[a+124>>1]=2;j[a+86>>1]=1;k[a+64>>2]=1;j[a+192>>1]=2;j[a+194>>1]=2;j[a+196>>1]=1;k[a+652>>2]=3;k[a+664>>2]=0;k[a+668>>2]=5;k[a+672>>2]=6;k[a+676>>2]=0;d=a+688|0;e=k[d>>2]|0;if(e){f=a+684|0;g=e;e=0;while(1){h=k[f>>2]|0;if(!(k[h+(e<<4)+4>>2]|0))i=g;else{ne(k[h+(e<<4)+12>>2]|0);i=k[d>>2]|0}e=e+1|0;if(e>>>0>=i>>>0)break;else g=i}ne(k[f>>2]|0);k[d>>2]=0;k[f>>2]=0}f=k[20]|0;if(!f){k[c>>2]=1;Ob(a,259,c)|0;l=a+12|0;m=k[l>>2]|0;n=m&-1033;k[l>>2]=n;r=b;return 1}qb[f&127](a);k[c>>2]=1;Ob(a,259,c)|0;l=a+12|0;m=k[l>>2]|0;n=m&-1033;k[l>>2]=n;r=b;return 1}function Ub(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;c=r;r=r+16|0;d=c;if(!(k[a+12>>2]&524288)){e=k[a+428>>2]|0;f=0}else{g=a+432|0;e=k[g>>2]|0;f=k[g+4>>2]|0}g=d;k[g>>2]=e;k[g+4>>2]=f;a:do if(b<<16>>16!=0&((e|0)!=0|(f|0)!=0)){g=b;while(1){if(!(Xb(a,d,0)|0)){h=0;break}i=g+-1<<16>>16;l=d;m=k[l>>2]|0;n=k[l+4>>2]|0;if(i<<16>>16!=0&((m|0)!=0|(n|0)!=0))g=i;else{o=m;p=n;q=i;break a}}r=c;return h|0}else{o=e;p=f;q=b}while(0);f=a+24|0;k[f>>2]=o;k[f+4>>2]=p;j[a+448>>1]=(b&65535)+65535-(q&65535);j[a+38>>1]=0;h=fc(a)|0;r=c;return h|0}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0;d=r;r=r+208|0;e=d+160|0;f=d+144|0;g=d+128|0;h=d+104|0;n=d+88|0;q=d+80|0;s=d+64|0;t=d+48|0;u=d+40|0;v=d+32|0;w=d+24|0;x=d+204|0;y=d+200|0;z=d+207|0;A=d+206|0;B=d+198|0;C=d+196|0;D=d+192|0;E=d+188|0;F=d+16|0;G=d+8|0;H=d+184|0;I=d;J=a+40|0;K=$b(a,b,0)|0;if(!K){L=0;r=d;return L|0}M=(j[K+24>>1]|0)==65;N=M?0:b;a:do if((N|0)<297){do switch(N|0){case 254:{O=(k[c>>2]|0)+(4-1)&~(4-1);P=k[O>>2]|0;k[c>>2]=O+4;k[a+80>>2]=P;Q=1;R=219;break a;break}case 256:{P=(k[c>>2]|0)+(4-1)&~(4-1);O=k[P>>2]|0;k[c>>2]=P+4;k[a+56>>2]=O;Q=1;R=219;break a;break}case 257:{O=(k[c>>2]|0)+(4-1)&~(4-1);P=k[O>>2]|0;k[c>>2]=O+4;k[a+60>>2]=P;Q=1;R=219;break a;break}case 258:{P=(k[c>>2]|0)+(4-1)&~(4-1);O=k[P>>2]|0;k[c>>2]=P+4;j[a+84>>1]=O;if(!(k[a+12>>2]&128)){Q=1;R=219;break a}switch(O&65535|0){case 8:{k[a+652>>2]=3;Q=1;R=219;break a;break}case 16:{k[a+652>>2]=4;Q=1;R=219;break a;break}case 24:{k[a+652>>2]=5;Q=1;R=219;break a;break}case 32:{k[a+652>>2]=6;Q=1;R=219;break a;break}case 64:{k[a+652>>2]=7;Q=1;R=219;break a;break}case 128:{k[a+652>>2]=7;Q=1;R=219;break a;break}default:{Q=1;R=219;break a}}break}case 259:{O=(k[c>>2]|0)+(4-1)&~(4-1);P=k[O>>2]|0;k[c>>2]=O+4;O=P&65535;if(k[J>>2]&128){if((j[a+88>>1]|0)==(P&65535)<<16>>16){Q=1;R=219;break a}qb[k[a+564>>2]&127](a);S=a+12|0;k[S>>2]=k[S>>2]&-33}S=We(a,O)|0;if(!S){T=0;break a}j[a+88>>1]=P;Q=S;R=219;break a;break}case 262:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;j[a+90>>1]=P;Q=1;R=219;break a;break}case 263:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;j[a+92>>1]=S;Q=1;R=219;break a;break}case 266:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;S=P&65535;if((S+-1|0)>>>0>1){U=S;R=223;break a}j[a+94>>1]=P;Q=1;R=219;break a;break}case 274:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;P=S&65535;if((P+-1|0)>>>0>7){U=P;R=223;break a}j[a+96>>1]=S;Q=1;R=219;break a;break}case 277:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;if(!(P&65535)){U=0;R=223;break a}j[a+98>>1]=P;Q=1;R=219;break a;break}case 278:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;if(!S){V=0;R=226;break a}k[a+100>>2]=S;if(k[J>>2]&4){Q=1;R=219;break a}k[a+72>>2]=S;k[a+68>>2]=k[a+56>>2];Q=1;R=219;break a;break}case 280:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;j[a+104>>1]=P;Q=1;R=219;break a;break}case 281:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;j[a+106>>1]=S;Q=1;R=219;break a;break}case 282:{S=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[S>>3];k[c>>2]=S+8;if(W<0.0)X=W;else{o[a+116>>2]=W;Q=1;R=219;break a}break}case 283:{S=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[S>>3];k[c>>2]=S+8;if(W<0.0)X=W;else{o[a+120>>2]=W;Q=1;R=219;break a}break}case 284:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;S=P&65535;if((S+-1|0)>>>0>1){U=S;R=223;break a}j[a+126>>1]=P;Q=1;R=219;break a;break}case 286:{P=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[P>>3];k[c>>2]=P+8;o[a+128>>2]=W;Q=1;R=219;break a;break}case 287:{P=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[P>>3];k[c>>2]=P+8;o[a+132>>2]=W;Q=1;R=219;break a;break}case 296:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;P=S&65535;if((P+-1|0)>>>0>2){U=P;R=223;break a}j[a+124>>1]=S;Q=1;R=219;break a;break}default:{R=163;break a}}while(0);S=cc(a,b)|0;P=k[a+628>>2]|0;if(!S)Y=129632;else Y=k[S+28>>2]|0;k[e>>2]=k[a>>2];p[e+8>>3]=X;k[e+16>>2]=Y;vc(P,129317,129670,e);L=0;r=d;return L|0}else{if((N|0)>=340){if((N|0)>=32995)if((N|0)>=32997){if((N|0)<32998){switch(N|0){case 32997:break;default:{R=163;break a}}P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;k[a+64>>2]=S;Q=1;R=219;break}if((N|0)<65563){switch(N|0){case 32998:break;default:{R=163;break a}}S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;if(!P){V=0;R=226;break}k[a+76>>2]=P;Q=1;R=219;break}switch(N|0){case 65563:break;default:{R=163;break a}}P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;P=a+12|0;O=k[P>>2]|0;if((S&65535|0)==1){k[P>>2]=O|4194304;Q=1;R=219;break}else{k[P>>2]=O&-4194305;Q=1;R=219;break}}else switch(N|0){case 32995:{O=(k[c>>2]|0)+(4-1)&~(4-1);P=k[O>>2]|0;k[c>>2]=O+4;O=(P&65535|0)!=0;j[a+156>>1]=O&1;if(!O){Q=1;R=219;break a}j[x>>1]=1;O=a+160|0;P=k[O>>2]|0;if(P){ne(P);k[O>>2]=0}P=me(2)|0;k[O>>2]=P;if(!P){Q=1;R=219;break a}qe(P,x,2);Q=1;R=219;break a;break}case 32996:{P=(k[c>>2]|0)+(4-1)&~(4-1);O=k[P>>2]|0;k[c>>2]=P+4;P=O&65535;switch(P|0){case 0:{Z=4;break}case 1:{Z=2;break}case 2:{Z=1;break}case 3:{Z=3;break}default:{U=P;R=223;break a}}j[a+86>>1]=Z;Q=1;R=219;break a;break}default:{R=163;break a}}switch(N|0){case 340:{P=a+108|0;if(!(k[a+12>>2]&4194304)){O=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[O>>3];k[c>>2]=O+8;O=j[a+98>>1]|0;S=O&65535;_=k[P>>2]|0;if(_)ne(_);_=me(S<<3)|0;k[P>>2]=_;if(O<<16>>16==0|(_|0)==0){Q=1;R=219;break a}else $=S;while(1){$=$+-1|0;p[_+($<<3)>>3]=W;if(!$){Q=1;R=219;break a}}}_=(k[c>>2]|0)+(4-1)&~(4-1);S=k[_>>2]|0;k[c>>2]=_+4;_=m[a+98>>1]|0;O=k[P>>2]|0;if(O){ne(O);k[P>>2]=0}if(!S){Q=1;R=219;break a}O=_<<3;_=me(O)|0;k[P>>2]=_;if(!_){Q=1;R=219;break a}qe(_,S,O);Q=1;R=219;break a;break}case 341:{O=a+112|0;if(!(k[a+12>>2]&4194304)){S=(k[c>>2]|0)+(8-1)&~(8-1);W=+p[S>>3];k[c>>2]=S+8;S=j[a+98>>1]|0;_=S&65535;aa=k[O>>2]|0;if(aa)ne(aa);aa=me(_<<3)|0;k[O>>2]=aa;if(S<<16>>16==0|(aa|0)==0){Q=1;R=219;break a}else ba=_;while(1){ba=ba+-1|0;p[aa+(ba<<3)>>3]=W;if(!ba){Q=1;R=219;break a}}}aa=(k[c>>2]|0)+(4-1)&~(4-1);P=k[aa>>2]|0;k[c>>2]=aa+4;aa=m[a+98>>1]|0;_=k[O>>2]|0;if(_){ne(_);k[O>>2]=0}if(!P){Q=1;R=219;break a}_=aa<<3;aa=me(_)|0;k[O>>2]=aa;if(!aa){Q=1;R=219;break a}qe(aa,P,_);Q=1;R=219;break a;break}case 531:{_=(k[c>>2]|0)+(4-1)&~(4-1);P=k[_>>2]|0;k[c>>2]=_+4;j[a+196>>1]=P;Q=1;R=219;break a;break}case 530:{P=(k[c>>2]|0)+(4-1)&~(4-1);_=k[P>>2]|0;k[c>>2]=P+4;j[a+192>>1]=_;_=(k[c>>2]|0)+(4-1)&~(4-1);P=k[_>>2]|0;k[c>>2]=_+4;j[a+194>>1]=P;Q=1;R=219;break a;break}case 532:{P=a+212|0;_=(k[c>>2]|0)+(4-1)&~(4-1);aa=k[_>>2]|0;k[c>>2]=_+4;_=k[P>>2]|0;if(_){ne(_);k[P>>2]=0}if(!aa){Q=1;R=219;break a}_=me(24)|0;k[P>>2]=_;if(!_){Q=1;R=219;break a}qe(_,aa,24);Q=1;R=219;break a;break}default:{R=163;break a}}}do switch(N|0){case 297:{aa=(k[c>>2]|0)+(4-1)&~(4-1);_=k[aa>>2]|0;k[c>>2]=aa+4;j[a+136>>1]=_;_=(k[c>>2]|0)+(4-1)&~(4-1);aa=k[_>>2]|0;k[c>>2]=_+4;j[a+138>>1]=aa;Q=1;R=219;break a;break}case 321:{aa=(k[c>>2]|0)+(4-1)&~(4-1);_=k[aa>>2]|0;k[c>>2]=aa+4;j[a+152>>1]=_;_=(k[c>>2]|0)+(4-1)&~(4-1);aa=k[_>>2]|0;k[c>>2]=_+4;j[a+154>>1]=aa;Q=1;R=219;break a;break}case 320:{aa=1<<m[a+84>>1];_=a+140|0;P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;P=k[_>>2]|0;if(P){ne(P);k[_>>2]=0}if(((S|0)!=0?(P=aa<<1,(aa&2147483647|0)==(aa|0)):0)?(ca=me(P)|0,k[_>>2]=ca,(ca|0)!=0):0)qe(ca,S,P);P=a+144|0;S=(k[c>>2]|0)+(4-1)&~(4-1);ca=k[S>>2]|0;k[c>>2]=S+4;S=k[P>>2]|0;if(S){ne(S);k[P>>2]=0}if(((ca|0)!=0?(S=aa<<1,(aa&2147483647|0)==(aa|0)):0)?(_=me(S)|0,k[P>>2]=_,(_|0)!=0):0)qe(_,ca,S);S=a+148|0;ca=(k[c>>2]|0)+(4-1)&~(4-1);_=k[ca>>2]|0;k[c>>2]=ca+4;ca=k[S>>2]|0;if(ca){ne(ca);k[S>>2]=0}if(!_){Q=1;R=219;break a}ca=aa<<1;if((aa&2147483647|0)!=(aa|0)){Q=1;R=219;break a}aa=me(ca)|0;k[S>>2]=aa;if(!aa){Q=1;R=219;break a}qe(aa,_,ca);Q=1;R=219;break a;break}case 338:{ca=(k[c>>2]|0)+(4-1)&~(4-1);_=k[ca>>2]|0;k[c>>2]=ca+4;ca=_&65535;if(ca>>>0>(m[a+98>>1]|0)>>>0){U=ca;R=223;break a}_=(k[c>>2]|0)+(4-1)&~(4-1);aa=k[_>>2]|0;k[c>>2]=_+4;_=(aa|0)==0;if(_&(ca|0)!=0){U=ca;R=223;break a}if(!ca)da=0;else{S=0;while(1){P=aa+(S<<1)|0;ea=j[P>>1]|0;if((ea&65535)>2){if(ea<<16>>16!=999){U=ca;R=223;break a}j[P>>1]=2}S=S+1|0;if(S>>>0>=ca>>>0){da=ca;break}}}j[a+156>>1]=da;ca=a+160|0;S=k[ca>>2]|0;if(S){ne(S);k[ca>>2]=0}if(_){Q=1;R=219;break a}S=da<<1;P=me(S)|0;k[ca>>2]=P;if(!P){Q=1;R=219;break a}qe(P,aa,S);Q=1;R=219;break a;break}case 322:{S=(k[c>>2]|0)+(4-1)&~(4-1);P=k[S>>2]|0;k[c>>2]=S+4;if(P&15){if(k[a+8>>2]|0){V=P;R=226;break a}S=k[a+628>>2]|0;ca=k[a>>2]|0;k[w>>2]=P;ie(S,ca,129236,w)}k[a+68>>2]=P;P=a+12|0;k[P>>2]=k[P>>2]|1024;Q=1;R=219;break a;break}case 323:{P=(k[c>>2]|0)+(4-1)&~(4-1);ca=k[P>>2]|0;k[c>>2]=P+4;if(ca&15){if(k[a+8>>2]|0){V=ca;R=226;break a}P=k[a+628>>2]|0;S=k[a>>2]|0;k[v>>2]=ca;ie(P,S,129276,v)}k[a+72>>2]=ca;ca=a+12|0;k[ca>>2]=k[ca>>2]|1024;Q=1;R=219;break a;break}case 339:{ca=(k[c>>2]|0)+(4-1)&~(4-1);S=k[ca>>2]|0;k[c>>2]=ca+4;ca=S&65535;if((ca+-1|0)>>>0>5){U=ca;R=223;break a}P=S&65535;j[a+86>>1]=P;if(((ca|0)==5?(j[a+84>>1]|0)==32:0)?(ca=a+652|0,(k[ca>>2]|0)==6):0){k[ca>>2]=4;Q=1;R=219;break a}if((P+-5&65535)>=2){Q=1;R=219;break a}if((j[a+84>>1]|0)!=64){Q=1;R=219;break a}P=a+652|0;if((k[P>>2]|0)!=7){Q=1;R=219;break a}k[P>>2]=6;Q=1;R=219;break a;break}case 330:{if(k[a+12>>2]&8192){P=k[a+628>>2]|0;k[u>>2]=k[a>>2];vc(P,129317,129332,u);T=0;break a}P=(k[c>>2]|0)+(4-1)&~(4-1);ca=k[P>>2]|0;k[c>>2]=P+4;P=a+184|0;j[P>>1]=ca;ca=a+188|0;S=(k[c>>2]|0)+(4-1)&~(4-1);ea=k[S>>2]|0;k[c>>2]=S+4;S=m[P>>1]|0;P=k[ca>>2]|0;if(P){ne(P);k[ca>>2]=0}if(!ea){Q=1;R=219;break a}P=S<<3;S=me(P)|0;k[ca>>2]=S;if(!S){Q=1;R=219;break a}qe(S,ea,P);Q=1;R=219;break a;break}case 301:{P=((m[a+98>>1]|0)-(m[a+156>>1]|0)|0)>1?3:1;ea=a+84|0;S=0;do{ca=a+200+(S<<2)|0;fa=(k[c>>2]|0)+(4-1)&~(4-1);ga=k[fa>>2]|0;k[c>>2]=fa+4;fa=1<<m[ea>>1];ia=k[ca>>2]|0;if(ia){ne(ia);k[ca>>2]=0}if(((ga|0)!=0?(ia=fa<<1,(fa&2147483647|0)==(fa|0)):0)?(fa=me(ia)|0,k[ca>>2]=fa,(fa|0)!=0):0)qe(fa,ga,ia);S=S+1|0}while((S|0)!=(P|0));Q=1;R=219;break}case 333:{P=(k[c>>2]|0)+(4-1)&~(4-1);S=k[P>>2]|0;k[c>>2]=P+4;P=S&65535;S=(k[c>>2]|0)+(4-1)&~(4-1);ea=k[S>>2]|0;k[c>>2]=S+4;S=j[a+98>>1]|0;b:do if(!P)ja=S;else{aa=ea+P|0;if(!(S<<16>>16)){T=0;break a}else{ka=ea;la=S}while(1){_=ka;while(1){if(_>>>0>=aa>>>0){ja=la;break b}ia=_+1|0;if(!(i[_>>0]|0)){ma=ia;break}else _=ia}la=la+-1<<16>>16;if(!(la<<16>>16)){na=ma;break}else ka=ma}aa=na-ea|0;_=(na|0)!=(ea|0);ia=_&1;if(!_){T=0;break a}_=a+220|0;ga=k[_>>2]|0;if(ga){ne(ga);k[_>>2]=0}if((ea|0)!=0?(ga=me(aa)|0,k[_>>2]=ga,(ga|0)!=0):0)qe(ga,ea,aa);k[a+216>>2]=aa;Q=ia;R=219;break a}while(0);ea=k[a+628>>2]|0;P=S&65535;k[t>>2]=k[a>>2];k[t+4>>2]=P;k[t+8>>2]=P-(ja&65535);vc(ea,128944,129363,t);T=0;break a;break}default:{R=163;break a}}while(0)}while(0);c:do if((R|0)==163){if(!M){t=k[a+628>>2]|0;ja=k[K+28>>2]|0;k[s>>2]=k[a>>2];k[s+4>>2]=b>>>0>65535?128936:155687;k[s+8>>2]=ja;vc(t,129317,129173,s);T=0;break}t=a+224|0;ja=k[t>>2]|0;na=a+228|0;do if((ja|0)>0){ma=k[na>>2]|0;ka=0;while(1){la=ma+(ka*12|0)|0;if((k[k[la>>2]>>2]|0)==(b|0)){oa=la;pa=ka;break}ka=ka+1|0;if((ka|0)>=(ja|0)){R=172;break}}if((R|0)==172){qa=na;ra=ma;R=173;break}ka=ma+(pa*12|0)+8|0;S=k[ka>>2]|0;if(!S)sa=oa;else{ne(S);k[ka>>2]=0;sa=oa}}else{qa=na;ra=k[na>>2]|0;R=173}while(0);do if((R|0)==173){na=ja+1|0;k[t>>2]=na;ka=oe(ra,na*12|0)|0;if(!ka){na=k[a+628>>2]|0;k[q>>2]=k[a>>2];vc(na,129317,129420,q);T=0;break c}else{k[qa>>2]=ka;na=(k[t>>2]|0)+-1|0;S=ka+(na*12|0)|0;k[S>>2]=K;k[ka+(na*12|0)+8>>2]=0;k[ka+(na*12|0)+4>>2]=0;sa=S;break}}while(0);t=K+8|0;ja=bc(k[t>>2]|0)|0;if(!ja){S=k[a+628>>2]|0;na=k[t>>2]|0;ka=k[K+28>>2]|0;k[n>>2]=k[a>>2];k[n+4>>2]=na;k[n+8>>2]=ka;vc(S,129317,129475,n);T=0;break}S=K+27|0;ka=(i[S>>0]|0)!=0;if((k[t>>2]|0)==2){do if(ka)if((j[K+6>>1]|0)==-3){na=(k[c>>2]|0)+(4-1)&~(4-1);la=k[na>>2]|0;k[c>>2]=na+4;na=(k[c>>2]|0)+(4-1)&~(4-1);u=k[na>>2]|0;k[c>>2]=na+4;ta=la;ua=u;break}else Ja(129506,129019,529,129317);else{u=(k[c>>2]|0)+(4-1)&~(4-1);la=k[u>>2]|0;k[c>>2]=u+4;ta=(Qq(la)|0)+1|0;ua=la}while(0);k[sa+4>>2]=ta;la=sa+8|0;u=k[la>>2]|0;if(u){ne(u);k[la>>2]=0}if(!ua){Q=1;R=219;break}u=me(ta)|0;k[la>>2]=u;if(!u){Q=1;R=219;break}qe(u,ua,ta);Q=1;R=219;break}u=K+6|0;la=j[u>>1]|0;na=la<<16>>16;d:do if(ka){v=(k[c>>2]|0)+(4-1)&~(4-1);w=k[v>>2]|0;k[c>>2]=v+4;v=sa+4|0;k[v>>2]=w;va=v;wa=w;R=195}else switch(la<<16>>16){case -3:case -1:{w=sa+4|0;k[w>>2]=1;xa=w;ya=1;break d;break}case -2:{w=m[a+98>>1]|0;v=sa+4|0;k[v>>2]=w;va=v;wa=w;R=195;break d;break}default:{w=sa+4|0;k[w>>2]=na;va=w;wa=na;R=195;break d}}while(0);if((R|0)==195)if(!wa){na=k[a+628>>2]|0;la=k[K+28>>2]|0;ka=k[t>>2]|0;w=j[u>>1]|0;v=l[S>>0]|0;k[h>>2]=k[a>>2];k[h+4>>2]=la;k[h+8>>2]=ka;k[h+12>>2]=w;k[h+16>>2]=v;vc(na,129317,129544,h);T=0;break}else{xa=va;ya=wa}na=Ee(a,ya,ja,129607)|0;v=sa+8|0;k[v>>2]=na;if(!na)T=0;else{if((k[K>>2]|0)==336?(Oq(k[K+28>>2]|0,131343)|0)==0:0){w=(k[c>>2]|0)+(4-1)&~(4-1);ka=k[w>>2]|0;k[c>>2]=w+4;j[y>>1]=ka;ka=(k[c>>2]|0)+(4-1)&~(4-1);w=k[ka>>2]|0;k[c>>2]=ka+4;j[y+2>>1]=w;qe(k[v>>2]|0,y,4);Q=1;R=219;break}if(((i[S>>0]|0)==0?(m[u>>1]|0)<=65532:0)?(v=k[xa>>2]|0,(v|0)<=1):0){if((v|0)!=1)Ja(129221,129019,597,129317);do switch(k[t>>2]|0){case 7:case 1:{v=(k[c>>2]|0)+(4-1)&~(4-1);w=k[v>>2]|0;k[c>>2]=v+4;i[z>>0]=w;qe(na,z,ja);Q=1;R=219;break c;break}case 6:{w=(k[c>>2]|0)+(4-1)&~(4-1);v=k[w>>2]|0;k[c>>2]=w+4;i[A>>0]=v;qe(na,A,ja);Q=1;R=219;break c;break}case 3:{v=(k[c>>2]|0)+(4-1)&~(4-1);w=k[v>>2]|0;k[c>>2]=v+4;j[B>>1]=w;qe(na,B,ja);Q=1;R=219;break c;break}case 8:{w=(k[c>>2]|0)+(4-1)&~(4-1);v=k[w>>2]|0;k[c>>2]=w+4;j[C>>1]=v;qe(na,C,ja);Q=1;R=219;break c;break}case 13:case 4:{v=(k[c>>2]|0)+(4-1)&~(4-1);w=k[v>>2]|0;k[c>>2]=v+4;k[D>>2]=w;qe(na,D,ja);Q=1;R=219;break c;break}case 9:{w=(k[c>>2]|0)+(4-1)&~(4-1);v=k[w>>2]|0;k[c>>2]=w+4;k[E>>2]=v;qe(na,E,ja);Q=1;R=219;break c;break}case 18:case 16:{v=(k[c>>2]|0)+(8-1)&~(8-1);w=v;ka=k[w>>2]|0;la=k[w+4>>2]|0;k[c>>2]=v+8;v=F;k[v>>2]=ka;k[v+4>>2]=la;qe(na,F,ja);Q=1;R=219;break c;break}case 17:{la=(k[c>>2]|0)+(8-1)&~(8-1);v=la;ka=k[v>>2]|0;w=k[v+4>>2]|0;k[c>>2]=la+8;la=G;k[la>>2]=ka;k[la+4>>2]=w;qe(na,G,ja);Q=1;R=219;break c;break}case 11:case 10:case 5:{w=(k[c>>2]|0)+(8-1)&~(8-1);X=+p[w>>3];k[c>>2]=w+8;o[H>>2]=X;qe(na,H,ja);Q=1;R=219;break c;break}case 12:{w=(k[c>>2]|0)+(8-1)&~(8-1);X=+p[w>>3];k[c>>2]=w+8;p[I>>3]=X;qe(na,I,ja);Q=1;R=219;break c;break}default:{pe(na,0,ja);T=0;break c}}while(0)}t=(k[c>>2]|0)+(4-1)&~(4-1);u=k[t>>2]|0;k[c>>2]=t+4;qe(na,u,ha(k[xa>>2]|0,ja)|0);Q=1;R=219}}else if((R|0)==223){u=cc(a,b)|0;t=k[a+628>>2]|0;if(!u)za=129632;else za=k[u+28>>2]|0;k[g>>2]=k[a>>2];k[g+4>>2]=U;k[g+8>>2]=za;vc(t,129317,129640,g);L=0;r=d;return L|0}else if((R|0)==226){t=cc(a,b)|0;u=k[a+628>>2]|0;if(!t)Aa=129632;else Aa=k[t+28>>2]|0;k[f>>2]=k[a>>2];k[f+4>>2]=V;k[f+8>>2]=Aa;vc(u,129317,129640,f);L=0;r=d;return L|0}while(0);if((R|0)==219){R=cc(a,b)|0;if(R){b=j[R+24>>1]|0;R=a+40+(((b&65535)>>>5&65535)<<2)|0;k[R>>2]=1<<(b&31)|k[R>>2]}R=a+12|0;k[R>>2]=k[R>>2]|8;T=Q}L=T;r=d;return L|0}function Wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,n=0,o=0,q=0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0,B=0;d=r;r=r+16|0;e=d;f=$b(a,b,0)|0;if(!f){g=0;r=d;return g|0}h=(j[f+24>>1]|0)==65;l=h?0:b;a:do if((l|0)<297)do switch(l|0){case 273:{n=37;break a;break}case 279:{n=38;break a;break}case 254:{o=k[a+80>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 256:{o=k[a+56>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 257:{o=k[a+60>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 258:{o=j[a+84>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 259:{o=j[a+88>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 262:{o=j[a+90>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 263:{o=j[a+92>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 266:{o=j[a+94>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 274:{o=j[a+96>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 277:{o=j[a+98>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 278:{o=k[a+100>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 280:{o=j[a+104>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 281:{o=j[a+106>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 282:{o=k[a+116>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 283:{o=k[a+120>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 284:{o=j[a+126>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}case 286:{o=k[a+128>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 287:{o=k[a+132>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 296:{o=j[a+124>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}default:{n=60;break a}}while(0);else{if((l|0)<338)switch(l|0){case 324:{n=37;break a;break}case 325:{n=38;break a;break}case 297:{o=j[a+136>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;o=j[a+138>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 321:{o=j[a+152>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;o=j[a+154>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 320:{o=k[a+140>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;o=k[a+144>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;o=k[a+148>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 322:{o=k[a+68>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 323:{o=k[a+72>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 330:{o=j[a+184>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;o=k[a+188>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 301:{o=k[a+200>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;if(((m[a+98>>1]|0)-(m[a+156>>1]|0)|0)<=1){g=1;r=d;return g|0}o=k[a+204>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;o=k[a+208>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}case 333:{o=k[a+220>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}default:{n=60;break a}}if((l|0)<531)switch(l|0){case 340:{o=k[a+108>>2]|0;if(k[a+12>>2]&4194304){q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}t=+p[o>>3];s=j[a+98>>1]|0;if((s&65535)>1){q=s&65535;s=1;u=t;while(1){v=+p[o+(s<<3)>>3];w=v<u?v:u;s=s+1|0;if(s>>>0>=q>>>0){x=w;break}else u=w}}else x=t;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;p[s>>3]=x;g=1;r=d;return g|0}case 341:{s=k[a+112>>2]|0;if(k[a+12>>2]&4194304){q=(k[c>>2]|0)+(4-1)&~(4-1);o=k[q>>2]|0;k[c>>2]=q+4;k[o>>2]=s;g=1;r=d;return g|0}u=+p[s>>3];o=j[a+98>>1]|0;if((o&65535)>1){q=o&65535;o=1;w=u;while(1){v=+p[s+(o<<3)>>3];y=v>w?v:w;o=o+1|0;if(o>>>0>=q>>>0){z=y;break}else w=y}}else z=u;q=(k[c>>2]|0)+(4-1)&~(4-1);o=k[q>>2]|0;k[c>>2]=q+4;p[o>>3]=z;g=1;r=d;return g|0}case 338:{o=j[a+156>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;o=k[a+160>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;k[q>>2]=o;g=1;r=d;return g|0}case 339:{o=j[a+86>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}case 530:{o=j[a+192>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;o=j[a+194>>1]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=o;g=1;r=d;return g|0}default:{n=60;break a}}if((l|0)<32996){if((l|0)<532){switch(l|0){case 531:break;default:{n=60;break a}}o=j[a+196>>1]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=o;g=1;r=d;return g|0}if((l|0)<32995){switch(l|0){case 532:break;default:{n=60;break a}}o=k[a+212>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;k[s>>2]=o;g=1;r=d;return g|0}switch(l|0){case 32995:break;default:{n=60;break a}}if((j[a+156>>1]|0)==1)A=(j[k[a+160>>2]>>1]|0)==1&1;else A=0;o=(k[c>>2]|0)+(4-1)&~(4-1);s=k[o>>2]|0;k[c>>2]=o+4;j[s>>1]=A;g=1;r=d;return g|0}switch(l|0){case 32998:{s=k[a+76>>2]|0;o=(k[c>>2]|0)+(4-1)&~(4-1);q=k[o>>2]|0;k[c>>2]=o+4;k[q>>2]=s;g=1;r=d;return g|0}case 32996:{switch(m[a+86>>1]|0){case 1:{s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=2;g=1;r=d;return g|0}case 2:{q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=1;g=1;r=d;return g|0}case 3:{s=(k[c>>2]|0)+(4-1)&~(4-1);q=k[s>>2]|0;k[c>>2]=s+4;j[q>>1]=3;g=1;r=d;return g|0}case 4:{q=(k[c>>2]|0)+(4-1)&~(4-1);s=k[q>>2]|0;k[c>>2]=q+4;j[s>>1]=0;g=1;r=d;return g|0}default:{g=1;r=d;return g|0}}break}case 32997:{s=k[a+64>>2]|0;q=(k[c>>2]|0)+(4-1)&~(4-1);o=k[q>>2]|0;k[c>>2]=q+4;k[o>>2]=s;g=1;r=d;return g|0}default:{n=60;break a}}}while(0);if((n|0)==37){gc(a)|0;l=k[a+172>>2]|0;A=(k[c>>2]|0)+(4-1)&~(4-1);s=k[A>>2]|0;k[c>>2]=A+4;k[s>>2]=l;g=1;r=d;return g|0}else if((n|0)==38){gc(a)|0;l=k[a+176>>2]|0;s=(k[c>>2]|0)+(4-1)&~(4-1);A=k[s>>2]|0;k[c>>2]=s+4;k[A>>2]=l;g=1;r=d;return g|0}else if((n|0)==60){if(!h){h=k[a+628>>2]|0;l=k[f+28>>2]|0;k[e>>2]=k[a>>2];k[e+4>>2]=b>>>0>65535?128936:155687;k[e+8>>2]=l;vc(h,129158,129173,e);g=0;r=d;return g|0}e=k[a+224>>2]|0;if((e|0)<=0){g=0;r=d;return g|0}h=k[a+228>>2]|0;a=0;while(1){if((k[k[h+(a*12|0)>>2]>>2]|0)==(b|0)){B=a;break}a=a+1|0;if((a|0)>=(e|0)){g=0;n=91;break}}if((n|0)==91){r=d;return g|0}if(i[f+27>>0]|0){n=k[h+(B*12|0)+4>>2]|0;if((j[f+4>>1]|0)==-3){e=(k[c>>2]|0)+(4-1)&~(4-1);a=k[e>>2]|0;k[c>>2]=e+4;k[a>>2]=n}else{a=(k[c>>2]|0)+(4-1)&~(4-1);e=k[a>>2]|0;k[c>>2]=a+4;j[e>>1]=n}n=k[h+(B*12|0)+8>>2]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);a=k[e>>2]|0;k[c>>2]=e+4;k[a>>2]=n;g=1;r=d;return g|0}if((k[f>>2]|0)==336?(Oq(k[f+28>>2]|0,131343)|0)==0:0){n=h+(B*12|0)+8|0;a=j[k[n>>2]>>1]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);b=k[e>>2]|0;k[c>>2]=e+4;j[b>>1]=a;a=j[(k[n>>2]|0)+2>>1]|0;n=(k[c>>2]|0)+(4-1)&~(4-1);b=k[n>>2]|0;k[c>>2]=n+4;j[b>>1]=a;g=1;r=d;return g|0}a=k[f+8>>2]|0;if(((a|0)!=2?(m[f+4>>1]|0)<=65532:0)?(f=k[h+(B*12|0)+4>>2]|0,(f|0)<=1):0){b=k[h+(B*12|0)+8>>2]|0;if((f|0)!=1)Ja(129221,129019,1077,129158);do switch(a|0){case 7:case 1:{f=i[b>>0]|0;n=(k[c>>2]|0)+(4-1)&~(4-1);e=k[n>>2]|0;k[c>>2]=n+4;i[e>>0]=f;g=1;r=d;return g|0}case 6:{f=i[b>>0]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);n=k[e>>2]|0;k[c>>2]=e+4;i[n>>0]=f;g=1;r=d;return g|0}case 3:{f=j[b>>1]|0;n=(k[c>>2]|0)+(4-1)&~(4-1);e=k[n>>2]|0;k[c>>2]=n+4;j[e>>1]=f;g=1;r=d;return g|0}case 8:{f=j[b>>1]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);n=k[e>>2]|0;k[c>>2]=e+4;j[n>>1]=f;g=1;r=d;return g|0}case 13:case 4:{f=k[b>>2]|0;n=(k[c>>2]|0)+(4-1)&~(4-1);e=k[n>>2]|0;k[c>>2]=n+4;k[e>>2]=f;g=1;r=d;return g|0}case 9:{f=k[b>>2]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);n=k[e>>2]|0;k[c>>2]=e+4;k[n>>2]=f;g=1;r=d;return g|0}case 18:case 16:{f=b;n=k[f>>2]|0;e=k[f+4>>2]|0;f=(k[c>>2]|0)+(4-1)&~(4-1);l=k[f>>2]|0;k[c>>2]=f+4;f=l;k[f>>2]=n;k[f+4>>2]=e;g=1;r=d;return g|0}case 17:{e=b;f=k[e>>2]|0;n=k[e+4>>2]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);l=k[e>>2]|0;k[c>>2]=e+4;e=l;k[e>>2]=f;k[e+4>>2]=n;g=1;r=d;return g|0}case 11:case 10:case 5:{n=k[b>>2]|0;e=(k[c>>2]|0)+(4-1)&~(4-1);f=k[e>>2]|0;k[c>>2]=e+4;k[f>>2]=n;g=1;r=d;return g|0}case 12:{z=+p[b>>3];n=(k[c>>2]|0)+(4-1)&~(4-1);f=k[n>>2]|0;k[c>>2]=n+4;p[f>>3]=z;g=1;r=d;return g|0}default:{g=0;r=d;return g|0}}while(0)}b=k[h+(B*12|0)+8>>2]|0;B=(k[c>>2]|0)+(4-1)&~(4-1);h=k[B>>2]|0;k[c>>2]=B+4;k[h>>2]=b;g=1;r=d;return g|0}return 0}function Xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;d=r;r=r+112|0;e=d+88|0;f=d+80|0;g=d+72|0;h=d+64|0;i=d+56|0;j=d+48|0;l=d+40|0;n=d+32|0;o=d+24|0;p=d+16|0;q=d+102|0;s=d+96|0;t=d+8|0;u=d+100|0;v=d+92|0;w=d;x=a+12|0;y=k[x>>2]|0;if(!(y&2048)){z=a+640|0;A=a+628|0;B=b;C=xb[k[z>>2]&63](k[A>>2]|0,k[B>>2]|0,k[B+4>>2]|0,0)|0;B=b;D=(C|0)==(k[B>>2]|0)?(L|0)==(k[B+4>>2]|0):0;if(!(y&524288)){if(D?(B=a+632|0,(nb[k[B>>2]&63](k[A>>2]|0,u,2)|0)==2):0){if(k[x>>2]&128)Qd(u);C=xb[k[z>>2]&63](k[A>>2]|0,(m[u>>1]|0)*12|0,0,1)|0;if(c){u=c;k[u>>2]=C;k[u+4>>2]=L}if((nb[k[B>>2]&63](k[A>>2]|0,v,4)|0)!=4){B=k[A>>2]|0;k[h>>2]=k[a>>2];vc(B,129029,129124,h);E=0;r=d;return E|0}if(k[x>>2]&128)Rd(v);h=b;k[h>>2]=k[v>>2];k[h+4>>2]=0;E=1;r=d;return E|0}h=k[A>>2]|0;k[i>>2]=k[a>>2];vc(h,129029,129089,i);E=0;r=d;return E|0}if(D?(D=a+632|0,(nb[k[D>>2]&63](k[A>>2]|0,w,8)|0)==8):0){if(k[x>>2]&128)Sd(w);i=w;w=k[i>>2]|0;h=k[i+4>>2]|0;if(h>>>0>0|(h|0)==0&w>>>0>65535){vc(k[A>>2]|0,129029,140364,f);E=0;r=d;return E|0}f=xb[k[z>>2]&63](k[A>>2]|0,(w&65535)*20|0,0,1)|0;if(c){w=c;k[w>>2]=f;k[w+4>>2]=L}if((nb[k[D>>2]&63](k[A>>2]|0,b,8)|0)!=8){D=k[A>>2]|0;k[e>>2]=k[a>>2];vc(D,129029,129124,e);E=0;r=d;return E|0}if(!(k[x>>2]&128)){E=1;r=d;return E|0}Sd(b);E=1;r=d;return E|0}e=k[A>>2]|0;k[g>>2]=k[a>>2];vc(e,129029,129089,g);E=0;r=d;return E|0}g=b;e=k[g>>2]|0;A=k[g+4>>2]|0;if(!(y&524288)){y=e+2|0;if(((e|0)==(e|0)&(((e|0)<0)<<31>>31|0)==(A|0)?!((e|0)>2147483645|(y|0)<2):0)?(g=a+616|0,(y|0)<=(k[g>>2]|0)):0){D=a+612|0;qe(q,(k[D>>2]|0)+e|0,2);if(k[x>>2]&128)Qd(q);w=((m[q>>1]|0)*12|0)+y|0;q=w+4|0;if(((y|0)>=0?!((w|0)>2147483643|(q|0)<4):0)?(q|0)<=(k[g>>2]|0):0){if(c){g=c;k[g>>2]=w;k[g+4>>2]=((w|0)<0)<<31>>31}qe(s,(k[D>>2]|0)+w|0,4);if(k[x>>2]&128)Rd(s);w=b;k[w>>2]=k[s>>2];k[w+4>>2]=0;E=1;r=d;return E|0}vc(k[a+628>>2]|0,129029,140395,o);E=0;r=d;return E|0}vc(k[a+628>>2]|0,129029,140364,p);p=b;k[p>>2]=0;k[p+4>>2]=0;E=0;r=d;return E|0}p=e+8|0;if(((e|0)==(e|0)&(((e|0)<0)<<31>>31|0)==(A|0)?!((e|0)>2147483639|(p|0)<8):0)?(A=a+616|0,(p|0)<=(k[A>>2]|0)):0){o=a+612|0;qe(t,(k[o>>2]|0)+e|0,8);if(k[x>>2]&128)Sd(t);e=t;t=k[e>>2]|0;w=k[e+4>>2]|0;if(w>>>0>0|(w|0)==0&t>>>0>65535){vc(k[a+628>>2]|0,129029,129050,l);E=0;r=d;return E|0}l=((t&65535)*20|0)+p|0;t=l+8|0;if(((p|0)>=0?!((l|0)>2147483639|(t|0)<8):0)?(t|0)<=(k[A>>2]|0):0){if(c){A=c;k[A>>2]=l;k[A+4>>2]=((l|0)<0)<<31>>31}qe(b,(k[o>>2]|0)+l|0,8);if(!(k[x>>2]&128)){E=1;r=d;return E|0}Sd(b);E=1;r=d;return E|0}vc(k[a+628>>2]|0,129029,140395,j);E=0;r=d;return E|0}vc(k[a+628>>2]|0,129029,140364,n);E=0;r=d;return E|0}function Yb(){return 84}function Zb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0;c=r;r=r+16|0;d=c;e=a+656|0;f=k[e>>2]|0;if((f|0)!=0?(g=a+660|0,h=k[g>>2]|0,(h|0)!=0):0){i=h;h=f;f=0;while(1){l=k[h+(f<<2)>>2]|0;if((j[l+24>>1]|0)==65?(m=k[l+28>>2]|0,(Rq(129700,m,4)|0)==0):0){ne(m);ne(l);n=k[g>>2]|0}else n=i;l=f+1|0;if(l>>>0>=n>>>0)break;i=n;h=k[e>>2]|0;f=l}ne(k[e>>2]|0);k[e>>2]=0;k[g>>2]=0}if(_b(a,k[b+12>>2]|0,k[b+8>>2]|0)|0){r=c;return}vc(k[a+628>>2]|0,129705,129722,d);r=c;return}function _b(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;d=r;r=r+48|0;e=d;f=d+8|0;g=d+4|0;h=a+664|0;k[h>>2]=0;i=a+656|0;j=k[i>>2]|0;if((j|0)!=0?(l=k[a+660>>2]|0,(l|0)!=0):0){m=De(a,j,l+c|0,4,129751)|0;k[i>>2]=m;n=m}else{m=Ee(a,c,4,129751)|0;k[i>>2]=m;n=m}if(!n){vc(k[a+628>>2]|0,129768,129785,e);o=0;r=d;return o|0}if(!c){p=a+660|0;q=n}else{n=a+660|0;a=f+8|0;e=0;do{m=b+(e*36|0)|0;l=k[m>>2]|0;j=f;s=j+36|0;do{k[j>>2]=0;j=j+4|0}while((j|0)<(s|0));k[g>>2]=f;j=k[h>>2]|0;if(!((j|0)!=0?(k[j>>2]|0)==(l|0):0))t=13;a:do if((t|0)==13){t=0;j=k[i>>2]|0;do if(j){k[f>>2]=l;k[a>>2]=0;s=Iq(g,j,k[n>>2]|0,4,19)|0;if(s){u=k[s>>2]|0;k[h>>2]=u;if(!u)break;else break a}else{k[h>>2]=0;break}}while(0);j=k[n>>2]|0;k[(k[i>>2]|0)+(j<<2)>>2]=m;k[n>>2]=j+1}while(0);e=e+1|0}while((e|0)!=(c|0));p=n;q=k[i>>2]|0}Jq(q,k[p>>2]|0,4,19);o=c;r=d;return o|0}function $b(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=r;r=r+48|0;e=d+4|0;f=d;g=e;h=g+36|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(h|0));k[f>>2]=e;g=a+664|0;h=k[g>>2]|0;if((h|0)!=0?(k[h>>2]|0)==(b|0):0){if(!c){i=h;r=d;return i|0}if((k[h+8>>2]|0)==(c|0)){i=h;r=d;return i|0}}h=k[a+656>>2]|0;if(!h){i=0;r=d;return i|0}k[e>>2]=b;k[e+8>>2]=c;c=Iq(f,h,k[a+660>>2]|0,4,19)|0;if(!c)j=0;else j=k[c>>2]|0;k[g>>2]=j;i=j;r=d;return i|0}function ac(a){a=a|0;var b=0;switch(a|0){case 7:case 6:case 2:case 1:case 0:{b=1;break}case 8:case 3:{b=2;break}case 13:case 11:case 9:case 4:{b=4;break}case 18:case 17:case 16:case 12:case 10:case 5:{b=8;break}default:b=0}return b|0}function bc(a){a=a|0;var b=0;switch(a|0){case 7:case 2:case 6:case 1:{b=1;break}case 8:case 3:{b=2;break}case 10:case 5:case 13:case 11:case 9:case 4:{b=4;break}case 18:case 17:case 16:case 12:{b=8;break}default:b=0}return b|0}function cc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;c=r;r=r+48|0;d=c;e=c+8|0;f=c+4|0;g=e;h=g+36|0;do{k[g>>2]=0;g=g+4|0}while((g|0)<(h|0));k[f>>2]=e;g=a+664|0;h=k[g>>2]|0;if((h|0)!=0?(k[h>>2]|0)==(b|0):0){i=h;r=c;return i|0}h=k[a+656>>2]|0;do if(h){k[e>>2]=b;k[e+8>>2]=0;j=Iq(f,h,k[a+660>>2]|0,4,19)|0;if(!j){k[g>>2]=0;break}l=k[j>>2]|0;k[g>>2]=l;if(l){i=l;r=c;return i|0}}while(0);g=k[a+628>>2]|0;k[d>>2]=b;vc(g,129817,129834,d);i=0;r=c;return i|0}function dc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=r;r=r+16|0;d=a;e=me(36)|0;if(!e){f=0;r=a;return f|0}pe(e,0,36);k[e>>2]=b;j[e+4>>1]=-3;j[e+6>>1]=-3;k[e+8>>2]=c;k[e+12>>2]=0;do switch(c|0){case 7:case 1:{k[e+16>>2]=40;k[e+20>>2]=40;break}case 2:{k[e+16>>2]=39;k[e+20>>2]=39;break}case 3:{k[e+16>>2]=42;k[e+20>>2]=42;break}case 4:{k[e+16>>2]=44;k[e+20>>2]=44;break}case 11:case 10:case 5:{k[e+16>>2]=48;k[e+20>>2]=48;break}case 6:{k[e+16>>2]=41;k[e+20>>2]=41;break}case 8:{k[e+16>>2]=43;k[e+20>>2]=43;break}case 9:{k[e+16>>2]=45;k[e+20>>2]=45;break}case 12:{k[e+16>>2]=49;k[e+20>>2]=49;break}case 18:case 13:{k[e+16>>2]=50;k[e+20>>2]=50;break}case 16:{k[e+16>>2]=46;k[e+20>>2]=46;break}case 17:{k[e+16>>2]=47;k[e+20>>2]=47;break}default:{k[e+16>>2]=0;k[e+20>>2]=0}}while(0);j[e+24>>1]=65;i[e+26>>0]=1;i[e+27>>0]=1;c=me(32)|0;k[e+28>>2]=c;if(!c){ne(e);f=0;r=a;return f|0}else{k[e+32>>2]=0;k[d>>2]=b;Aq(c,32,129867,d)|0;f=e;r=a;return f|0}return 0}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;a=k[b>>2]|0;b=k[c>>2]|0;d=k[a>>2]|0;if((b|0)!=(d|0)){e=b-d|0;return e|0}d=k[c+8>>2]|0;if(!d){e=0;return e|0}e=(k[a+8>>2]|0)-d|0;return e|0}function fc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0;b=r;r=r+320|0;c=b+288|0;d=b+280|0;e=b+272|0;f=b+264|0;g=b+256|0;h=b+248|0;i=b+240|0;l=b+232|0;n=b+224|0;o=b+216|0;p=b+208|0;q=b+200|0;s=b+192|0;t=b+184|0;u=b+176|0;v=b+168|0;w=b+160|0;x=b+152|0;y=b+144|0;z=b+136|0;A=b+120|0;B=b+112|0;C=b+104|0;D=b+96|0;E=b+88|0;F=b+80|0;G=b+72|0;H=b+64|0;I=b+56|0;J=b+48|0;K=b+40|0;M=b+32|0;N=b+24|0;O=b+16|0;P=b+8|0;Q=b+300|0;R=b+308|0;S=b+306|0;T=b+296|0;U=b+292|0;V=b+304|0;W=a+24|0;X=W;Y=k[X>>2]|0;Z=k[X+4>>2]|0;X=a+16|0;k[X>>2]=Y;k[X+4>>2]=Z;if((Y|0)==0&(Z|0)==0){_=0;r=b;return _|0}X=a+38|0;$=j[X>>1]|0;switch($<<16>>16){case -1:{vc(k[a+628>>2]|0,132827,132846,b);_=0;r=b;return _|0}case 0:break;default:aa=3}a:do if((aa|0)==3?(ba=k[a+32>>2]|0,(ba|0)!=0):0){ca=0;da=0;while(1){ea=ba+(ca<<3)|0;fa=(da&65535)+1<<16>>16;if((k[ea>>2]|0)==(Y|0)?(k[ea+4>>2]|0)==(Z|0):0){_=0;break}if((fa&65535)<($&65535)){ca=fa&65535;da=da+1|0}else break a}r=b;return _|0}while(0);da=$+1<<16>>16;j[X>>1]=da;$=a+36|0;if((da&65535)>(m[$>>1]|0)){ca=a+32|0;ba=De(a,k[ca>>2]|0,da&65535,16,132893)|0;if(!ba){_=0;r=b;return _|0}fa=j[X>>1]|0;if(fa<<16>>16<0)ga=-1;else ga=(fa&65535)<<1&65535;j[$>>1]=ga;k[ca>>2]=ba;ia=fa;ja=ba}else{ia=da;ja=k[a+32>>2]|0}da=ja+((ia&65535)+-1<<3)|0;k[da>>2]=Y;k[da+4>>2]=Z;qb[k[a+564>>2]&127](a);Z=a+448|0;j[Z>>1]=(j[Z>>1]|0)+1<<16>>16;Z=W;da=k[Z>>2]|0;Y=k[Z+4>>2]|0;Z=hc(a,da,Y,Q,W)|0;if(!(Z<<16>>16)){W=k[a+628>>2]|0;ia=P;k[ia>>2]=da;k[ia+4>>2]=Y;vc(W,132906,132924,P);_=0;r=b;return _|0}P=0;W=0;Y=k[Q>>2]|0;while(1){ia=m[Y>>1]|0;if(ia>>>0<(P&65535)>>>0){aa=17;break}W=W+1<<16>>16;if((W&65535)>=(Z&65535))break;else{P=ia+1|0;Y=Y+24|0}}if((aa|0)==17)ie(k[a+628>>2]|0,132963,132991,O);O=0;Y=k[Q>>2]|0;do{P=Y;Y=Y+24|0;O=O+1|0;W=O&65535;if((W&65535)<(Z&65535)){ia=P;da=Y;ja=W;while(1){ba=ia+24|0;if((j[P>>1]|0)==(j[ba>>1]|0))j[ba>>1]=0;ja=ja+1<<16>>16;if((ja&65535)>=(Z&65535))break;else{ba=da;da=da+24|0;ia=ba}}}}while(W<<16>>16!=Z<<16>>16);Y=a+12|0;k[Y>>2]=k[Y>>2]&-1048641;Rb(a);Tb(a)|0;k[N>>2]=1;Ob(a,284,N)|0;O=k[Q>>2]|0;ia=0;while(1){if((j[O>>1]|0)==277){ka=O;la=O;aa=29;break}ia=ia+1<<16>>16;if((ia&65535)>=(Z&65535)){aa=32;break}else O=O+24|0}if((aa|0)==29)if(la){if(ic(a,la,0)|0){j[ka>>1]=0;aa=32}}else aa=32;b:do if((aa|0)==32){ka=k[Q>>2]|0;la=0;while(1){if((j[ka>>1]|0)==259){ma=ka;na=ka;aa=35;break}la=la+1<<16>>16;if((la&65535)>=(Z&65535)){aa=48;break}else ka=ka+24|0}if((aa|0)==35)if(!na)aa=48;else{ka=jc(a,na,R)|0;if((ka|0)==1){la=na+8|0;W=k[la+4>>2]|0;O=a+98|0;if(!(W>>>0<0|((W|0)==0?(k[la>>2]|0)>>>0<(m[O>>1]|0)>>>0:0))){la=kc(a,na,N)|0;if(!la){W=k[N>>2]|0;ia=j[O>>1]|0;O=j[W>>1]|0;j[R>>1]=O;da=W;ja=ia;while(1){ja=ja+-1<<16>>16;da=da+2|0;if(!(ja<<16>>16)){oa=0;break}if((j[da>>1]|0)!=O<<16>>16){oa=5;break}}ne(W);pa=oa}else pa=la}else pa=1;qa=pa}else qa=ka;if(qa){lc(a,qa,132906,136291,0);break}k[M>>2]=m[R>>1];if(!(Ob(a,259,M)|0))break;j[ma>>1]=0}if((aa|0)==48?(k[K>>2]=1,(Ob(a,259,K)|0)==0):0)break;O=a+660|0;da=a+628|0;ja=a+656|0;ia=0;P=k[Q>>2]|0;c:while(1){ba=j[P>>1]|0;d:do if(ba<<16>>16){fa=k[O>>2]|0;e:do if(fa){ca=k[ja>>2]|0;ga=ba&65535;$=-1;X=fa;while(1){ea=($+X|0)/2|0;ra=k[k[ca+(ea<<2)>>2]>>2]|0;if((ra|0)==(ga|0)){sa=ea;break}ta=ra>>>0<ga>>>0;$=ta?ea:$;X=ta?X:ea;if(($+1|0)==(X|0)){ua=ga;aa=59;break e}}while(1){if(!sa){va=0;wa=ba;xa=ca;break e}X=sa+-1|0;if((k[k[ca+(X<<2)>>2]>>2]|0)==(ga|0))sa=X;else{ya=sa;break}}if((ya|0)==-1){ua=ga;aa=59}else{va=ya;wa=ba;xa=ca}}else{ua=ba&65535;aa=59}while(0);f:do if((aa|0)==59){aa=0;fa=k[da>>2]|0;k[J>>2]=ua;k[J+4>>2]=ua;ie(fa,132906,133054,J);if(!(_b(a,dc(a,m[P>>1]|0,m[P+2>>1]|0)|0,1)|0)){fa=k[da>>2]|0;X=m[P>>1]|0;k[I>>2]=X;k[I+4>>2]=X;ie(fa,132906,133099,I);j[P>>1]=0;break d}fa=k[O>>2]|0;if(!fa){aa=68;break c}X=j[P>>1]|0;$=k[ja>>2]|0;ea=X&65535;ta=-1;ra=fa;while(1){fa=(ta+ra|0)/2|0;za=k[k[$+(fa<<2)>>2]>>2]|0;if((za|0)==(ea|0)){Aa=fa;break}Ba=za>>>0<ea>>>0;ta=Ba?fa:ta;ra=Ba?ra:fa;if((ta+1|0)==(ra|0)){aa=68;break c}}while(1){if(!Aa){va=0;wa=X;xa=$;break f}ra=Aa+-1|0;if((k[k[$+(ra<<2)>>2]>>2]|0)==(ea|0))Aa=ra;else{Ca=Aa;break}}if((Ca|0)==-1){aa=68;break c}else{va=Ca;wa=X;xa=$}}while(0);ea=wa&65535;if(wa<<16>>16){ra=j[(k[xa+(va<<2)>>2]|0)+24>>1]|0;if(!(ra<<16>>16)){j[P>>1]=0;break}g:do if((ea|0)>=322){if((ea|0)<325)switch(ea|0){case 324:{aa=73;break g;break}case 322:case 323:{break g;break}default:break d}if((ea|0)<32997)switch(ea|0){case 325:{aa=73;break g;break}case 338:{break g;break}default:break d}else switch(ea|0){case 32998:case 32997:{break g;break}default:break d}}else switch(ea|0){case 279:case 273:{aa=73;break}case 278:case 284:case 257:case 256:break;default:break d}while(0);if((aa|0)==73){aa=0;ea=a+40+(((ra&65535)>>>5&65535)<<2)|0;k[ea>>2]=1<<(ra&31)|k[ea>>2];break}if(!(ic(a,P,0)|0))break b;j[P>>1]=0}}while(0);ia=ia+1<<16>>16;if((ia&65535)>=(Z&65535)){aa=77;break}else P=P+24|0}if((aa|0)==68)Ja(133153,133171,3535,132906);else if((aa|0)==77){P=a+88|0;h:do if((j[P>>1]|0)==6?(ia=a+126|0,(j[ia>>1]|0)==2):0){ja=k[Q>>2]|0;O=ja;da=0;while(1){if((j[O>>1]|0)==273){Da=O;break}da=da+1<<16>>16;if((da&65535)>=(Z&65535))break h;else O=O+24|0}if((Da|0)!=0?(O=Da+8|0,(k[O>>2]|0)==1&(k[O+4>>2]|0)==0):0){O=ja;da=0;while(1){if((j[O>>1]|0)==279){Ea=O;break}da=da+1<<16>>16;if((da&65535)>=(Z&65535))break h;else O=O+24|0}if((Ea|0)!=0?(O=Ea+8|0,(k[O>>2]|0)==1&(k[O+4>>2]|0)==0):0){j[ia>>1]=1;ie(k[a+628>>2]|0,132906,133185,H)}}}while(0);O=a+40|0;da=k[O>>2]|0;if(!(da&2)){ja=k[a+628>>2]|0;k[G>>2]=133331;vc(ja,133269,133285,G);break}if(!(da&4)){da=Jd(a)|0;k[a+68>>2]=k[a+56>>2];k[a+72>>2]=k[a+100>>2];k[a+76>>2]=k[a+64>>2];Fa=da;Ga=k[Y>>2]&-1025}else{da=be(a)|0;Fa=da;Ga=k[Y>>2]|1024}da=a+168|0;k[da>>2]=Fa;k[Y>>2]=Ga;if(!Fa){ja=k[a+628>>2]|0;k[F>>2]=(Ga&1024|0)!=0?133343:133349;vc(ja,132906,133356,F);break}ja=a+164|0;k[ja>>2]=Fa;ka=a+126|0;if((j[ka>>1]|0)==2)k[ja>>2]=(Fa>>>0)/((m[a+98>>1]|0)>>>0)|0;la=k[O>>2]|0;do if(!(la&33554432)){W=Ga&1024;if((j[P>>1]|0)==6&(W|0)==0)if((Fa|0)==1){k[O>>2]=la|33554432;break}else Ha=0;else Ha=W;W=k[a+628>>2]|0;k[E>>2]=(Ha|0)!=0?133388:133400;vc(W,133269,133285,E);break b}while(0);la=a+98|0;W=a+172|0;ba=a+176|0;ea=a+628|0;ta=a+84|0;ca=0;ga=0;fa=k[Q>>2]|0;i:while(1){Ba=j[fa>>1]|0;za=Ba&65535;j:do if((za|0)<301){switch(za|0){case 0:{Ia=ca;break j;break}case 258:case 281:case 280:{aa=105;break j;break}case 273:{aa=126;break j;break}case 279:{aa=127;break j;break}case 255:break;default:{aa=141;break j}}if((jc(a,fa,V)|0)==0?(Ka=j[V>>1]|0,La=Ka<<16>>16==2?1:Ka<<16>>16==3?2:0,(La|0)!=0):0){k[z>>2]=La;Ob(a,254,z)|0;Ia=ca}else Ia=ca}else{if((za|0)>=339){k:do if((za|0)>=341)if((za|0)<32996)switch(za|0){case 341:{break k;break}default:{aa=141;break j}}else switch(za|0){case 32996:{aa=105;break j;break}default:{aa=141;break j}}else switch(za|0){case 339:{aa=105;break j;break}case 340:break;default:{aa=141;break j}}while(0);ra=fa+8|0;if(!((k[ra+4>>2]|0)==0?(k[ra>>2]|0)==(m[la>>1]|0):0)){Ma=Ba;Na=1;break i}ra=mc(a,fa,T)|0;if(ra){Oa=ra;Pa=fa;aa=121;break i}ra=k[Y>>2]|0;k[Y>>2]=ra|4194304;La=m[fa>>1]|0;Ka=k[T>>2]|0;k[C>>2]=Ka;Qa=Ob(a,La,C)|0;k[Y>>2]=ra;ne(Ka);if(!Qa)break b;else{Ia=ca;break}}switch(za|0){case 324:{aa=126;break j;break}case 325:{aa=127;break j;break}case 301:case 320:break;default:{aa=141;break j}}k[U>>2]=0;if(!ca){Qa=cc(a,za)|0;Ka=k[ea>>2]|0;if(!Qa)Ra=133413;else Ra=k[Qa+28>>2]|0;k[B>>2]=Ra;ie(Ka,132906,133429,B);Ia=0;break}Ka=m[ta>>1]|0;Qa=1<<Ka;ra=fa+8|0;La=k[ra>>2]|0;Sa=k[ra+4>>2]|0;ra=Ba<<16>>16==301&((La|0)==(Qa|0)&(Sa|0)==0);Ta=ra?0:Qa;if((Sa|0)==0?(La|0)==((ra?Qa:3<<Ka)|0):0){Ka=kc(a,fa,U)|0;Qa=m[fa>>1]|0;if(!Ka){ra=k[U>>2]|0;k[A>>2]=ra;k[A+4>>2]=ra+(Ta<<1);k[A+8>>2]=ra+(Ta<<1<<1);Ob(a,Qa,A)|0;ne(ra);Ia=ca;break}else{Ua=Qa;Va=Ka}}else{Ua=za;Va=1}Ka=cc(a,Ua)|0;if(!Ka)Wa=133413;else Wa=k[Ka+28>>2]|0;lc(a,Va,132906,Wa,1);Ia=ca}while(0);if((aa|0)==105){aa=0;za=jc(a,fa,S)|0;if((za|0)==1){Ba=fa+8|0;ia=k[Ba+4>>2]|0;if(!(ia>>>0<0|((ia|0)==0?(k[Ba>>2]|0)>>>0<(m[la>>1]|0)>>>0:0))){Ba=kc(a,fa,N)|0;if(!Ba){ia=k[N>>2]|0;Ka=j[la>>1]|0;Qa=j[ia>>1]|0;j[S>>1]=Qa;ra=ia;Ta=Ka;while(1){Ta=Ta+-1<<16>>16;ra=ra+2|0;if(!(Ta<<16>>16)){Xa=0;break}if((j[ra>>1]|0)!=Qa<<16>>16){Xa=5;break}}ne(ia);Ya=Xa}else Ya=Ba}else Ya=1;Za=Ya}else Za=za;Qa=m[fa>>1]|0;if(Za){_a=Qa;$a=Za;aa=114;break}k[D>>2]=m[S>>1];if(!(Ob(a,Qa,D)|0))break b;Ia=(j[fa>>1]|0)==258?1:ca}else if((aa|0)==126){aa=0;if(!(nc(a,fa,k[da>>2]|0,W)|0))break b;else Ia=ca}else if((aa|0)==127){aa=0;if(!(nc(a,fa,k[da>>2]|0,ba)|0))break b;else Ia=ca}else if((aa|0)==141){aa=0;ic(a,fa,1)|0;Ia=ca}ga=ga+1<<16>>16;if((ga&65535)>=(Z&65535)){aa=143;break}else{ca=Ia;fa=fa+24|0}}if((aa|0)==114){fa=cc(a,_a)|0;if(!fa)ab=133413;else ab=k[fa+28>>2]|0;lc(a,$a,132906,ab,0);break}else if((aa|0)==121){Ma=j[Pa>>1]|0;Na=Oa}else if((aa|0)==143){l:do if((j[P>>1]|0)==6){if(!(k[O>>2]&256)){ie(k[a+628>>2]|0,132906,133475,y);k[x>>2]=6;if(!(Ob(a,262,x)|0))break b}else{fa=a+90|0;if((j[fa>>1]|0)==2){j[fa>>1]=6;ie(k[a+628>>2]|0,132906,133526,w)}}fa=k[O>>2]|0;if(!(fa&64)){ie(k[a+628>>2]|0,132906,133605,v);k[u>>2]=8;if(!(Ob(a,258,u)|0))break b;bb=k[O>>2]|0}else bb=fa;if(!(bb&65536)){fa=a+90|0;ca=j[fa>>1]|0;if(ca<<16>>16==2){ie(k[a+628>>2]|0,132906,133662,t);k[s>>2]=3;if(!(Ob(a,277,s)|0))break b;cb=j[fa>>1]|0}else cb=ca;switch(cb<<16>>16){case 6:{ie(k[a+628>>2]|0,132906,133738,q);k[p>>2]=3;if(!(Ob(a,277,p)|0))break b;else break l;break}case 1:case 0:{k[o>>2]=1;if(!(Ob(a,277,o)|0))break b;else break l;break}default:break l}}}while(0);ca=a+90|0;do if((j[ca>>1]|0)==3?(k[O>>2]&67108864|0)==0:0){if((m[a+84>>1]|0)<=7){fa=k[a+628>>2]|0;k[n>>2]=133814;vc(fa,133269,133285,n);break b}if((j[a+98>>1]|0)==3){j[ca>>1]=2;break}else{j[ca>>1]=1;break}}while(0);fa=j[P>>1]|0;m:do if(fa<<16>>16!=6){if(!(k[O>>2]&16777216)){switch(j[ka>>1]|0){case 1:{if((k[da>>2]|0)>>>0>1)aa=170;else aa=171;break}case 2:{if((k[da>>2]|0)==(m[a+98>>1]|0))aa=171;else aa=170;break}default:aa=171}if((aa|0)==170){ga=k[a+628>>2]|0;k[l>>2]=133823;vc(ga,133269,133285,l);break b}else if((aa|0)==171){ie(k[a+628>>2]|0,132906,133839,i);if((oc(a,k[Q>>2]|0,Z)|0)<0)break b;else break}}n:do if((k[da>>2]|0)==1?(ga=a+172|0,ba=k[ga>>2]|0,!((k[ba>>2]|0)==0&(k[ba+4>>2]|0)==0)):0){ba=a+176|0;W=k[ba>>2]|0;la=k[W>>2]|0;ta=k[W+4>>2]|0;do if(!((la|0)==0&(ta|0)==0)){if(fa<<16>>16==1?(W=ub[k[a+648>>2]&63](k[a+628>>2]|0)|0,ea=k[ga>>2]|0,Qa=pr(W|0,L|0,k[ea>>2]|0,k[ea+4>>2]|0)|0,ea=L,ta>>>0>ea>>>0|(ta|0)==(ea|0)&la>>>0>Qa>>>0):0)break;if(k[a+8>>2]|0)break n;if((j[P>>1]|0)!=1)break n;Qa=k[ba>>2]|0;ea=k[Qa>>2]|0;W=k[Qa+4>>2]|0;Qa=Ld(a)|0;ra=Dr(k[a+60>>2]|0,0,Qa|0,L|0)|0;Qa=L;if(!(W>>>0<Qa>>>0|(W|0)==(Qa|0)&ea>>>0<ra>>>0))break n}while(0);ie(k[a+628>>2]|0,132906,133928,h);if((oc(a,k[Q>>2]|0,Z)|0)<0)break b;else break m}while(0);if((j[ka>>1]|0)==1?(k[da>>2]|0)>>>0>2:0){if((j[P>>1]|0)!=1)break;za=k[a+176>>2]|0;Ba=za;ia=k[Ba>>2]|0;ba=k[Ba+4>>2]|0;Ba=za+8|0;za=k[Ba>>2]|0;la=k[Ba+4>>2]|0;if((za|0)==0&(la|0)==0|((ia|0)==0&(ba|0)==0|(ia|0)==(za|0)&(ba|0)==(la|0)))break;ie(k[a+628>>2]|0,132906,134001,g);if((oc(a,k[Q>>2]|0,Z)|0)<0)break b}}while(0);fa=k[Q>>2]|0;if(fa){ne(fa);k[Q>>2]=0}do if(!(k[O>>2]&524288)){fa=j[a+84>>1]|0;if((fa&65535)>15){j[a+106>>1]=-1;break}else{j[a+106>>1]=(1<<(fa&65535))+65535;break}}while(0);O=k[da>>2]|0;o:do if(O>>>0>1){fa=a+180|0;k[fa>>2]=1;la=k[a+172>>2]|0;ba=la;za=k[ba+4>>2]|0;ia=k[ba>>2]|0;ba=1;while(1){Ba=la+(ba<<3)|0;ta=ia;ia=k[Ba>>2]|0;ga=za;za=k[Ba+4>>2]|0;ba=ba+1|0;if(ga>>>0>za>>>0|(ga|0)==(za|0)&ta>>>0>ia>>>0)break;if(ba>>>0>=O>>>0)break o}k[fa>>2]=0}while(0);ub[k[a+504>>2]&63](a)|0;do if((j[ka>>1]|0)==1){if((k[da>>2]|0)!=1)break;if((j[P>>1]|0)!=1)break;O=k[Y>>2]|0;if((O&33792|0)!=32768)break;ba=a+176|0;ia=k[ba>>2]|0;if(!ia){_=0;r=b;return _|0}za=ia;ia=k[za>>2]|0;la=k[za+4>>2]|0;za=a+172|0;ta=k[za>>2]|0;ga=k[ta>>2]|0;Ba=k[ta+4>>2]|0;if((O&16384|0)==0&(j[ca>>1]|0)==6)db=m[a+194>>1]|0;else db=1;O=ee(a,db)|0;ta=L;if(ta>>>0>0|(ta|0)==0&O>>>0>8192){eb=O;fb=ta;gb=db}else{if((O|0)==0&(ta|0)==0)break;ra=Er(8192,0,O|0,ta|0)|0;ea=ha(ra,db)|0;Qa=Dr(ra|0,L|0,O|0,ta|0)|0;eb=Qa;fb=L;gb=ea}if(gb>>>0>=(k[a+100>>2]|0)>>>0)break;ea=sr(ia|0,la|0,-1,-1)|0;Qa=sr(ea|0,L|0,eb|0,fb|0)|0;ea=Er(Qa|0,L|0,eb|0,fb|0)|0;Qa=sr(ea|0,L|0,-1,-1)|0;ta=L;if(ta>>>0>0|(ta|0)==0&Qa>>>0>4294967294)break;Qa=Ee(a,ea,8,134074)|0;ta=Ee(a,ea,8,134110)|0;O=(Qa|0)==0;ra=(ta|0)==0;if(!(O|ra)){if(ea){W=fb;Ta=la;la=eb;Ka=ia;ia=ga;ga=Ba;Ba=0;while(1){La=W>>>0>Ta>>>0|(W|0)==(Ta|0)&la>>>0>Ka>>>0;la=La?Ka:la;W=La?Ta:W;La=Qa+(Ba<<3)|0;k[La>>2]=la;k[La+4>>2]=W;La=ta+(Ba<<3)|0;k[La>>2]=ia;k[La+4>>2]=ga;ia=sr(la|0,W|0,ia|0,ga|0)|0;ga=L;Ka=pr(Ka|0,Ta|0,la|0,W|0)|0;Ba=Ba+1|0;if((Ba|0)==(ea|0))break;else Ta=L}}k[da>>2]=ea;k[ja>>2]=ea;k[f>>2]=gb;Ob(a,278,f)|0;ne(k[ba>>2]|0);ne(k[za>>2]|0);k[ba>>2]=Qa;k[za>>2]=ta;k[a+180>>2]=1;break}if(!O)ne(Qa);if(ra)break;ne(ta)}while(0);k[Y>>2]=k[Y>>2]&-2097161;k[a+444>>2]=-1;k[a+452>>2]=-1;k[a+488>>2]=-1;k[a+492>>2]=-1;ja=a+496|0;k[ja>>2]=-1;da=Pd(a)|0;k[a+580>>2]=da;if(!da){vc(k[a+628>>2]|0,132906,134143,e);_=0;r=b;return _|0}if(!(k[Y>>2]&1024)){if(Nd(a)|0){_=1;r=b;return _|0}vc(k[a+628>>2]|0,132906,134205,c);_=0;r=b;return _|0}else{da=ge(a)|0;k[ja>>2]=da;if(da){_=1;r=b;return _|0}vc(k[a+628>>2]|0,132906,134176,d);_=0;r=b;return _|0}}da=cc(a,Ma&65535)|0;if(!da)hb=133413;else hb=k[da+28>>2]|0;lc(a,Na,132906,hb,0);break}}while(0);hb=k[Q>>2]|0;if(!hb){_=0;r=b;return _|0}ne(hb);_=0;r=b;return _|0}function gc(a){a=a|0;return 1}function hc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;f=r;r=r+128|0;g=f+112|0;h=f+104|0;n=f+96|0;o=f+88|0;p=f+80|0;q=f+72|0;s=f+64|0;t=f+56|0;u=f+48|0;v=f+40|0;w=f+32|0;x=f+24|0;y=f+16|0;z=f+124|0;A=f+8|0;B=f+120|0;C=f;D=f+116|0;if(!d)Ja(135626,133171,4453,135631);E=a+16|0;F=E;k[F>>2]=b;k[F+4>>2]=c;c=(e|0)!=0;if(c){F=e;k[F>>2]=0;k[F+4>>2]=0}F=a+12|0;b=k[F>>2]|0;do if(!(b&2048)){G=a+628|0;H=E;I=xb[k[a+640>>2]&63](k[G>>2]|0,k[H>>2]|0,k[H+4>>2]|0,0)|0;H=E;if(!((I|0)==(k[H>>2]|0)?(L|0)==(k[H+4>>2]|0):0)){H=k[G>>2]|0;k[y>>2]=k[a>>2];vc(H,135631,140644,y);J=0;r=f;return J|0}H=a+632|0;I=k[H>>2]|0;K=k[G>>2]|0;do if(!(k[F>>2]&524288)){if((nb[I&63](K,z,2)|0)!=2){M=k[G>>2]|0;k[x>>2]=k[a>>2];vc(M,135631,140684,x);J=0;r=f;return J|0}if(k[F>>2]&128)Qd(z);M=j[z>>1]|0;if((M&65535)>4096){vc(k[G>>2]|0,135631,135650,w);J=0;r=f;return J|0}else{N=M;O=12}}else{if((nb[I&63](K,A,8)|0)!=8){M=k[G>>2]|0;k[v>>2]=k[a>>2];vc(M,135631,140684,v);J=0;r=f;return J|0}if(k[F>>2]&128)Sd(A);M=A;P=k[M>>2]|0;Q=k[M+4>>2]|0;if(!(Q>>>0>0|(Q|0)==0&P>>>0>4096)){Q=P&65535;j[z>>1]=Q;N=Q;O=20;break}vc(k[G>>2]|0,135631,135650,u);J=0;r=f;return J|0}while(0);K=Ee(a,N&65535,O,135730)|0;if(!K){J=0;r=f;return J|0}I=ha(m[z>>1]|0,O)|0;Q=nb[k[H>>2]&63](k[G>>2]|0,K,I)|0;if((Q|0)!=(ha(m[z>>1]|0,O)|0)){Q=k[G>>2]|0;k[t>>2]=k[a>>2];vc(Q,135631,135753,t);ne(K);J=0;r=f;return J|0}if(c){Q=k[H>>2]|0;I=k[G>>2]|0;if(k[F>>2]&524288){if((nb[Q&63](I,e,8)|0)!=8){P=e;k[P>>2]=0;k[P+4>>2]=0}if(!(k[F>>2]&128)){R=K;break}Sd(e);R=K;break}if((nb[Q&63](I,B,4)|0)!=4)k[B>>2]=0;if(k[F>>2]&128)Rd(B);I=e;k[I>>2]=k[B>>2];k[I+4>>2]=0;R=K}else R=K}else{K=E;I=k[K>>2]|0;if(!((I|0)==(I|0)?(((I|0)<0)<<31>>31|0)==(k[K+4>>2]|0):0)){vc(k[a+628>>2]|0,135631,135789,s);J=0;r=f;return J|0}do if(!(b&524288)){K=I+2|0;if(!((I|0)>2147483645|(K|0)<2)?(K|0)<=(k[a+616>>2]|0):0){qe(z,(k[a+612>>2]|0)+I|0,2);if(k[F>>2]&128)Qd(z);Q=j[z>>1]|0;if((Q&65535)<=4096){S=Q;T=12;U=K;break}vc(k[a+628>>2]|0,135631,135650,p);J=0;r=f;return J|0}vc(k[a+628>>2]|0,135631,135789,q);J=0;r=f;return J|0}else{K=I+8|0;if(!((I|0)>2147483639|(K|0)<8)?(K|0)<=(k[a+616>>2]|0):0){qe(C,(k[a+612>>2]|0)+I|0,8);if(k[F>>2]&128)Sd(C);Q=C;P=k[Q>>2]|0;M=k[Q+4>>2]|0;if(!(M>>>0>0|(M|0)==0&P>>>0>4096)){M=P&65535;j[z>>1]=M;S=M;T=20;U=K;break}vc(k[a+628>>2]|0,135631,135650,n);J=0;r=f;return J|0}vc(k[a+628>>2]|0,135631,135789,o);J=0;r=f;return J|0}while(0);if(!(S<<16>>16)){vc(k[a+628>>2]|0,135631,135823,h);J=0;r=f;return J|0}I=Ee(a,S&65535,T,135730)|0;if(!I){J=0;r=f;return J|0}G=ha(m[z>>1]|0,T)|0;H=G+U|0;if(!((H|0)<(U|0)|(H|0)<(G|0))?(K=a+616|0,(H|0)<=(k[K>>2]|0)):0){H=a+612|0;qe(I,(k[H>>2]|0)+U|0,G);if(!c){R=I;break}G=(ha(m[z>>1]|0,T)|0)+U|0;M=k[F>>2]|0;if(M&524288){P=G+8|0;if(!((G|0)>2147483639|(P|0)<8)?(P|0)<=(k[K>>2]|0):0){qe(e,(k[H>>2]|0)+G|0,8);V=k[F>>2]|0}else{P=e;k[P>>2]=0;k[P+4>>2]=0;V=M}if(!(V&128)){R=I;break}Sd(e);R=I;break}P=G+4|0;if(!((G|0)>2147483643|(P|0)<4)?(P|0)<=(k[K>>2]|0):0){qe(D,(k[H>>2]|0)+G|0,4);W=k[F>>2]|0}else{k[D>>2]=0;W=M}if(W&128)Rd(D);M=e;k[M>>2]=k[D>>2];k[M+4>>2]=0;R=I;break}vc(k[a+628>>2]|0,135631,135898,g);ne(I);J=0;r=f;return J|0}while(0);g=Ee(a,m[z>>1]|0,24,135730)|0;if(!g){ne(R);J=0;r=f;return J|0}if(j[z>>1]|0){a=R;D=g;e=0;while(1){W=k[F>>2]|0;if(!(W&128))X=W;else{Qd(a);X=k[F>>2]|0}j[D>>1]=j[a>>1]|0;W=a+2|0;if(!(X&128))Y=X;else{Qd(W);Y=k[F>>2]|0}j[D+2>>1]=j[W>>1]|0;W=a+4|0;V=(Y&128|0)!=0;if(!(Y&524288)){if(V)Rd(W);U=D+8|0;k[U>>2]=k[W>>2];k[U+4>>2]=0;k[D+16>>2]=k[a+8>>2];Z=a+12|0}else{if(V)Sd(W);V=i[W>>0]|0;W=i[a+5>>0]|0;U=i[a+6>>0]|0;T=i[a+7>>0]|0;c=i[a+8>>0]|0;S=i[a+9>>0]|0;h=i[a+10>>0]|0;o=rr(l[a+11>>0]|0,0,56)|0;n=L;C=rr(h&255|0,0,48)|0;h=L;q=rr(S&255|0,0,40)|0;S=L;p=rr(T&255|0,0,24)|0;T=L;b=rr(U&255|0,0,16)|0;U=L;s=rr(W&255|0,0,8)|0;W=D+8|0;k[W>>2]=s|V&255|b|p|q|C|o;k[W+4>>2]=L|U|T|c&255|S|h|n;n=i[a+12>>0]|0;h=i[a+13>>0]|0;S=i[a+14>>0]|0;c=i[a+15>>0]|0;T=i[a+16>>0]|0;U=i[a+17>>0]|0;W=i[a+18>>0]|0;o=rr(l[a+19>>0]|0,0,56)|0;C=L;q=rr(W&255|0,0,48)|0;W=L;p=rr(U&255|0,0,40)|0;U=L;b=rr(c&255|0,0,24)|0;c=L;V=rr(S&255|0,0,16)|0;S=L;s=rr(h&255|0,0,8)|0;h=D+16|0;k[h>>2]=s|n&255|V|b|p|q|o;k[h+4>>2]=L|S|c|T&255|U|W|C;Z=a+20|0}e=e+1<<16>>16;if((e&65535)>=(m[z>>1]|0))break;else{a=Z;D=D+24|0}}}ne(R);k[d>>2]=g;J=j[z>>1]|0;r=f;return J|0}function ic(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,q=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0.0,bc=0,cc=0,dc=0,ec=0.0,fc=0,gc=0,hc=0,ic=0,nc=0,oc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0.0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0.0,Oc=0.0,Pc=0,Qc=0,Rc=0,Sc=0,Tc=0,Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=0,_c=0,$c=0,ad=0,bd=0,cd=0,dd=0,ed=0,fd=0,gd=0,hd=0,id=0,jd=0,kd=0,ld=0,md=0,nd=0,od=0;d=r;r=r+496|0;e=d+376|0;f=d+368|0;g=d+360|0;h=d+352|0;n=d+344|0;q=d+336|0;s=d+328|0;u=d+320|0;v=d+312|0;w=d+304|0;x=d+296|0;y=d+288|0;z=d+280|0;A=d+272|0;B=d+264|0;C=d+256|0;D=d+248|0;E=d+240|0;F=d+232|0;G=d+224|0;H=d+216|0;I=d+208|0;J=d+200|0;K=d+192|0;M=d+176|0;N=d+168|0;O=d+160|0;P=d+152|0;Q=d+144|0;R=d+136|0;S=d+128|0;T=d+120|0;U=d+112|0;V=d+104|0;W=d+96|0;X=d+88|0;Y=d+80|0;Z=d+72|0;_=d+64|0;$=d+484|0;aa=d+488|0;ba=d+456|0;ca=d+32|0;da=d+24|0;ea=d+16|0;fa=d+8|0;ga=d;ha=d+480|0;ia=d+490|0;ja=d+476|0;ka=d+56|0;la=d+472|0;ma=d+48|0;na=d+40|0;oa=d+468|0;pa=d+464|0;qa=d+460|0;ra=d+452|0;sa=d+448|0;ta=d+444|0;ua=d+440|0;va=d+436|0;wa=d+432|0;xa=d+428|0;ya=d+424|0;za=d+420|0;Aa=d+416|0;Ba=d+412|0;Ca=d+408|0;Da=d+404|0;Ea=d+400|0;Fa=d+396|0;Ga=d+392|0;Ha=d+388|0;Ia=d+384|0;Ka=k[a+660>>2]|0;La=j[b>>1]|0;a:do if(Ka){Ma=k[a+656>>2]|0;Na=La&65535;Oa=-1;Pa=Ka;while(1){Qa=(Oa+Pa|0)/2|0;Ra=k[k[Ma+(Qa<<2)>>2]>>2]|0;if((Ra|0)==(Na|0)){Sa=Qa;break}Ta=Ra>>>0<Na>>>0;Oa=Ta?Qa:Oa;Pa=Ta?Pa:Qa;if((Oa+1|0)==(Pa|0))break a}while(1){if(!Sa){Ua=0;break}Pa=Sa+-1|0;if((k[k[Ma+(Pa<<2)>>2]>>2]|0)==(Na|0))Sa=Pa;else{Va=Sa;Wa=7;break}}if((Wa|0)==7)if((Va|0)==-1)break;else Ua=Va;Na=k[Ma+(Ua<<2)>>2]|0;if(!Na)Ja(135060,133171,4711,135010);b:do switch(k[Na+16>>2]|0){case 51:{Ja(135072,133171,4712,135010);break}case 13:{Ja(135111,133171,4713,135010);break}case 0:{Wa=835;break}case 1:{if(i[Na+27>>0]|0)Ja(135148,133171,4722,135010);Pa=rc(a,b,ha)|0;if(!Pa){Oa=b+8|0;Qa=k[Oa>>2]|0;c:do if(!Qa)Xa=0;else{Ta=k[ha>>2]|0;Ra=0;while(1){if(!(i[Ta>>0]|0)){Xa=Ra;break c}Ya=Ra+1|0;if(Ya>>>0<Qa>>>0){Ta=Ta+1|0;Ra=Ya}else{Xa=Ya;break}}}while(0);Ra=Xa+1|0;do if(Ra>>>0>=Qa>>>0)if(Ra>>>0>Qa>>>0){Ta=k[a+628>>2]|0;k[X>>2]=k[Na+28>>2];ie(Ta,135010,135303,X);Ta=Oa;Ya=k[Ta>>2]|0;Za=Ya+1|0;_a=sr(Ya|0,k[Ta+4>>2]|0,1,0)|0;if((Za|0)==(_a|0)&0==(L|0)){_a=me(Za)|0;Za=k[ha>>2]|0;if(!_a)$a=Za;else{qe(_a,Za,k[Oa>>2]|0);i[_a+(k[Oa>>2]|0)>>0]=0;if(Za)ne(Za);k[ha>>2]=_a;ab=_a;break}}else $a=k[ha>>2]|0;if(!$a){bb=0;r=d;return bb|0}ne($a);bb=0;r=d;return bb|0}else Wa=32;else{_a=k[a+628>>2]|0;k[Y>>2]=k[Na+28>>2];ie(_a,135010,135172,Y);Wa=32}while(0);if((Wa|0)==32)ab=k[ha>>2]|0;Oa=m[b>>1]|0;k[W>>2]=ab;Qa=Ob(a,Oa,W)|0;if(ab)ne(ab);if(!Qa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Pa;Wa=837}break}case 2:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4771,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4772,135010);Qa=b+8|0;d:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0)switch(m[b+2>>1]|0){case 1:{db=0;eb=i[b+16>>0]|0;break d;break}case 6:{Oa=i[b+16>>0]|0;Ra=Oa<<24>>24>-1;db=Ra?0:4;eb=Ra?Oa:0;break d;break}case 3:{Oa=k[a+12>>2]|0;Ra=j[b+16>>1]|0;j[$>>1]=Ra;if(!(Oa&128))fb=Ra;else{Qd($);fb=j[$>>1]|0}Ra=(fb&65535)<256;db=Ra?0:4;eb=Ra?fb&255:0;break d;break}case 8:{Ra=k[a+12>>2]|0;Oa=j[b+16>>1]|0;j[aa>>1]=Oa;if(!(Ra&128))gb=Oa;else{Qd(aa);gb=j[aa>>1]|0}Oa=(gb&65535)<256;db=Oa?0:4;eb=Oa?gb&255:0;break d;break}case 4:{Oa=k[b+16>>2]|0;k[ba>>2]=Oa;if(!(k[a+12>>2]&128))hb=Oa;else{Rd(ba);hb=k[ba>>2]|0}Oa=hb>>>0<256;db=Oa?0:4;eb=Oa?hb&255:0;break d;break}case 9:{Oa=k[b+16>>2]|0;k[ca>>2]=Oa;if(!(k[a+12>>2]&128))ib=Oa;else{Rd(ca);ib=k[ca>>2]|0}Oa=ib>>>0<256;db=Oa?0:4;eb=Oa?ib&255:0;break d;break}case 16:{Oa=a+12|0;Ra=k[Oa>>2]|0;_a=b+16|0;do if(!(Ra&524288)){Za=k[_a>>2]|0;k[_>>2]=Za;if(!(Ra&128)){jb=Ra;kb=Za}else{Rd(_);jb=k[Oa>>2]|0;kb=k[_>>2]|0}if(!(jb&2048)){Za=a+628|0;Ta=xb[k[a+640>>2]&63](k[Za>>2]|0,kb,0,0)|0;if((Ta|0)==(kb|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Za>>2]|0,da,8)|0)==8:0)Wa=65;else Wa=69}else if(kb>>>0<=4294967287?(kb+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(da,(k[a+612>>2]|0)+kb|0,8);Wa=65}else Wa=69;if((Wa|0)==65){lb=k[Oa>>2]|0;break}else if((Wa|0)==69){db=3;eb=0;break d}}else{Za=_a;Ta=k[Za+4>>2]|0;Ya=da;k[Ya>>2]=k[Za>>2];k[Ya+4>>2]=Ta;lb=Ra}while(0);if(lb&128)Sd(da);Ra=da;_a=k[Ra>>2]|0;Oa=k[Ra+4>>2]|0;Ra=Oa>>>0<0|(Oa|0)==0&_a>>>0<256;db=Ra?0:4;eb=Ra?_a&255:0;break d;break}case 17:{_a=a+12|0;Ra=k[_a>>2]|0;Oa=b+16|0;do if(!(Ra&524288)){Ta=k[Oa>>2]|0;k[_>>2]=Ta;if(!(Ra&128)){mb=Ra;ob=Ta}else{Rd(_);mb=k[_a>>2]|0;ob=k[_>>2]|0}if(!(mb&2048)){Ta=a+628|0;Ya=xb[k[a+640>>2]&63](k[Ta>>2]|0,ob,0,0)|0;if((Ya|0)==(ob|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Ta>>2]|0,ea,8)|0)==8:0)Wa=80;else Wa=84}else if(ob>>>0<=4294967287?(ob+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(ea,(k[a+612>>2]|0)+ob|0,8);Wa=80}else Wa=84;if((Wa|0)==80){pb=k[_a>>2]|0;break}else if((Wa|0)==84){db=3;eb=0;break d}}else{Ta=Oa;Ya=k[Ta+4>>2]|0;Za=ea;k[Za>>2]=k[Ta>>2];k[Za+4>>2]=Ya;pb=Ra}while(0);if(pb&128)Sd(ea);Ra=ea;Oa=k[Ra>>2]|0;_a=k[Ra+4>>2]|0;Ra=_a>>>0<0|(_a|0)==0&Oa>>>0<256;db=Ra?0:4;eb=Ra?Oa&255:0;break d;break}default:{db=2;eb=0;break d}}else{db=1;eb=0}while(0);if(!db){Qa=m[b>>1]|0;k[V>>2]=eb&255;if(!(Ob(a,Qa,V)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=db;Wa=837}break}case 4:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4784,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4785,135010);Qa=jc(a,b,ia)|0;if(!Qa){Pa=m[b>>1]|0;k[U>>2]=m[ia>>1];if(!(Ob(a,Pa,U)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=Qa;Wa=837}break}case 6:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4797,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4798,135010);Qa=b+8|0;e:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0)switch(m[b+2>>1]|0){case 1:{k[ja>>2]=l[b+16>>0];qb=0;break e;break}case 6:{Pa=i[b+16>>0]|0;if(Pa<<24>>24<=-1){qb=4;break e}k[ja>>2]=Pa<<24>>24;qb=0;break e;break}case 3:{Pa=k[a+12>>2]|0;Oa=j[b+16>>1]|0;j[$>>1]=Oa;if(!(Pa&128))rb=Oa;else{Qd($);rb=j[$>>1]|0}k[ja>>2]=rb&65535;qb=0;break e;break}case 8:{Oa=k[a+12>>2]|0;Pa=j[b+16>>1]|0;j[aa>>1]=Pa;if(!(Oa&128))sb=Pa;else{Qd(aa);sb=j[aa>>1]|0}if(sb<<16>>16<=-1){qb=4;break e}k[ja>>2]=sb<<16>>16;qb=0;break e;break}case 4:{k[ja>>2]=k[b+16>>2];if(!(k[a+12>>2]&128)){qb=0;break e}Rd(ja);qb=0;break e;break}case 9:{Pa=k[b+16>>2]|0;k[ba>>2]=Pa;if(!(k[a+12>>2]&128))tb=Pa;else{Rd(ba);tb=k[ba>>2]|0}Pa=tb>>31&4;if(Pa){qb=Pa;break e}k[ja>>2]=tb;qb=0;break e;break}case 16:{Pa=a+12|0;Oa=k[Pa>>2]|0;Ra=b+16|0;do if(!(Oa&524288)){_a=k[Ra>>2]|0;k[_>>2]=_a;if(!(Oa&128)){ub=Oa;vb=_a}else{Rd(_);ub=k[Pa>>2]|0;vb=k[_>>2]|0}if(!(ub&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,vb,0,0)|0;if((Ya|0)==(vb|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[_a>>2]|0,ca,8)|0)==8:0)Wa=125;else Wa=129}else if(vb>>>0<=4294967287?(vb+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(ca,(k[a+612>>2]|0)+vb|0,8);Wa=125}else Wa=129;if((Wa|0)==125){wb=k[Pa>>2]|0;break}else if((Wa|0)==129){qb=3;break e}}else{_a=Ra;Ya=k[_a+4>>2]|0;Za=ca;k[Za>>2]=k[_a>>2];k[Za+4>>2]=Ya;wb=Oa}while(0);if(wb&128)Sd(ca);Oa=ca;Ra=k[Oa>>2]|0;Pa=k[Oa+4>>2]|0;if(!(Pa>>>0<1|(Pa|0)==1&Ra>>>0<0)){qb=4;break e}k[ja>>2]=Ra;qb=0;break e;break}case 17:{Ra=a+12|0;Pa=k[Ra>>2]|0;Oa=b+16|0;do if(!(Pa&524288)){Ya=k[Oa>>2]|0;k[_>>2]=Ya;if(!(Pa&128)){yb=Pa;zb=Ya}else{Rd(_);yb=k[Ra>>2]|0;zb=k[_>>2]|0}if(!(yb&2048)){Ya=a+628|0;Za=xb[k[a+640>>2]&63](k[Ya>>2]|0,zb,0,0)|0;if((Za|0)==(zb|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Ya>>2]|0,da,8)|0)==8:0)Wa=141;else Wa=145}else if(zb>>>0<=4294967287?(zb+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(da,(k[a+612>>2]|0)+zb|0,8);Wa=141}else Wa=145;if((Wa|0)==141){Ab=k[Ra>>2]|0;break}else if((Wa|0)==145){qb=3;break e}}else{Ya=Oa;Za=k[Ya+4>>2]|0;_a=da;k[_a>>2]=k[Ya>>2];k[_a+4>>2]=Za;Ab=Pa}while(0);if(Ab&128)Sd(da);Pa=da;Oa=k[Pa>>2]|0;Ra=k[Pa+4>>2]|0;if(!(Ra>>>0<1|(Ra|0)==1&Oa>>>0<0)){qb=4;break e}k[ja>>2]=Oa;qb=0;break e;break}default:{qb=2;break e}}else qb=1;while(0);if(!qb){Qa=m[b>>1]|0;k[T>>2]=k[ja>>2];if(!(Ob(a,Qa,T)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=qb;Wa=837}break}case 8:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4810,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4811,135010);Qa=b+8|0;f:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0)switch(m[b+2>>1]|0){case 1:{Oa=ka;k[Oa>>2]=l[b+16>>0];k[Oa+4>>2]=0;Bb=0;break f;break}case 6:{Oa=i[b+16>>0]|0;if(Oa<<24>>24<=-1){Bb=4;break f}Ra=Oa<<24>>24;Oa=ka;k[Oa>>2]=Ra;k[Oa+4>>2]=((Ra|0)<0)<<31>>31;Bb=0;break f;break}case 3:{Ra=k[a+12>>2]|0;Oa=j[b+16>>1]|0;j[$>>1]=Oa;if(!(Ra&128))Cb=Oa;else{Qd($);Cb=j[$>>1]|0}Oa=ka;k[Oa>>2]=Cb&65535;k[Oa+4>>2]=0;Bb=0;break f;break}case 8:{Oa=k[a+12>>2]|0;Ra=j[b+16>>1]|0;j[aa>>1]=Ra;if(!(Oa&128))Db=Ra;else{Qd(aa);Db=j[aa>>1]|0}if(Db<<16>>16<=-1){Bb=4;break f}Ra=Db<<16>>16;Oa=ka;k[Oa>>2]=Ra;k[Oa+4>>2]=((Ra|0)<0)<<31>>31;Bb=0;break f;break}case 4:{Ra=k[b+16>>2]|0;k[ba>>2]=Ra;if(!(k[a+12>>2]&128))Eb=Ra;else{Rd(ba);Eb=k[ba>>2]|0}Ra=ka;k[Ra>>2]=Eb;k[Ra+4>>2]=0;Bb=0;break f;break}case 9:{Ra=k[b+16>>2]|0;k[ca>>2]=Ra;if(!(k[a+12>>2]&128))Fb=Ra;else{Rd(ca);Fb=k[ca>>2]|0}Ra=Fb>>31&4;if(Ra){Bb=Ra;break f}Ra=ka;k[Ra>>2]=Fb;k[Ra+4>>2]=((Fb|0)<0)<<31>>31;Bb=0;break f;break}case 16:{Ra=a+12|0;Oa=k[Ra>>2]|0;Pa=b+16|0;do if(!(Oa&524288)){Za=k[Pa>>2]|0;k[_>>2]=Za;if(!(Oa&128)){Gb=Oa;Hb=Za}else{Rd(_);Gb=k[Ra>>2]|0;Hb=k[_>>2]|0}if(!(Gb&2048)){Za=a+628|0;_a=xb[k[a+640>>2]&63](k[Za>>2]|0,Hb,0,0)|0;if(!((_a|0)==(Hb|0)&(L|0)==0)){Ib=3;break}if((nb[k[a+632>>2]&63](k[Za>>2]|0,ka,8)|0)!=8){Ib=3;break}}else{if(Hb>>>0>4294967287){Ib=3;break}if((Hb+8|0)>>>0>(k[a+616>>2]|0)>>>0){Ib=3;break}qe(ka,(k[a+612>>2]|0)+Hb|0,8)}Jb=k[Ra>>2]|0;Wa=184}else{Za=Pa;_a=k[Za+4>>2]|0;Ya=ka;k[Ya>>2]=k[Za>>2];k[Ya+4>>2]=_a;Jb=Oa;Wa=184}while(0);if((Wa|0)==184)if(!(Jb&128))Ib=0;else{Sd(ka);Ib=0}Bb=Ib;break f;break}case 17:{Oa=a+12|0;Pa=k[Oa>>2]|0;Ra=b+16|0;do if(!(Pa&524288)){_a=k[Ra>>2]|0;k[_>>2]=_a;if(!(Pa&128)){Kb=Pa;Lb=_a}else{Rd(_);Kb=k[Oa>>2]|0;Lb=k[_>>2]|0}if(!(Kb&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,Lb,0,0)|0;if((Ya|0)==(Lb|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[_a>>2]|0,da,8)|0)==8:0)Wa=196;else Wa=200}else if(Lb>>>0<=4294967287?(Lb+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(da,(k[a+612>>2]|0)+Lb|0,8);Wa=196}else Wa=200;if((Wa|0)==196){Mb=k[Oa>>2]|0;break}else if((Wa|0)==200){Bb=3;break f}}else{_a=Ra;Ya=k[_a+4>>2]|0;Za=da;k[Za>>2]=k[_a>>2];k[Za+4>>2]=Ya;Mb=Pa}while(0);if(Mb&128)Sd(da);Pa=da;Ra=k[Pa>>2]|0;Oa=k[Pa+4>>2]|0;if(!((Oa|0)>-1|(Oa|0)==-1&Ra>>>0>4294967295)){Bb=4;break f}Pa=ka;k[Pa>>2]=Ra;k[Pa+4>>2]=Oa;Bb=0;break f;break}default:{Bb=2;break f}}else Bb=1;while(0);if(!Bb){Qa=m[b>>1]|0;Oa=ka;Pa=k[Oa+4>>2]|0;Ra=S;k[Ra>>2]=k[Oa>>2];k[Ra+4>>2]=Pa;if(!(Ob(a,Qa,S)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=Bb;Wa=837}break}case 10:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4823,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4824,135010);Qa=b+8|0;g:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0)do switch(m[b+2>>1]|0){case 1:{o[la>>2]=+(l[b+16>>0]|0);Nb=0;break g;break}case 6:{o[la>>2]=+(i[b+16>>0]|0);Nb=0;break g;break}case 3:{Pa=k[a+12>>2]|0;Ra=j[b+16>>1]|0;j[aa>>1]=Ra;if(!(Pa&128))Pb=Ra;else{Qd(aa);Pb=j[aa>>1]|0}o[la>>2]=+(Pb&65535);Nb=0;break g;break}case 8:{Ra=k[a+12>>2]|0;Pa=j[b+16>>1]|0;j[ba>>1]=Pa;if(!(Ra&128))Qb=Pa;else{Qd(ba);Qb=j[ba>>1]|0}o[la>>2]=+(Qb<<16>>16);Nb=0;break g;break}case 4:{Pa=k[b+16>>2]|0;k[ca>>2]=Pa;if(!(k[a+12>>2]&128))Rb=Pa;else{Rd(ca);Rb=k[ca>>2]|0}o[la>>2]=+(Rb>>>0);Nb=0;break g;break}case 9:{Pa=k[b+16>>2]|0;k[da>>2]=Pa;if(!(k[a+12>>2]&128))Sb=Pa;else{Rd(da);Sb=k[da>>2]|0}o[la>>2]=+(Sb|0);Nb=0;break g;break}case 16:{Pa=a+12|0;Ra=k[Pa>>2]|0;Oa=b+16|0;do if(!(Ra&524288)){Ya=k[Oa>>2]|0;k[_>>2]=Ya;if(!(Ra&128)){Tb=Ra;Ub=Ya}else{Rd(_);Tb=k[Pa>>2]|0;Ub=k[_>>2]|0}if(!(Tb&2048)){Ya=a+628|0;Za=xb[k[a+640>>2]&63](k[Ya>>2]|0,Ub,0,0)|0;if((Za|0)==(Ub|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Ya>>2]|0,ea,8)|0)==8:0)Wa=234;else Wa=238}else if(Ub>>>0<=4294967287?(Ub+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(ea,(k[a+612>>2]|0)+Ub|0,8);Wa=234}else Wa=238;if((Wa|0)==234){Vb=k[Pa>>2]|0;break}else if((Wa|0)==238){Nb=3;break g}}else{Ya=Oa;Za=k[Ya+4>>2]|0;_a=ea;k[_a>>2]=k[Ya>>2];k[_a+4>>2]=Za;Vb=Ra}while(0);if(Vb&128)Sd(ea);Ra=ea;o[la>>2]=+((k[Ra>>2]|0)>>>0)+4294967296.0*+((k[Ra+4>>2]|0)>>>0);Nb=0;break g;break}case 17:{Ra=a+12|0;Oa=k[Ra>>2]|0;Pa=b+16|0;do if(!(Oa&524288)){Za=k[Pa>>2]|0;k[_>>2]=Za;if(!(Oa&128)){Wb=Oa;Xb=Za}else{Rd(_);Wb=k[Ra>>2]|0;Xb=k[_>>2]|0}if(!(Wb&2048)){Za=a+628|0;_a=xb[k[a+640>>2]&63](k[Za>>2]|0,Xb,0,0)|0;if((_a|0)==(Xb|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Za>>2]|0,fa,8)|0)==8:0)Wa=249;else Wa=253}else if(Xb>>>0<=4294967287?(Xb+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(fa,(k[a+612>>2]|0)+Xb|0,8);Wa=249}else Wa=253;if((Wa|0)==249){Yb=k[Ra>>2]|0;break}else if((Wa|0)==253){Nb=3;break g}}else{Za=Pa;_a=k[Za+4>>2]|0;Ya=fa;k[Ya>>2]=k[Za>>2];k[Ya+4>>2]=_a;Yb=Oa}while(0);if(Yb&128)Sd(fa);Oa=fa;o[la>>2]=+((k[Oa>>2]|0)>>>0)+4294967296.0*+(k[Oa+4>>2]|0);Nb=0;break g;break}case 5:{Oa=a+12|0;Pa=k[Oa>>2]|0;Ra=b+16|0;do if(!(Pa&524288)){_a=k[Ra>>2]|0;k[$>>2]=_a;if(!(Pa&128)){Zb=Pa;_b=_a}else{Rd($);Zb=k[Oa>>2]|0;_b=k[$>>2]|0}if(!(Zb&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,_b,0,0)|0;if((Ya|0)==(_b|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[_a>>2]|0,_,8)|0)==8:0)Wa=264;else Wa=270}else if(_b>>>0<=4294967287?(_b+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(_,(k[a+612>>2]|0)+_b|0,8);Wa=264}else Wa=270;if((Wa|0)==264){$b=k[Oa>>2]|0;break}else if((Wa|0)==270){Nb=3;break g}}else{_a=Ra;Ya=k[_a+4>>2]|0;Za=_;k[Za>>2]=k[_a>>2];k[Za+4>>2]=Ya;$b=Pa}while(0);if($b&128)Vd(_,2);Pa=k[_>>2]|0;if(!Pa)ac=0.0;else ac=+(Pa>>>0)/+((k[_+4>>2]|0)>>>0);o[la>>2]=ac;Nb=0;break g;break}case 10:{Pa=a+12|0;Ra=k[Pa>>2]|0;Oa=b+16|0;do if(!(Ra&524288)){Ya=k[Oa>>2]|0;k[$>>2]=Ya;if(!(Ra&128)){bc=Ra;cc=Ya}else{Rd($);bc=k[Pa>>2]|0;cc=k[$>>2]|0}if(!(bc&2048)){Ya=a+628|0;Za=xb[k[a+640>>2]&63](k[Ya>>2]|0,cc,0,0)|0;if((Za|0)==(cc|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Ya>>2]|0,_,8)|0)==8:0)Wa=281;else Wa=287}else if(cc>>>0<=4294967287?(cc+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(_,(k[a+612>>2]|0)+cc|0,8);Wa=281}else Wa=287;if((Wa|0)==281){dc=k[Pa>>2]|0;break}else if((Wa|0)==287){Nb=3;break g}}else{Ya=Oa;Za=k[Ya+4>>2]|0;_a=_;k[_a>>2]=k[Ya>>2];k[_a+4>>2]=Za;dc=Ra}while(0);if(dc&128)Vd(_,2);Ra=k[_>>2]|0;if(!Ra)ec=0.0;else ec=+(Ra|0)/+((k[_+4>>2]|0)>>>0);o[la>>2]=ec;Nb=0;break g;break}case 11:{Ra=k[a+12>>2]|0;k[la>>2]=k[b+16>>2];if(!(Ra&128)){Nb=0;break g}Rd(la);Nb=0;break g;break}case 12:{Ra=a+12|0;Oa=k[Ra>>2]|0;Pa=b+16|0;do if(!(Oa&524288)){Za=k[Pa>>2]|0;k[_>>2]=Za;if(!(Oa&128)){fc=Oa;gc=Za}else{Rd(_);fc=k[Ra>>2]|0;gc=k[_>>2]|0}if(!(fc&2048)){Za=a+628|0;_a=xb[k[a+640>>2]&63](k[Za>>2]|0,gc,0,0)|0;if((_a|0)==(gc|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Za>>2]|0,ga,8)|0)==8:0)Wa=300;else Wa=304}else if(gc>>>0<=4294967287?(gc+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(ga,(k[a+612>>2]|0)+gc|0,8);Wa=300}else Wa=304;if((Wa|0)==300){hc=k[Ra>>2]|0;break}else if((Wa|0)==304){Nb=3;break g}}else{p[ga>>3]=+p[Pa>>3];hc=Oa}while(0);if(hc&128)Sd(ga);o[la>>2]=+p[ga>>3];Nb=0;break g;break}default:{Nb=2;break g}}while(0);else Nb=1;while(0);if(!Nb){Qa=m[b>>1]|0;p[R>>3]=+o[la>>2];if(!(Ob(a,Qa,R)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=Nb;Wa=837}break}case 11:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4836,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4837,135010);Qa=b+8|0;h:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0)do switch(m[b+2>>1]|0){case 1:{p[ma>>3]=+(l[b+16>>0]|0);ic=0;break h;break}case 6:{p[ma>>3]=+(i[b+16>>0]|0);ic=0;break h;break}case 3:{Oa=k[a+12>>2]|0;Pa=j[b+16>>1]|0;j[aa>>1]=Pa;if(!(Oa&128))nc=Pa;else{Qd(aa);nc=j[aa>>1]|0}p[ma>>3]=+(nc&65535);ic=0;break h;break}case 8:{Pa=k[a+12>>2]|0;Oa=j[b+16>>1]|0;j[ba>>1]=Oa;if(!(Pa&128))oc=Oa;else{Qd(ba);oc=j[ba>>1]|0}p[ma>>3]=+(oc<<16>>16);ic=0;break h;break}case 4:{Oa=k[b+16>>2]|0;k[ca>>2]=Oa;if(!(k[a+12>>2]&128))wc=Oa;else{Rd(ca);wc=k[ca>>2]|0}p[ma>>3]=+(wc>>>0);ic=0;break h;break}case 9:{Oa=k[b+16>>2]|0;k[da>>2]=Oa;if(!(k[a+12>>2]&128))xc=Oa;else{Rd(da);xc=k[da>>2]|0}p[ma>>3]=+(xc|0);ic=0;break h;break}case 16:{Oa=a+12|0;Pa=k[Oa>>2]|0;Ra=b+16|0;do if(!(Pa&524288)){Za=k[Ra>>2]|0;k[_>>2]=Za;if(!(Pa&128)){yc=Pa;zc=Za}else{Rd(_);yc=k[Oa>>2]|0;zc=k[_>>2]|0}if(!(yc&2048)){Za=a+628|0;_a=xb[k[a+640>>2]&63](k[Za>>2]|0,zc,0,0)|0;if((_a|0)==(zc|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[Za>>2]|0,ea,8)|0)==8:0)Wa=337;else Wa=341}else if(zc>>>0<=4294967287?(zc+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(ea,(k[a+612>>2]|0)+zc|0,8);Wa=337}else Wa=341;if((Wa|0)==337){Ac=k[Oa>>2]|0;break}else if((Wa|0)==341){ic=3;break h}}else{Za=Ra;_a=k[Za+4>>2]|0;Ya=ea;k[Ya>>2]=k[Za>>2];k[Ya+4>>2]=_a;Ac=Pa}while(0);if(Ac&128)Sd(ea);Pa=ea;p[ma>>3]=+((k[Pa>>2]|0)>>>0)+4294967296.0*+((k[Pa+4>>2]|0)>>>0);ic=0;break h;break}case 17:{Pa=a+12|0;Ra=k[Pa>>2]|0;Oa=b+16|0;do if(!(Ra&524288)){_a=k[Oa>>2]|0;k[_>>2]=_a;if(!(Ra&128)){Bc=Ra;Cc=_a}else{Rd(_);Bc=k[Pa>>2]|0;Cc=k[_>>2]|0}if(!(Bc&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,Cc,0,0)|0;if((Ya|0)==(Cc|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[_a>>2]|0,fa,8)|0)==8:0)Wa=352;else Wa=356}else if(Cc>>>0<=4294967287?(Cc+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(fa,(k[a+612>>2]|0)+Cc|0,8);Wa=352}else Wa=356;if((Wa|0)==352){Dc=k[Pa>>2]|0;break}else if((Wa|0)==356){ic=3;break h}}else{_a=Oa;Ya=k[_a+4>>2]|0;Za=fa;k[Za>>2]=k[_a>>2];k[Za+4>>2]=Ya;Dc=Ra}while(0);if(Dc&128)Sd(fa);Ra=fa;p[ma>>3]=+((k[Ra>>2]|0)>>>0)+4294967296.0*+(k[Ra+4>>2]|0);ic=0;break h;break}case 5:{Ra=a+12|0;Oa=k[Ra>>2]|0;Pa=b+16|0;do if(!(Oa&524288)){Ya=k[Pa>>2]|0;k[$>>2]=Ya;if(!(Oa&128)){Ec=Oa;Fc=Ya}else{Rd($);Ec=k[Ra>>2]|0;Fc=k[$>>2]|0}if(!(Ec&2048)){Ya=a+628|0;Za=xb[k[a+640>>2]&63](k[Ya>>2]|0,Fc,0,0)|0;if(!((Za|0)==(Fc|0)&(L|0)==0)){Gc=3;break}if((nb[k[a+632>>2]&63](k[Ya>>2]|0,_,8)|0)!=8){Gc=3;break}}else{if(Fc>>>0>4294967287){Gc=3;break}if((Fc+8|0)>>>0>(k[a+616>>2]|0)>>>0){Gc=3;break}qe(_,(k[a+612>>2]|0)+Fc|0,8)}Hc=k[Ra>>2]|0;Wa=369}else{Ya=Pa;Za=k[Ya+4>>2]|0;_a=_;k[_a>>2]=k[Ya>>2];k[_a+4>>2]=Za;Hc=Oa;Wa=369}while(0);if((Wa|0)==369){if(Hc&128)Vd(_,2);Oa=k[_>>2]|0;if(!Oa)Ic=0.0;else Ic=+(Oa>>>0)/+((k[_+4>>2]|0)>>>0);p[ma>>3]=Ic;Gc=0}ic=Gc;break h;break}case 10:{Oa=a+12|0;Pa=k[Oa>>2]|0;Ra=b+16|0;do if(!(Pa&524288)){Za=k[Ra>>2]|0;k[$>>2]=Za;if(!(Pa&128)){Jc=Pa;Kc=Za}else{Rd($);Jc=k[Oa>>2]|0;Kc=k[$>>2]|0}if(!(Jc&2048)){Za=a+628|0;_a=xb[k[a+640>>2]&63](k[Za>>2]|0,Kc,0,0)|0;if(!((_a|0)==(Kc|0)&(L|0)==0)){Lc=3;break}if((nb[k[a+632>>2]&63](k[Za>>2]|0,_,8)|0)!=8){Lc=3;break}}else{if(Kc>>>0>4294967287){Lc=3;break}if((Kc+8|0)>>>0>(k[a+616>>2]|0)>>>0){Lc=3;break}qe(_,(k[a+612>>2]|0)+Kc|0,8)}Mc=k[Oa>>2]|0;Wa=386}else{Za=Ra;_a=k[Za+4>>2]|0;Ya=_;k[Ya>>2]=k[Za>>2];k[Ya+4>>2]=_a;Mc=Pa;Wa=386}while(0);if((Wa|0)==386){if(Mc&128)Vd(_,2);Pa=k[_>>2]|0;if(!Pa)Nc=0.0;else Nc=+(Pa|0)/+((k[_+4>>2]|0)>>>0);p[ma>>3]=Nc;Lc=0}ic=Lc;break h;break}case 11:{Pa=k[a+12>>2]|0;Ra=k[b+16>>2]|0;k[ga>>2]=Ra;if(!(Pa&128))Oc=(k[t>>2]=Ra,+o[t>>2]);else{Rd(ga);Oc=+o[ga>>2]}p[ma>>3]=Oc;ic=0;break h;break}case 12:{Ra=a+12|0;Pa=k[Ra>>2]|0;Oa=b+16|0;do if(!(Pa&524288)){_a=k[Oa>>2]|0;k[_>>2]=_a;if(!(Pa&128)){Pc=Pa;Qc=_a}else{Rd(_);Pc=k[Ra>>2]|0;Qc=k[_>>2]|0}if(!(Pc&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,Qc,0,0)|0;if(!((Ya|0)==(Qc|0)&(L|0)==0)){Rc=3;break}if((nb[k[a+632>>2]&63](k[_a>>2]|0,ma,8)|0)!=8){Rc=3;break}}else{if(Qc>>>0>4294967287){Rc=3;break}if((Qc+8|0)>>>0>(k[a+616>>2]|0)>>>0){Rc=3;break}qe(ma,(k[a+612>>2]|0)+Qc|0,8)}Sc=k[Ra>>2]|0;Wa=406}else{p[ma>>3]=+p[Oa>>3];Sc=Pa;Wa=406}while(0);if((Wa|0)==406)if(!(Sc&128))Rc=0;else{Sd(ma);Rc=0}ic=Rc;break h;break}default:{ic=2;break h}}while(0);else ic=1;while(0);if(!ic){Qa=m[b>>1]|0;p[Q>>3]=+p[ma>>3];if(!(Ob(a,Qa,Q)|0)){bb=0;r=d;return bb|0}else Wa=835}else{cb=ic;Wa=837}break}case 12:{if((j[Na+4>>1]|0)!=1)Ja(135354,133171,4849,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4850,135010);Qa=b+8|0;i:do if((k[Qa>>2]|0)==1&(k[Qa+4>>2]|0)==0){switch(m[b+2>>1]|0){case 13:case 4:{Pa=k[b+16>>2]|0;k[$>>2]=Pa;if(!(k[a+12>>2]&128))Tc=Pa;else{Rd($);Tc=k[$>>2]|0}Pa=na;k[Pa>>2]=Tc;k[Pa+4>>2]=0;Uc=Tc;Vc=0;break}case 18:case 16:{Pa=a+12|0;Oa=k[Pa>>2]|0;Ra=b+16|0;do if(!(Oa&524288)){_a=k[Ra>>2]|0;k[_>>2]=_a;if(!(Oa&128)){Wc=Oa;Xc=_a}else{Rd(_);Wc=k[Pa>>2]|0;Xc=k[_>>2]|0}if(!(Wc&2048)){_a=a+628|0;Ya=xb[k[a+640>>2]&63](k[_a>>2]|0,Xc,0,0)|0;if((Ya|0)==(Xc|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[_a>>2]|0,na,8)|0)==8:0)Wa=429;else Wa=434}else if(Xc>>>0<=4294967287?(Xc+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(na,(k[a+612>>2]|0)+Xc|0,8);Wa=429}else Wa=434;if((Wa|0)==429){Yc=k[Pa>>2]|0;break}else if((Wa|0)==434){cb=3;Wa=837;break b}}else{_a=Ra;Ya=k[_a+4>>2]|0;Za=na;k[Za>>2]=k[_a>>2];k[Za+4>>2]=Ya;Yc=Oa}while(0);if(Yc&128)Sd(na);Oa=na;Uc=k[Oa>>2]|0;Vc=k[Oa+4>>2]|0;break}default:{Zc=2;break i}}Oa=m[b>>1]|0;Ra=P;k[Ra>>2]=Uc;k[Ra+4>>2]=Vc;if(!(Ob(a,Oa,P)|0))bb=0;else{Wa=835;break b}r=d;return bb|0}else Zc=1;while(0);cb=Zc;Wa=837;break}case 14:{if((j[Na+4>>1]|0)!=2)Ja(135378,133171,4862,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4863,135010);Qa=b+8|0;Oa=k[Qa>>2]|0;if(!((Oa|0)==2&(k[Qa+4>>2]|0)==0)){Qa=k[a+628>>2]|0;k[O>>2]=k[Na+28>>2];k[O+4>>2]=Oa;ie(Qa,135010,135402,O);bb=0;r=d;return bb|0}Qa=kc(a,b,oa)|0;if(!Qa){Oa=m[b>>1]|0;Ra=k[oa>>2]|0;Pa=m[Ra+2>>1]|0;k[N>>2]=m[Ra>>1];k[N+4>>2]=Pa;Pa=Ob(a,Oa,N)|0;ne(Ra);if(!Pa){bb=0;r=d;return bb|0}else Wa=835}else{cb=Qa;Wa=837}break}case 16:{Qa=j[Na+4>>1]|0;if(Qa<<16>>16<=0)Ja(135453,133171,4884,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4885,135010);Pa=b+8|0;Ra=k[Pa>>2]|0;Oa=Qa<<16>>16;if(!((Ra|0)==(Oa|0)?(k[Pa+4>>2]|0)==(((Oa|0)<0)<<31>>31|0):0)){Oa=k[a+628>>2]|0;k[M>>2]=k[Na+28>>2];k[M+4>>2]=Qa<<16>>16;k[M+8>>2]=Ra;ie(Oa,135010,135477,M);bb=0;r=d;return bb|0}Oa=rc(a,b,pa)|0;if(!Oa){Ra=m[b>>1]|0;Qa=k[pa>>2]|0;k[K>>2]=Qa;Pa=Ob(a,Ra,K)|0;if(Qa)ne(Qa);if(!Pa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Oa;Wa=837}break}case 18:{Oa=j[Na+4>>1]|0;if(Oa<<16>>16<=0)Ja(135453,133171,4910,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4911,135010);Pa=b+8|0;Qa=Oa<<16>>16;if((k[Pa>>2]|0)==(Qa|0)?(k[Pa+4>>2]|0)==(((Qa|0)<0)<<31>>31|0):0){Qa=kc(a,b,qa)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[qa>>2]|0;k[J>>2]=Oa;Ra=Ob(a,Pa,J)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else Wa=835;break}case 20:{Qa=j[Na+4>>1]|0;if(Qa<<16>>16<=0)Ja(135453,133171,4932,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4933,135010);Ra=b+8|0;Oa=Qa<<16>>16;if((k[Ra>>2]|0)==(Oa|0)?(k[Ra+4>>2]|0)==(((Oa|0)<0)<<31>>31|0):0){Oa=sc(a,b,ra)|0;if(!Oa){Ra=m[b>>1]|0;Qa=k[ra>>2]|0;k[I>>2]=Qa;Pa=Ob(a,Ra,I)|0;if(Qa)ne(Qa);if(!Pa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Oa;Wa=837}}else Wa=835;break}case 24:{Oa=j[Na+4>>1]|0;if(Oa<<16>>16<=0)Ja(135453,133171,4954,135010);if(i[Na+27>>0]|0)Ja(135148,133171,4955,135010);Pa=b+8|0;Qa=Oa<<16>>16;if((k[Pa>>2]|0)==(Qa|0)?(k[Pa+4>>2]|0)==(((Qa|0)<0)<<31>>31|0):0){Qa=tc(a,b,sa)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[sa>>2]|0;k[H>>2]=Oa;Ra=Ob(a,Pa,H)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else Wa=835;break}case 27:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,4976,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,4977,135010);Qa=b+8|0;Ra=Qa;Oa=k[Ra+4>>2]|0;if(!(Oa>>>0>0|(Oa|0)==0&(k[Ra>>2]|0)>>>0>65535)){Ra=rc(a,b,ta)|0;if(!Ra){Oa=m[b>>1]|0;Pa=k[ta>>2]|0;k[G>>2]=k[Qa>>2]&65535;k[G+4>>2]=Pa;Qa=Ob(a,Oa,G)|0;if(Pa)ne(Pa);if(!Qa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Ra;Wa=837}}else{cb=1;Wa=837}break}case 28:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,4998,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,4999,135010);Ra=b+8|0;Qa=Ra;Pa=k[Qa+4>>2]|0;if(!(Pa>>>0>0|(Pa|0)==0&(k[Qa>>2]|0)>>>0>65535)){Qa=rc(a,b,ua)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[ua>>2]|0;k[F>>2]=k[Ra>>2]&65535;k[F+4>>2]=Oa;Ra=Ob(a,Pa,F)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else{cb=1;Wa=837}break}case 30:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5020,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5021,135010);Qa=b+8|0;Ra=Qa;Oa=k[Ra+4>>2]|0;if(!(Oa>>>0>0|(Oa|0)==0&(k[Ra>>2]|0)>>>0>65535)){Ra=kc(a,b,va)|0;if(!Ra){Oa=m[b>>1]|0;Pa=k[va>>2]|0;k[E>>2]=k[Qa>>2]&65535;k[E+4>>2]=Pa;Qa=Ob(a,Oa,E)|0;if(Pa)ne(Pa);if(!Qa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Ra;Wa=837}}else{cb=1;Wa=837}break}case 32:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5042,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5043,135010);Ra=b+8|0;Qa=Ra;Pa=k[Qa+4>>2]|0;if(!(Pa>>>0>0|(Pa|0)==0&(k[Qa>>2]|0)>>>0>65535)){Qa=sc(a,b,wa)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[wa>>2]|0;k[D>>2]=k[Ra>>2]&65535;k[D+4>>2]=Oa;Ra=Ob(a,Pa,D)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else{cb=1;Wa=837}break}case 34:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5064,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5065,135010);Qa=b+8|0;Ra=Qa;Oa=k[Ra+4>>2]|0;if(!(Oa>>>0>0|(Oa|0)==0&(k[Ra>>2]|0)>>>0>65535)){Ra=pc(a,b,xa)|0;if(!Ra){Oa=m[b>>1]|0;Pa=k[xa>>2]|0;k[C>>2]=k[Qa>>2]&65535;k[C+4>>2]=Pa;Qa=Ob(a,Oa,C)|0;if(Pa)ne(Pa);if(!Qa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Ra;Wa=837}}else{cb=1;Wa=837}break}case 36:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5086,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5087,135010);Ra=b+8|0;Qa=Ra;Pa=k[Qa+4>>2]|0;if(!(Pa>>>0>0|(Pa|0)==0&(k[Qa>>2]|0)>>>0>65535)){Qa=tc(a,b,ya)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[ya>>2]|0;k[B>>2]=k[Ra>>2]&65535;k[B+4>>2]=Oa;Ra=Ob(a,Pa,B)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else{cb=1;Wa=837}break}case 37:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5108,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5109,135010);Qa=b+8|0;Ra=Qa;Oa=k[Ra+4>>2]|0;if(!(Oa>>>0>0|(Oa|0)==0&(k[Ra>>2]|0)>>>0>65535)){Ra=mc(a,b,za)|0;if(!Ra){Oa=m[b>>1]|0;Pa=k[za>>2]|0;k[A>>2]=k[Qa>>2]&65535;k[A+4>>2]=Pa;Qa=Ob(a,Oa,A)|0;if(Pa)ne(Pa);if(!Qa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Ra;Wa=837}}else{cb=1;Wa=837}break}case 38:{if((j[Na+4>>1]|0)!=-1)Ja(135529,133171,5130,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5131,135010);Ra=b+8|0;Qa=Ra;Pa=k[Qa+4>>2]|0;if(!(Pa>>>0>0|(Pa|0)==0&(k[Qa>>2]|0)>>>0>65535)){Qa=uc(a,b,Aa)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[Aa>>2]|0;k[z>>2]=k[Ra>>2]&65535;k[z+4>>2]=Oa;Ra=Ob(a,Pa,z)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}}else{cb=1;Wa=837}break}case 39:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5152,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5153,135010);Qa=rc(a,b,Ba)|0;if(!Qa){Ra=m[b>>1]|0;Oa=k[Ba>>2]|0;k[y>>2]=k[b+8>>2];k[y+4>>2]=Oa;Pa=Ob(a,Ra,y)|0;if(Oa)ne(Oa);if(!Pa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 40:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5169,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5170,135010);Qa=rc(a,b,Ca)|0;if(!Qa){Pa=m[b>>1]|0;Oa=k[Ca>>2]|0;k[x>>2]=k[b+8>>2];k[x+4>>2]=Oa;Ra=Ob(a,Pa,x)|0;if(Oa)ne(Oa);if(!Ra){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 41:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5186,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5187,135010);Qa=b+2|0;j:do switch(m[Qa>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:case 7:{Ra=qc(a,b,_,1,$)|0;Oa=k[$>>2]|0;Pa=Oa;if((Ra|0)!=0|(Oa|0)==0)if(!Ra)_c=0;else{cb=Ra;Wa=837;break b}else{k:do switch(m[Qa>>1]|0){case 1:case 7:{Ra=k[_>>2]|0;if(!Ra)$c=Pa;else{Ya=Oa;Za=0;while(1){if((i[Ya>>0]|0)<=-1)break;Za=Za+1|0;if(Za>>>0>=Ra>>>0){$c=Pa;break k}else Ya=Ya+1|0}ne(Oa);ad=4;break j}break}case 6:{$c=Pa;break}default:{Ya=k[_>>2]|0;Ra=me(Ya)|0;if(!Ra){ne(Oa);ad=7;break j}l:do switch(m[Qa>>1]|0){case 3:{if(!Ya)Wa=621;else{Za=a+12|0;_a=Oa;Ta=Ra;bd=0;while(1){if(k[Za>>2]&128)Qd(_a);cd=j[_a>>1]|0;if((cd&65535)>=128){Wa=620;break l}i[Ta>>0]=cd;bd=bd+1|0;if(bd>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+2|0;Ta=Ta+1|0}}}break}case 8:{if(!Ya)Wa=621;else{Ta=a+12|0;_a=Oa;bd=Ra;Za=0;while(1){if(k[Ta>>2]&128)Qd(_a);cd=j[_a>>1]|0;if((cd+128&65535)>=256){Wa=620;break l}i[bd>>0]=cd;Za=Za+1|0;if(Za>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+2|0;bd=bd+1|0}}}break}case 4:{if(!Ya)Wa=621;else{bd=a+12|0;_a=Oa;Za=Ra;Ta=0;while(1){if(k[bd>>2]&128)Rd(_a);cd=k[_a>>2]|0;if(cd>>>0>=128){Wa=620;break l}i[Za>>0]=cd;Ta=Ta+1|0;if(Ta>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+4|0;Za=Za+1|0}}}break}case 9:{if(!Ya)Wa=621;else{Za=a+12|0;_a=Oa;Ta=Ra;bd=0;while(1){if(k[Za>>2]&128)Rd(_a);cd=k[_a>>2]|0;if((cd+128|0)>>>0>=256){Wa=620;break l}i[Ta>>0]=cd;bd=bd+1|0;if(bd>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+4|0;Ta=Ta+1|0}}}break}case 16:{if(!Ya)Wa=621;else{Ta=a+12|0;_a=Oa;bd=Ra;Za=0;while(1){if(k[Ta>>2]&128)Sd(_a);cd=_a;dd=k[cd>>2]|0;ed=k[cd+4>>2]|0;if(!(ed>>>0<0|(ed|0)==0&dd>>>0<128)){Wa=620;break l}i[bd>>0]=dd;Za=Za+1|0;if(Za>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+8|0;bd=bd+1|0}}}break}case 17:{if(!Ya)Wa=621;else{bd=a+12|0;_a=Oa;Za=Ra;Ta=0;while(1){if(k[bd>>2]&128)Sd(_a);dd=_a;ed=k[dd>>2]|0;cd=sr(ed|0,k[dd+4>>2]|0,128,0)|0;dd=L;if(!(dd>>>0<0|(dd|0)==0&cd>>>0<256)){Wa=620;break l}i[Za>>0]=ed;Ta=Ta+1|0;if(Ta>>>0>=(k[_>>2]|0)>>>0){Wa=621;break}else{_a=_a+8|0;Za=Za+1|0}}}break}default:Wa=621}while(0);if((Wa|0)==620){ne(k[$>>2]|0);ne(Ra);ad=4;break j}else if((Wa|0)==621){ne(k[$>>2]|0);$c=Ra;break k}}}while(0);_c=$c}Oa=m[b>>1]|0;Pa=_c;k[w>>2]=k[b+8>>2];k[w+4>>2]=Pa;Ya=Ob(a,Oa,w)|0;if(_c)ne(Pa);if(!Ya)bb=0;else{Wa=836;break b}r=d;return bb|0}default:ad=2}while(0);cb=ad;Wa=837;break}case 42:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5203,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5204,135010);Qa=kc(a,b,Da)|0;if(!Qa){Ya=m[b>>1]|0;Pa=k[Da>>2]|0;k[v>>2]=k[b+8>>2];k[v+4>>2]=Pa;Oa=Ob(a,Ya,v)|0;if(Pa)ne(Pa);if(!Oa){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 43:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5220,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5221,135010);Qa=b+2|0;m:do switch(m[Qa>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:{Oa=qc(a,b,_,2,$)|0;Pa=k[$>>2]|0;Ya=Pa;if((Oa|0)!=0|(Pa|0)==0)if(!Oa)fd=0;else{cb=Oa;Wa=837;break b}else{n:do switch(m[Qa>>1]|0){case 3:{Oa=k[_>>2]|0;if(!Oa)gd=Ya;else{Za=a+12|0;_a=Pa;Ta=0;while(1){if(k[Za>>2]&128)Qd(_a);if((j[_a>>1]|0)<=-1)break;Ta=Ta+1|0;if(Ta>>>0>=Oa>>>0){gd=Ya;break n}else _a=_a+2|0}ne(Pa);hd=4;break m}break}case 8:{if(!(k[a+12>>2]&128))gd=Ya;else{Td(Pa,k[_>>2]|0);gd=Ya}break}default:{_a=k[_>>2]|0;Oa=me(_a<<1)|0;if(!Oa){ne(Pa);hd=7;break m}o:do switch(m[Qa>>1]|0){case 1:{if(!_a)Wa=684;else{Ta=Pa;Za=Oa;Ra=0;while(1){j[Za>>1]=l[Ta>>0]|0;Ra=Ra+1|0;if((Ra|0)==(_a|0)){Wa=684;break}else{Ta=Ta+1|0;Za=Za+2|0}}}break}case 6:{if(!_a)Wa=684;else{Za=Pa;Ta=Oa;Ra=0;while(1){j[Ta>>1]=i[Za>>0]|0;Ra=Ra+1|0;if((Ra|0)==(_a|0)){Wa=684;break}else{Za=Za+1|0;Ta=Ta+2|0}}}break}case 4:{if(!_a)Wa=684;else{Ta=a+12|0;Za=Pa;Ra=Oa;bd=0;while(1){if(k[Ta>>2]&128)Rd(Za);ed=k[Za>>2]|0;if(ed>>>0>=32768){Wa=683;break o}j[Ra>>1]=ed;bd=bd+1|0;if(bd>>>0>=_a>>>0){Wa=684;break}else{Za=Za+4|0;Ra=Ra+2|0}}}break}case 9:{if(!_a)Wa=684;else{Ra=a+12|0;Za=Pa;bd=Oa;Ta=0;while(1){if(k[Ra>>2]&128)Rd(Za);ed=k[Za>>2]|0;if((ed+32768|0)>>>0>=65536){Wa=683;break o}j[bd>>1]=ed;Ta=Ta+1|0;if(Ta>>>0>=_a>>>0){Wa=684;break}else{Za=Za+4|0;bd=bd+2|0}}}break}case 16:{if(!_a)Wa=684;else{bd=a+12|0;Za=Pa;Ta=Oa;Ra=0;while(1){if(k[bd>>2]&128)Sd(Za);ed=Za;cd=k[ed>>2]|0;dd=k[ed+4>>2]|0;if(!(dd>>>0<0|(dd|0)==0&cd>>>0<32768)){Wa=683;break o}j[Ta>>1]=cd;Ra=Ra+1|0;if(Ra>>>0>=_a>>>0){Wa=684;break}else{Za=Za+8|0;Ta=Ta+2|0}}}break}case 17:{if(!_a)Wa=684;else{Ta=a+12|0;Za=Pa;Ra=Oa;bd=0;while(1){if(k[Ta>>2]&128)Sd(Za);cd=Za;dd=k[cd>>2]|0;ed=sr(dd|0,k[cd+4>>2]|0,32768,0)|0;cd=L;if(!(cd>>>0<0|(cd|0)==0&ed>>>0<65536)){Wa=683;break o}j[Ra>>1]=dd;bd=bd+1|0;if(bd>>>0>=_a>>>0){Wa=684;break}else{Za=Za+8|0;Ra=Ra+2|0}}}break}default:Wa=684}while(0);if((Wa|0)==683){ne(Pa);ne(Oa);hd=4;break m}else if((Wa|0)==684){ne(Pa);gd=Oa;break n}}}while(0);fd=gd}Pa=m[b>>1]|0;k[u>>2]=k[b+8>>2];k[u+4>>2]=fd;Ya=Ob(a,Pa,u)|0;if(fd)ne(fd);if(!Ya)bb=0;else{Wa=836;break b}r=d;return bb|0}default:hd=2}while(0);cb=hd;Wa=837;break}case 44:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5237,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5238,135010);Qa=sc(a,b,Ea)|0;if(!Qa){Ya=m[b>>1]|0;Pa=k[Ea>>2]|0;k[s>>2]=k[b+8>>2];k[s+4>>2]=Pa;_a=Ob(a,Ya,s)|0;if(Pa)ne(Pa);if(!_a){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 45:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5254,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5255,135010);Qa=b+2|0;p:do switch(m[Qa>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:{_a=qc(a,b,_,4,$)|0;Pa=k[$>>2]|0;Ya=Pa;if((_a|0)!=0|(Pa|0)==0)if(!_a)id=0;else{cb=_a;Wa=837;break b}else{q:do switch(m[Qa>>1]|0){case 4:{_a=k[_>>2]|0;if(!_a)jd=Ya;else{Ra=a+12|0;Za=Pa;bd=0;while(1){if(k[Ra>>2]&128)Rd(Za);Ta=k[Za>>2]>>31&4;if(Ta){kd=Ta;break}bd=bd+1|0;if(bd>>>0>=_a>>>0){jd=Ya;break q}else Za=Za+4|0}ne(Pa);ld=kd;break p}break}case 9:{if(!(k[a+12>>2]&128))jd=Ya;else{Vd(Pa,k[_>>2]|0);jd=Ya}break}default:{Za=k[_>>2]|0;_a=me(Za<<2)|0;if(!_a){ne(Pa);ld=7;break p}r:do switch(m[Qa>>1]|0){case 1:{if(!Za)Wa=745;else{bd=Pa;Ra=_a;Oa=0;while(1){k[Ra>>2]=l[bd>>0];Oa=Oa+1|0;if(Oa>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{bd=bd+1|0;Ra=Ra+4|0}}}break}case 6:{if(!Za)Wa=745;else{Ra=Pa;bd=_a;Oa=0;while(1){k[bd>>2]=i[Ra>>0];Oa=Oa+1|0;if(Oa>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{Ra=Ra+1|0;bd=bd+4|0}}}break}case 3:{if(!Za)Wa=745;else{bd=a+12|0;Ra=Pa;Oa=_a;Ta=0;while(1){if(k[bd>>2]&128)Qd(Ra);k[Oa>>2]=m[Ra>>1];Ta=Ta+1|0;if(Ta>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{Ra=Ra+2|0;Oa=Oa+4|0}}}break}case 8:{if(!Za)Wa=745;else{Oa=a+12|0;Ra=Pa;Ta=_a;bd=0;while(1){if(k[Oa>>2]&128)Qd(Ra);k[Ta>>2]=j[Ra>>1];bd=bd+1|0;if(bd>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{Ra=Ra+2|0;Ta=Ta+4|0}}}break}case 16:{if(!Za)Wa=745;else{Ta=a+12|0;Ra=Pa;bd=_a;Oa=0;while(1){if(k[Ta>>2]&128)Sd(Ra);dd=Ra;ed=k[dd>>2]|0;cd=k[dd+4>>2]|0;if(!(cd>>>0<0|(cd|0)==0&ed>>>0<2147483648)){Wa=744;break r}k[bd>>2]=ed;Oa=Oa+1|0;if(Oa>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{Ra=Ra+8|0;bd=bd+4|0}}}break}case 17:{if(!Za)Wa=745;else{bd=a+12|0;Ra=Pa;Oa=_a;Ta=0;while(1){if(k[bd>>2]&128)Sd(Ra);ed=Ra;cd=k[ed>>2]|0;dd=sr(cd|0,k[ed+4>>2]|0,-2147483648,0)|0;ed=L;if(!(ed>>>0<1|(ed|0)==1&dd>>>0<0)){Wa=744;break r}k[Oa>>2]=cd;Ta=Ta+1|0;if(Ta>>>0>=(k[_>>2]|0)>>>0){Wa=745;break}else{Ra=Ra+8|0;Oa=Oa+4|0}}}break}default:Wa=745}while(0);if((Wa|0)==744){ne(Pa);ne(_a);ld=4;break p}else if((Wa|0)==745){ne(Pa);jd=_a;break q}}}while(0);id=jd}Pa=m[b>>1]|0;k[q>>2]=k[b+8>>2];k[q+4>>2]=id;Ya=Ob(a,Pa,q)|0;if(id)ne(id);if(!Ya)bb=0;else{Wa=836;break b}r=d;return bb|0}default:ld=2}while(0);cb=ld;Wa=837;break}case 46:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5271,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5272,135010);Qa=pc(a,b,Fa)|0;if(!Qa){Ya=m[b>>1]|0;Pa=k[Fa>>2]|0;k[n>>2]=k[b+8>>2];k[n+4>>2]=Pa;Za=Ob(a,Ya,n)|0;if(Pa)ne(Pa);if(!Za){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 47:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5288,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5289,135010);Qa=b+2|0;s:do switch(m[Qa>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:{Za=qc(a,b,_,8,$)|0;Pa=k[$>>2]|0;Ya=Pa;if((Za|0)!=0|(Pa|0)==0)if(!Za)md=0;else{cb=Za;Wa=837;break b}else{t:do switch(m[Qa>>1]|0){case 16:{Za=k[_>>2]|0;if(!Za)nd=Ya;else{Oa=a+12|0;Ra=Pa;Ta=0;while(1){if(k[Oa>>2]&128)Sd(Ra);bd=Ra;cd=k[bd+4>>2]|0;if(!((cd|0)>-1|(cd|0)==-1&(k[bd>>2]|0)>>>0>4294967295))break;Ta=Ta+1|0;if(Ta>>>0>=Za>>>0){nd=Ya;break t}else Ra=Ra+8|0}ne(Pa);od=4;break s}break}case 17:{if(!(k[a+12>>2]&128))nd=Ya;else{Wd(Pa,k[_>>2]|0);nd=Ya}break}default:{Ra=k[_>>2]|0;Za=me(Ra<<3)|0;if(!Za){ne(Pa);od=7;break s}switch(m[Qa>>1]|0){case 1:{if(Ra){Ta=Pa;Oa=Za;_a=0;while(1){bd=Oa;k[bd>>2]=l[Ta>>0];k[bd+4>>2]=0;_a=_a+1|0;if((_a|0)==(Ra|0))break;else{Ta=Ta+1|0;Oa=Oa+8|0}}}break}case 6:{if(Ra){Oa=Pa;Ta=Za;_a=0;while(1){bd=i[Oa>>0]|0;cd=Ta;k[cd>>2]=bd;k[cd+4>>2]=((bd|0)<0)<<31>>31;_a=_a+1|0;if((_a|0)==(Ra|0))break;else{Oa=Oa+1|0;Ta=Ta+8|0}}}break}case 3:{if(Ra){Ta=a+12|0;Oa=Pa;_a=Za;bd=0;while(1){if(k[Ta>>2]&128)Qd(Oa);cd=_a;k[cd>>2]=m[Oa>>1];k[cd+4>>2]=0;bd=bd+1|0;if((bd|0)==(Ra|0))break;else{Oa=Oa+2|0;_a=_a+8|0}}}break}case 8:{if(Ra){_a=a+12|0;Oa=Pa;bd=Za;Ta=0;while(1){if(k[_a>>2]&128)Qd(Oa);cd=j[Oa>>1]|0;dd=bd;k[dd>>2]=cd;k[dd+4>>2]=((cd|0)<0)<<31>>31;Ta=Ta+1|0;if((Ta|0)==(Ra|0))break;else{Oa=Oa+2|0;bd=bd+8|0}}}break}case 4:{if(Ra){bd=a+12|0;Oa=Pa;Ta=Za;_a=0;while(1){if(k[bd>>2]&128)Rd(Oa);cd=Ta;k[cd>>2]=k[Oa>>2];k[cd+4>>2]=0;_a=_a+1|0;if((_a|0)==(Ra|0))break;else{Oa=Oa+4|0;Ta=Ta+8|0}}}break}case 9:{if(Ra){Ta=a+12|0;Oa=Pa;_a=Za;bd=0;while(1){if(k[Ta>>2]&128)Rd(Oa);cd=k[Oa>>2]|0;dd=_a;k[dd>>2]=cd;k[dd+4>>2]=((cd|0)<0)<<31>>31;bd=bd+1|0;if((bd|0)==(Ra|0))break;else{Oa=Oa+4|0;_a=_a+8|0}}}break}default:{}}ne(Pa);nd=Za}}while(0);md=nd}Pa=m[b>>1]|0;k[h>>2]=k[b+8>>2];k[h+4>>2]=md;Ya=Ob(a,Pa,h)|0;if(md)ne(md);if(!Ya)bb=0;else{Wa=836;break b}r=d;return bb|0}default:od=2}while(0);cb=od;Wa=837;break}case 48:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5305,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5306,135010);Qa=tc(a,b,Ga)|0;if(!Qa){Ya=m[b>>1]|0;Pa=k[Ga>>2]|0;k[g>>2]=k[b+8>>2];k[g+4>>2]=Pa;_a=Ob(a,Ya,g)|0;if(Pa)ne(Pa);if(!_a){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 49:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5322,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5323,135010);Qa=mc(a,b,Ha)|0;if(!Qa){_a=m[b>>1]|0;Pa=k[Ha>>2]|0;k[f>>2]=k[b+8>>2];k[f+4>>2]=Pa;Ya=Ob(a,_a,f)|0;if(Pa)ne(Pa);if(!Ya){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}case 50:{if((j[Na+4>>1]|0)!=-3)Ja(135589,133171,5339,135010);if((i[Na+27>>0]|0)!=1)Ja(135565,133171,5340,135010);Qa=uc(a,b,Ia)|0;if(!Qa){Ya=m[b>>1]|0;Pa=k[Ia>>2]|0;k[e>>2]=k[b+8>>2];k[e+4>>2]=Pa;_a=Ob(a,Ya,e)|0;if(Pa)ne(Pa);if(!_a){bb=0;r=d;return bb|0}else Wa=836}else{cb=Qa;Wa=837}break}default:Ja(141469,133171,5354,135010)}while(0);if((Wa|0)==835){bb=1;r=d;return bb|0}else if((Wa|0)==836){bb=1;r=d;return bb|0}else if((Wa|0)==837){lc(a,cb,135010,k[Na+28>>2]|0,c);bb=0;r=d;return bb|0}}while(0);c=k[a+628>>2]|0;k[Z>>2]=La&65535;vc(c,135010,135029,Z);bb=0;r=d;return bb|0}function jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;d=r;r=r+32|0;e=d+24|0;f=d+28|0;g=d+20|0;h=d+16|0;n=d+8|0;o=d;p=b+8|0;if(!((k[p>>2]|0)==1&(k[p+4>>2]|0)==0)){q=1;r=d;return q|0}switch(m[b+2>>1]|0|0){case 1:{j[c>>1]=l[b+16>>0]|0;q=0;r=d;return q|0}case 6:{p=i[b+16>>0]|0;if(p<<24>>24<=-1){q=4;r=d;return q|0}j[c>>1]=p<<24>>24;q=0;r=d;return q|0}case 3:{p=k[a+12>>2]|0;j[c>>1]=j[b+16>>1]|0;if(!(p&128)){q=0;r=d;return q|0}Qd(c);q=0;r=d;return q|0}case 8:{p=k[a+12>>2]|0;s=j[b+16>>1]|0;j[f>>1]=s;if(!(p&128))t=s;else{Qd(f);t=j[f>>1]|0}if(t<<16>>16<=-1){q=4;r=d;return q|0}j[c>>1]=t;q=0;r=d;return q|0}case 4:{t=k[b+16>>2]|0;k[g>>2]=t;if(!(k[a+12>>2]&128))u=t;else{Rd(g);u=k[g>>2]|0}if(u>>>0>=65536){q=4;r=d;return q|0}j[c>>1]=u;q=0;r=d;return q|0}case 9:{u=k[b+16>>2]|0;k[h>>2]=u;if(!(k[a+12>>2]&128))v=u;else{Rd(h);v=k[h>>2]|0}if(v>>>0>=65536){q=4;r=d;return q|0}j[c>>1]=v;q=0;r=d;return q|0}case 16:{v=a+12|0;h=k[v>>2]|0;u=b+16|0;do if(!(h&524288)){g=k[u>>2]|0;k[e>>2]=g;if(!(h&128)){w=h;x=g}else{Rd(e);w=k[v>>2]|0;x=k[e>>2]|0}if(!(w&2048)){g=a+628|0;t=xb[k[a+640>>2]&63](k[g>>2]|0,x,0,0)|0;if((t|0)==(x|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[g>>2]|0,n,8)|0)==8:0)y=29}else if(x>>>0<=4294967287?(x+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(n,(k[a+612>>2]|0)+x|0,8);y=29}if((y|0)==29){z=k[v>>2]|0;break}q=3;r=d;return q|0}else{g=u;t=k[g+4>>2]|0;f=n;k[f>>2]=k[g>>2];k[f+4>>2]=t;z=h}while(0);if(z&128)Sd(n);z=n;n=k[z>>2]|0;h=k[z+4>>2]|0;if(!(h>>>0<0|(h|0)==0&n>>>0<65536)){q=4;r=d;return q|0}j[c>>1]=n;q=0;r=d;return q|0}case 17:{n=a+12|0;h=k[n>>2]|0;z=b+16|0;do if(!(h&524288)){b=k[z>>2]|0;k[e>>2]=b;if(!(h&128)){A=h;B=b}else{Rd(e);A=k[n>>2]|0;B=k[e>>2]|0}if(!(A&2048)){b=a+628|0;u=xb[k[a+640>>2]&63](k[b>>2]|0,B,0,0)|0;if((u|0)==(B|0)&(L|0)==0?(nb[k[a+632>>2]&63](k[b>>2]|0,o,8)|0)==8:0)y=45}else if(B>>>0<=4294967287?(B+8|0)>>>0<=(k[a+616>>2]|0)>>>0:0){qe(o,(k[a+612>>2]|0)+B|0,8);y=45}if((y|0)==45){C=k[n>>2]|0;break}q=3;r=d;return q|0}else{b=z;u=k[b+4>>2]|0;v=o;k[v>>2]=k[b>>2];k[v+4>>2]=u;C=h}while(0);if(C&128)Sd(o);C=o;o=k[C>>2]|0;h=k[C+4>>2]|0;if(!(h>>>0<0|(h|0)==0&o>>>0<65536)){q=4;r=d;return q|0}j[c>>1]=o;q=0;r=d;return q|0}default:{q=2;r=d;return q|0}}return 0}function kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;d=r;r=r+16|0;e=d+4|0;f=d;g=b+2|0;switch(m[g>>1]|0){case 17:case 16:case 9:case 4:case 8:case 3:case 6:case 1:break;default:{h=2;r=d;return h|0}}n=qc(a,b,e,2,f)|0;b=k[f>>2]|0;f=b;if((n|0)!=0|(b|0)==0){k[c>>2]=0;h=n;r=d;return h|0}switch(m[g>>1]|0){case 3:{k[c>>2]=b;if(!(k[a+12>>2]&128)){h=0;r=d;return h|0}Td(b,k[e>>2]|0);h=0;r=d;return h|0}case 8:{n=k[e>>2]|0;a:do if(n){o=a+12|0;p=b;q=0;while(1){if(k[o>>2]&128)Qd(p);if((j[p>>1]|0)<=-1)break;q=q+1|0;if(q>>>0>=n>>>0)break a;else p=p+2|0}ne(b);h=4;r=d;return h|0}while(0);k[c>>2]=f;h=0;r=d;return h|0}default:{f=k[e>>2]|0;e=me(f<<1)|0;if(!e){ne(b);h=7;r=d;return h|0}b:do switch(m[g>>1]|0){case 1:{if(!f)s=48;else{n=b;p=e;q=0;while(1){j[p>>1]=l[n>>0]|0;q=q+1|0;if(q>>>0>=f>>>0){s=48;break}else{n=n+1|0;p=p+2|0}}}break}case 6:{if(!f)s=48;else{p=b;n=e;q=0;while(1){o=i[p>>0]|0;if(o<<24>>24<=-1){s=47;break b}j[n>>1]=o<<24>>24;q=q+1|0;if(q>>>0>=f>>>0){s=48;break}else{p=p+1|0;n=n+2|0}}}break}case 4:{if(!f)s=48;else{n=a+12|0;p=b;q=e;o=0;while(1){if(k[n>>2]&128)Rd(p);t=k[p>>2]|0;if(t>>>0>=65536){s=47;break b}j[q>>1]=t;o=o+1|0;if(o>>>0>=f>>>0){s=48;break}else{p=p+4|0;q=q+2|0}}}break}case 9:{if(!f)s=48;else{q=a+12|0;p=b;o=e;n=0;while(1){if(k[q>>2]&128)Rd(p);t=k[p>>2]|0;if(t>>>0>=65536){s=47;break b}j[o>>1]=t;n=n+1|0;if(n>>>0>=f>>>0){s=48;break}else{p=p+4|0;o=o+2|0}}}break}case 16:{if(!f)s=48;else{o=a+12|0;p=b;n=e;q=0;while(1){if(k[o>>2]&128)Sd(p);t=p;u=k[t>>2]|0;v=k[t+4>>2]|0;if(!(v>>>0<0|(v|0)==0&u>>>0<65536)){s=47;break b}j[n>>1]=u;q=q+1|0;if(q>>>0>=f>>>0){s=48;break}else{p=p+8|0;n=n+2|0}}}break}case 17:{if(!f)s=48;else{n=a+12|0;p=b;q=e;o=0;while(1){if(k[n>>2]&128)Sd(p);u=p;v=k[u>>2]|0;t=k[u+4>>2]|0;if(!(t>>>0<0|(t|0)==0&v>>>0<65536)){s=47;break b}j[q>>1]=v;o=o+1|0;if(o>>>0>=f>>>0){s=48;break}else{p=p+8|0;q=q+2|0}}}break}default:s=48}while(0);if((s|0)==47){ne(b);ne(e);h=4;r=d;return h|0}else if((s|0)==48){ne(b);k[c>>2]=e;h=0;r=d;return h|0}}}return 0}function lc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;f=r;r=r+112|0;g=f+104|0;h=f+96|0;i=f+88|0;j=f+80|0;l=f+72|0;m=f+64|0;n=f+56|0;o=f+48|0;p=f+40|0;q=f+32|0;s=f+24|0;t=f+16|0;u=f+8|0;v=f;if(!e)switch(b|0){case 1:{e=k[a+628>>2]|0;k[v>>2]=d;vc(e,c,134429,v);r=f;return}case 2:{v=k[a+628>>2]|0;k[u>>2]=d;vc(v,c,134454,u);r=f;return}case 3:{u=k[a+628>>2]|0;k[t>>2]=d;vc(u,c,134481,t);r=f;return}case 4:{t=k[a+628>>2]|0;k[s>>2]=d;vc(t,c,134513,s);r=f;return}case 5:{s=k[a+628>>2]|0;k[q>>2]=d;vc(s,c,134538,q);r=f;return}case 6:{q=k[a+628>>2]|0;k[p>>2]=d;vc(q,c,134589,p);r=f;return}case 7:{p=k[a+628>>2]|0;k[o>>2]=d;vc(p,c,134631,o);r=f;return}default:Ja(141469,133171,3345,134661)}else switch(b|0){case 1:{b=k[a+628>>2]|0;k[n>>2]=d;ie(b,c,134687,n);r=f;return}case 2:{n=k[a+628>>2]|0;k[m>>2]=d;ie(n,c,134725,m);r=f;return}case 3:{m=k[a+628>>2]|0;k[l>>2]=d;ie(m,c,134765,l);r=f;return}case 4:{l=k[a+628>>2]|0;k[j>>2]=d;ie(l,c,134810,j);r=f;return}case 5:{j=k[a+628>>2]|0;k[i>>2]=d;ie(j,c,134848,i);r=f;return}case 6:{i=k[a+628>>2]|0;k[h>>2]=d;ie(i,c,134912,h);r=f;return}case 7:{h=k[a+628>>2]|0;k[g>>2]=d;ie(h,c,134967,g);r=f;return}default:Ja(141469,133171,3386,134661)}}
93
+function jr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0;do if(a>>>0<245){b=a>>>0<11?16:a+11&-8;c=b>>>3;d=k[30806]|0;e=d>>>c;if(e&3){f=(e&1^1)+c|0;g=f<<1;h=123264+(g<<2)|0;i=123264+(g+2<<2)|0;g=k[i>>2]|0;j=g+8|0;l=k[j>>2]|0;do if((h|0)!=(l|0)){if(l>>>0<(k[30810]|0)>>>0)db();m=l+12|0;if((k[m>>2]|0)==(g|0)){k[m>>2]=h;k[i>>2]=l;break}else db()}else k[30806]=d&~(1<<f);while(0);l=f<<3;k[g+4>>2]=l|3;i=g+(l|4)|0;k[i>>2]=k[i>>2]|1;n=j;return n|0}i=k[30808]|0;if(b>>>0>i>>>0){if(e){l=2<<c;h=e<<c&(l|0-l);l=(h&0-h)+-1|0;h=l>>>12&16;m=l>>>h;l=m>>>5&8;o=m>>>l;m=o>>>2&4;p=o>>>m;o=p>>>1&2;q=p>>>o;p=q>>>1&1;r=(l|h|m|o|p)+(q>>>p)|0;p=r<<1;q=123264+(p<<2)|0;o=123264+(p+2<<2)|0;p=k[o>>2]|0;m=p+8|0;h=k[m>>2]|0;do if((q|0)!=(h|0)){if(h>>>0<(k[30810]|0)>>>0)db();l=h+12|0;if((k[l>>2]|0)==(p|0)){k[l>>2]=q;k[o>>2]=h;s=k[30808]|0;break}else db()}else{k[30806]=d&~(1<<r);s=i}while(0);i=r<<3;d=i-b|0;k[p+4>>2]=b|3;h=p+b|0;k[p+(b|4)>>2]=d|1;k[p+i>>2]=d;if(s){i=k[30811]|0;o=s>>>3;q=o<<1;c=123264+(q<<2)|0;e=k[30806]|0;j=1<<o;if(e&j){o=123264+(q+2<<2)|0;g=k[o>>2]|0;if(g>>>0<(k[30810]|0)>>>0)db();else{t=o;u=g}}else{k[30806]=e|j;t=123264+(q+2<<2)|0;u=c}k[t>>2]=i;k[u+12>>2]=i;k[i+8>>2]=u;k[i+12>>2]=c}k[30808]=d;k[30811]=h;n=m;return n|0}h=k[30807]|0;if(h){d=(h&0-h)+-1|0;h=d>>>12&16;c=d>>>h;d=c>>>5&8;i=c>>>d;c=i>>>2&4;q=i>>>c;i=q>>>1&2;j=q>>>i;q=j>>>1&1;e=k[123528+((d|h|c|i|q)+(j>>>q)<<2)>>2]|0;q=(k[e+4>>2]&-8)-b|0;j=e;i=e;while(1){e=k[j+16>>2]|0;if(!e){c=k[j+20>>2]|0;if(!c){v=q;w=i;break}else x=c}else x=e;e=(k[x+4>>2]&-8)-b|0;c=e>>>0<q>>>0;q=c?e:q;j=x;i=c?x:i}i=k[30810]|0;if(w>>>0<i>>>0)db();j=w+b|0;if(w>>>0>=j>>>0)db();q=k[w+24>>2]|0;m=k[w+12>>2]|0;do if((m|0)==(w|0)){p=w+20|0;r=k[p>>2]|0;if(!r){c=w+16|0;e=k[c>>2]|0;if(!e){y=0;break}else{z=e;A=c}}else{z=r;A=p}while(1){p=z+20|0;r=k[p>>2]|0;if(r){z=r;A=p;continue}p=z+16|0;r=k[p>>2]|0;if(!r){B=z;C=A;break}else{z=r;A=p}}if(C>>>0<i>>>0)db();else{k[C>>2]=0;y=B;break}}else{p=k[w+8>>2]|0;if(p>>>0<i>>>0)db();r=p+12|0;if((k[r>>2]|0)!=(w|0))db();c=m+8|0;if((k[c>>2]|0)==(w|0)){k[r>>2]=m;k[c>>2]=p;y=m;break}else db()}while(0);do if(q){m=k[w+28>>2]|0;i=123528+(m<<2)|0;if((w|0)==(k[i>>2]|0)){k[i>>2]=y;if(!y){k[30807]=k[30807]&~(1<<m);break}}else{if(q>>>0<(k[30810]|0)>>>0)db();m=q+16|0;if((k[m>>2]|0)==(w|0))k[m>>2]=y;else k[q+20>>2]=y;if(!y)break}m=k[30810]|0;if(y>>>0<m>>>0)db();k[y+24>>2]=q;i=k[w+16>>2]|0;do if(i)if(i>>>0<m>>>0)db();else{k[y+16>>2]=i;k[i+24>>2]=y;break}while(0);i=k[w+20>>2]|0;if(i)if(i>>>0<(k[30810]|0)>>>0)db();else{k[y+20>>2]=i;k[i+24>>2]=y;break}}while(0);if(v>>>0<16){q=v+b|0;k[w+4>>2]=q|3;i=w+(q+4)|0;k[i>>2]=k[i>>2]|1}else{k[w+4>>2]=b|3;k[w+(b|4)>>2]=v|1;k[w+(v+b)>>2]=v;i=k[30808]|0;if(i){q=k[30811]|0;m=i>>>3;i=m<<1;p=123264+(i<<2)|0;c=k[30806]|0;r=1<<m;if(c&r){m=123264+(i+2<<2)|0;e=k[m>>2]|0;if(e>>>0<(k[30810]|0)>>>0)db();else{D=m;E=e}}else{k[30806]=c|r;D=123264+(i+2<<2)|0;E=p}k[D>>2]=q;k[E+12>>2]=q;k[q+8>>2]=E;k[q+12>>2]=p}k[30808]=v;k[30811]=j}n=w+8|0;return n|0}else F=b}else F=b}else if(a>>>0<=4294967231){p=a+11|0;q=p&-8;i=k[30807]|0;if(i){r=0-q|0;c=p>>>8;if(c)if(q>>>0>16777215)G=31;else{p=(c+1048320|0)>>>16&8;e=c<<p;c=(e+520192|0)>>>16&4;m=e<<c;e=(m+245760|0)>>>16&2;h=14-(c|p|e)+(m<<e>>>15)|0;G=q>>>(h+7|0)&1|h<<1}else G=0;h=k[123528+(G<<2)>>2]|0;a:do if(!h){H=r;I=0;J=0;K=86}else{e=r;m=0;p=q<<((G|0)==31?0:25-(G>>>1)|0);c=h;d=0;while(1){g=k[c+4>>2]&-8;o=g-q|0;if(o>>>0<e>>>0)if((g|0)==(q|0)){L=o;M=c;N=c;K=90;break a}else{O=o;P=c}else{O=e;P=d}o=k[c+20>>2]|0;c=k[c+16+(p>>>31<<2)>>2]|0;g=(o|0)==0|(o|0)==(c|0)?m:o;if(!c){H=O;I=g;J=P;K=86;break}else{e=O;m=g;p=p<<1;d=P}}}while(0);if((K|0)==86){if((I|0)==0&(J|0)==0){h=2<<G;r=i&(h|0-h);if(!r){F=q;break}h=(r&0-r)+-1|0;r=h>>>12&16;b=h>>>r;h=b>>>5&8;j=b>>>h;b=j>>>2&4;d=j>>>b;j=d>>>1&2;p=d>>>j;d=p>>>1&1;Q=k[123528+((h|r|b|j|d)+(p>>>d)<<2)>>2]|0;R=0}else{Q=I;R=J}if(!Q){S=H;T=R}else{L=H;M=Q;N=R;K=90}}if((K|0)==90)while(1){K=0;d=(k[M+4>>2]&-8)-q|0;p=d>>>0<L>>>0;j=p?d:L;d=p?M:N;p=k[M+16>>2]|0;if(p){L=j;M=p;N=d;K=90;continue}M=k[M+20>>2]|0;if(!M){S=j;T=d;break}else{L=j;N=d;K=90}}if((T|0)!=0?S>>>0<((k[30808]|0)-q|0)>>>0:0){i=k[30810]|0;if(T>>>0<i>>>0)db();d=T+q|0;if(T>>>0>=d>>>0)db();j=k[T+24>>2]|0;p=k[T+12>>2]|0;do if((p|0)==(T|0)){b=T+20|0;r=k[b>>2]|0;if(!r){h=T+16|0;m=k[h>>2]|0;if(!m){U=0;break}else{V=m;W=h}}else{V=r;W=b}while(1){b=V+20|0;r=k[b>>2]|0;if(r){V=r;W=b;continue}b=V+16|0;r=k[b>>2]|0;if(!r){X=V;Y=W;break}else{V=r;W=b}}if(Y>>>0<i>>>0)db();else{k[Y>>2]=0;U=X;break}}else{b=k[T+8>>2]|0;if(b>>>0<i>>>0)db();r=b+12|0;if((k[r>>2]|0)!=(T|0))db();h=p+8|0;if((k[h>>2]|0)==(T|0)){k[r>>2]=p;k[h>>2]=b;U=p;break}else db()}while(0);do if(j){p=k[T+28>>2]|0;i=123528+(p<<2)|0;if((T|0)==(k[i>>2]|0)){k[i>>2]=U;if(!U){k[30807]=k[30807]&~(1<<p);break}}else{if(j>>>0<(k[30810]|0)>>>0)db();p=j+16|0;if((k[p>>2]|0)==(T|0))k[p>>2]=U;else k[j+20>>2]=U;if(!U)break}p=k[30810]|0;if(U>>>0<p>>>0)db();k[U+24>>2]=j;i=k[T+16>>2]|0;do if(i)if(i>>>0<p>>>0)db();else{k[U+16>>2]=i;k[i+24>>2]=U;break}while(0);i=k[T+20>>2]|0;if(i)if(i>>>0<(k[30810]|0)>>>0)db();else{k[U+20>>2]=i;k[i+24>>2]=U;break}}while(0);b:do if(S>>>0>=16){k[T+4>>2]=q|3;k[T+(q|4)>>2]=S|1;k[T+(S+q)>>2]=S;j=S>>>3;if(S>>>0<256){i=j<<1;p=123264+(i<<2)|0;b=k[30806]|0;h=1<<j;if(b&h){j=123264+(i+2<<2)|0;r=k[j>>2]|0;if(r>>>0<(k[30810]|0)>>>0)db();else{Z=j;_=r}}else{k[30806]=b|h;Z=123264+(i+2<<2)|0;_=p}k[Z>>2]=d;k[_+12>>2]=d;k[T+(q+8)>>2]=_;k[T+(q+12)>>2]=p;break}p=S>>>8;if(p)if(S>>>0>16777215)$=31;else{i=(p+1048320|0)>>>16&8;h=p<<i;p=(h+520192|0)>>>16&4;b=h<<p;h=(b+245760|0)>>>16&2;r=14-(p|i|h)+(b<<h>>>15)|0;$=S>>>(r+7|0)&1|r<<1}else $=0;r=123528+($<<2)|0;k[T+(q+28)>>2]=$;k[T+(q+20)>>2]=0;k[T+(q+16)>>2]=0;h=k[30807]|0;b=1<<$;if(!(h&b)){k[30807]=h|b;k[r>>2]=d;k[T+(q+24)>>2]=r;k[T+(q+12)>>2]=d;k[T+(q+8)>>2]=d;break}b=k[r>>2]|0;c:do if((k[b+4>>2]&-8|0)!=(S|0)){r=S<<(($|0)==31?0:25-($>>>1)|0);h=b;while(1){i=h+16+(r>>>31<<2)|0;p=k[i>>2]|0;if(!p){aa=i;ba=h;break}if((k[p+4>>2]&-8|0)==(S|0)){ca=p;break c}else{r=r<<1;h=p}}if(aa>>>0<(k[30810]|0)>>>0)db();else{k[aa>>2]=d;k[T+(q+24)>>2]=ba;k[T+(q+12)>>2]=d;k[T+(q+8)>>2]=d;break b}}else ca=b;while(0);b=ca+8|0;h=k[b>>2]|0;r=k[30810]|0;if(h>>>0>=r>>>0&ca>>>0>=r>>>0){k[h+12>>2]=d;k[b>>2]=d;k[T+(q+8)>>2]=h;k[T+(q+12)>>2]=ca;k[T+(q+24)>>2]=0;break}else db()}else{h=S+q|0;k[T+4>>2]=h|3;b=T+(h+4)|0;k[b>>2]=k[b>>2]|1}while(0);n=T+8|0;return n|0}else F=q}else F=q}else F=-1;while(0);T=k[30808]|0;if(T>>>0>=F>>>0){S=T-F|0;ca=k[30811]|0;if(S>>>0>15){k[30811]=ca+F;k[30808]=S;k[ca+(F+4)>>2]=S|1;k[ca+T>>2]=S;k[ca+4>>2]=F|3}else{k[30808]=0;k[30811]=0;k[ca+4>>2]=T|3;S=ca+(T+4)|0;k[S>>2]=k[S>>2]|1}n=ca+8|0;return n|0}ca=k[30809]|0;if(ca>>>0>F>>>0){S=ca-F|0;k[30809]=S;ca=k[30812]|0;k[30812]=ca+F;k[ca+(F+4)>>2]=S|1;k[ca+4>>2]=F|3;n=ca+8|0;return n|0}do if(!(k[30924]|0)){ca=bb(30)|0;if(!(ca+-1&ca)){k[30926]=ca;k[30925]=ca;k[30927]=-1;k[30928]=-1;k[30929]=0;k[30917]=0;ca=(gb(0)|0)&-16^1431655768;k[30924]=ca;break}else db()}while(0);ca=F+48|0;S=k[30926]|0;T=F+47|0;ba=S+T|0;aa=0-S|0;S=ba&aa;if(S>>>0<=F>>>0){n=0;return n|0}$=k[30916]|0;if(($|0)!=0?(_=k[30914]|0,Z=_+S|0,Z>>>0<=_>>>0|Z>>>0>$>>>0):0){n=0;return n|0}d:do if(!(k[30917]&4)){$=k[30812]|0;e:do if($){Z=123672;while(1){_=k[Z>>2]|0;if(_>>>0<=$>>>0?(U=Z+4|0,(_+(k[U>>2]|0)|0)>>>0>$>>>0):0){da=Z;ea=U;break}Z=k[Z+8>>2]|0;if(!Z){K=174;break e}}Z=ba-(k[30809]|0)&aa;if(Z>>>0<2147483647){U=Oa(Z|0)|0;_=(U|0)==((k[da>>2]|0)+(k[ea>>2]|0)|0);X=_?Z:0;if(_)if((U|0)==(-1|0))fa=X;else{ga=U;ha=X;K=194;break d}else{ia=U;ja=Z;ka=X;K=184}}else fa=0}else K=174;while(0);do if((K|0)==174){$=Oa(0)|0;if(($|0)!=(-1|0)){q=$;X=k[30925]|0;Z=X+-1|0;if(!(Z&q))la=S;else la=S-q+(Z+q&0-X)|0;X=k[30914]|0;q=X+la|0;if(la>>>0>F>>>0&la>>>0<2147483647){Z=k[30916]|0;if((Z|0)!=0?q>>>0<=X>>>0|q>>>0>Z>>>0:0){fa=0;break}Z=Oa(la|0)|0;q=(Z|0)==($|0);X=q?la:0;if(q){ga=$;ha=X;K=194;break d}else{ia=Z;ja=la;ka=X;K=184}}else fa=0}else fa=0}while(0);f:do if((K|0)==184){X=0-ja|0;do if(ca>>>0>ja>>>0&(ja>>>0<2147483647&(ia|0)!=(-1|0))?(Z=k[30926]|0,$=T-ja+Z&0-Z,$>>>0<2147483647):0)if((Oa($|0)|0)==(-1|0)){Oa(X|0)|0;fa=ka;break f}else{ma=$+ja|0;break}else ma=ja;while(0);if((ia|0)==(-1|0))fa=ka;else{ga=ia;ha=ma;K=194;break d}}while(0);k[30917]=k[30917]|4;na=fa;K=191}else{na=0;K=191}while(0);if((((K|0)==191?S>>>0<2147483647:0)?(fa=Oa(S|0)|0,S=Oa(0)|0,fa>>>0<S>>>0&((fa|0)!=(-1|0)&(S|0)!=(-1|0))):0)?(ma=S-fa|0,S=ma>>>0>(F+40|0)>>>0,S):0){ga=fa;ha=S?ma:na;K=194}if((K|0)==194){na=(k[30914]|0)+ha|0;k[30914]=na;if(na>>>0>(k[30915]|0)>>>0)k[30915]=na;na=k[30812]|0;g:do if(na){ma=123672;do{S=k[ma>>2]|0;fa=ma+4|0;ia=k[fa>>2]|0;if((ga|0)==(S+ia|0)){oa=S;pa=fa;qa=ia;ra=ma;K=204;break}ma=k[ma+8>>2]|0}while((ma|0)!=0);if(((K|0)==204?(k[ra+12>>2]&8|0)==0:0)?na>>>0<ga>>>0&na>>>0>=oa>>>0:0){k[pa>>2]=qa+ha;ma=(k[30809]|0)+ha|0;ia=na+8|0;fa=(ia&7|0)==0?0:0-ia&7;ia=ma-fa|0;k[30812]=na+fa;k[30809]=ia;k[na+(fa+4)>>2]=ia|1;k[na+(ma+4)>>2]=40;k[30813]=k[30928];break}ma=k[30810]|0;if(ga>>>0<ma>>>0){k[30810]=ga;sa=ga}else sa=ma;ma=ga+ha|0;ia=123672;while(1){if((k[ia>>2]|0)==(ma|0)){ta=ia;ua=ia;K=212;break}ia=k[ia+8>>2]|0;if(!ia){va=123672;break}}if((K|0)==212)if(!(k[ua+12>>2]&8)){k[ta>>2]=ga;ia=ua+4|0;k[ia>>2]=(k[ia>>2]|0)+ha;ia=ga+8|0;ma=(ia&7|0)==0?0:0-ia&7;ia=ga+(ha+8)|0;fa=(ia&7|0)==0?0:0-ia&7;ia=ga+(fa+ha)|0;S=ma+F|0;ka=ga+S|0;ja=ia-(ga+ma)-F|0;k[ga+(ma+4)>>2]=F|3;h:do if((ia|0)!=(na|0)){if((ia|0)==(k[30811]|0)){T=(k[30808]|0)+ja|0;k[30808]=T;k[30811]=ka;k[ga+(S+4)>>2]=T|1;k[ga+(T+S)>>2]=T;break}T=ha+4|0;ca=k[ga+(T+fa)>>2]|0;if((ca&3|0)==1){la=ca&-8;ea=ca>>>3;i:do if(ca>>>0>=256){da=k[ga+((fa|24)+ha)>>2]|0;aa=k[ga+(ha+12+fa)>>2]|0;do if((aa|0)==(ia|0)){ba=fa|16;X=ga+(T+ba)|0;$=k[X>>2]|0;if(!$){Z=ga+(ba+ha)|0;ba=k[Z>>2]|0;if(!ba){wa=0;break}else{xa=ba;ya=Z}}else{xa=$;ya=X}while(1){X=xa+20|0;$=k[X>>2]|0;if($){xa=$;ya=X;continue}X=xa+16|0;$=k[X>>2]|0;if(!$){za=xa;Aa=ya;break}else{xa=$;ya=X}}if(Aa>>>0<sa>>>0)db();else{k[Aa>>2]=0;wa=za;break}}else{X=k[ga+((fa|8)+ha)>>2]|0;if(X>>>0<sa>>>0)db();$=X+12|0;if((k[$>>2]|0)!=(ia|0))db();Z=aa+8|0;if((k[Z>>2]|0)==(ia|0)){k[$>>2]=aa;k[Z>>2]=X;wa=aa;break}else db()}while(0);if(!da)break;aa=k[ga+(ha+28+fa)>>2]|0;X=123528+(aa<<2)|0;do if((ia|0)!=(k[X>>2]|0)){if(da>>>0<(k[30810]|0)>>>0)db();Z=da+16|0;if((k[Z>>2]|0)==(ia|0))k[Z>>2]=wa;else k[da+20>>2]=wa;if(!wa)break i}else{k[X>>2]=wa;if(wa)break;k[30807]=k[30807]&~(1<<aa);break i}while(0);aa=k[30810]|0;if(wa>>>0<aa>>>0)db();k[wa+24>>2]=da;X=fa|16;Z=k[ga+(X+ha)>>2]|0;do if(Z)if(Z>>>0<aa>>>0)db();else{k[wa+16>>2]=Z;k[Z+24>>2]=wa;break}while(0);Z=k[ga+(T+X)>>2]|0;if(!Z)break;if(Z>>>0<(k[30810]|0)>>>0)db();else{k[wa+20>>2]=Z;k[Z+24>>2]=wa;break}}else{Z=k[ga+((fa|8)+ha)>>2]|0;aa=k[ga+(ha+12+fa)>>2]|0;da=123264+(ea<<1<<2)|0;do if((Z|0)!=(da|0)){if(Z>>>0<sa>>>0)db();if((k[Z+12>>2]|0)==(ia|0))break;db()}while(0);if((aa|0)==(Z|0)){k[30806]=k[30806]&~(1<<ea);break}do if((aa|0)==(da|0))Ba=aa+8|0;else{if(aa>>>0<sa>>>0)db();X=aa+8|0;if((k[X>>2]|0)==(ia|0)){Ba=X;break}db()}while(0);k[Z+12>>2]=aa;k[Ba>>2]=Z}while(0);Ca=ga+((la|fa)+ha)|0;Da=la+ja|0}else{Ca=ia;Da=ja}ea=Ca+4|0;k[ea>>2]=k[ea>>2]&-2;k[ga+(S+4)>>2]=Da|1;k[ga+(Da+S)>>2]=Da;ea=Da>>>3;if(Da>>>0<256){T=ea<<1;ca=123264+(T<<2)|0;da=k[30806]|0;X=1<<ea;do if(!(da&X)){k[30806]=da|X;Ea=123264+(T+2<<2)|0;Fa=ca}else{ea=123264+(T+2<<2)|0;$=k[ea>>2]|0;if($>>>0>=(k[30810]|0)>>>0){Ea=ea;Fa=$;break}db()}while(0);k[Ea>>2]=ka;k[Fa+12>>2]=ka;k[ga+(S+8)>>2]=Fa;k[ga+(S+12)>>2]=ca;break}T=Da>>>8;do if(!T)Ga=0;else{if(Da>>>0>16777215){Ga=31;break}X=(T+1048320|0)>>>16&8;da=T<<X;la=(da+520192|0)>>>16&4;$=da<<la;da=($+245760|0)>>>16&2;ea=14-(la|X|da)+($<<da>>>15)|0;Ga=Da>>>(ea+7|0)&1|ea<<1}while(0);T=123528+(Ga<<2)|0;k[ga+(S+28)>>2]=Ga;k[ga+(S+20)>>2]=0;k[ga+(S+16)>>2]=0;ca=k[30807]|0;ea=1<<Ga;if(!(ca&ea)){k[30807]=ca|ea;k[T>>2]=ka;k[ga+(S+24)>>2]=T;k[ga+(S+12)>>2]=ka;k[ga+(S+8)>>2]=ka;break}ea=k[T>>2]|0;j:do if((k[ea+4>>2]&-8|0)!=(Da|0)){T=Da<<((Ga|0)==31?0:25-(Ga>>>1)|0);ca=ea;while(1){da=ca+16+(T>>>31<<2)|0;$=k[da>>2]|0;if(!$){Ha=da;Ia=ca;break}if((k[$+4>>2]&-8|0)==(Da|0)){Ja=$;break j}else{T=T<<1;ca=$}}if(Ha>>>0<(k[30810]|0)>>>0)db();else{k[Ha>>2]=ka;k[ga+(S+24)>>2]=Ia;k[ga+(S+12)>>2]=ka;k[ga+(S+8)>>2]=ka;break h}}else Ja=ea;while(0);ea=Ja+8|0;ca=k[ea>>2]|0;T=k[30810]|0;if(ca>>>0>=T>>>0&Ja>>>0>=T>>>0){k[ca+12>>2]=ka;k[ea>>2]=ka;k[ga+(S+8)>>2]=ca;k[ga+(S+12)>>2]=Ja;k[ga+(S+24)>>2]=0;break}else db()}else{ca=(k[30809]|0)+ja|0;k[30809]=ca;k[30812]=ka;k[ga+(S+4)>>2]=ca|1}while(0);n=ga+(ma|8)|0;return n|0}else va=123672;while(1){S=k[va>>2]|0;if(S>>>0<=na>>>0?(ka=k[va+4>>2]|0,ja=S+ka|0,ja>>>0>na>>>0):0){Ka=S;La=ka;Ma=ja;break}va=k[va+8>>2]|0}ma=Ka+(La+-39)|0;ja=Ka+(La+-47+((ma&7|0)==0?0:0-ma&7))|0;ma=na+16|0;ka=ja>>>0<ma>>>0?na:ja;ja=ka+8|0;S=ga+8|0;ia=(S&7|0)==0?0:0-S&7;S=ha+-40-ia|0;k[30812]=ga+ia;k[30809]=S;k[ga+(ia+4)>>2]=S|1;k[ga+(ha+-36)>>2]=40;k[30813]=k[30928];S=ka+4|0;k[S>>2]=27;k[ja>>2]=k[30918];k[ja+4>>2]=k[30919];k[ja+8>>2]=k[30920];k[ja+12>>2]=k[30921];k[30918]=ga;k[30919]=ha;k[30921]=0;k[30920]=ja;ja=ka+28|0;k[ja>>2]=7;if((ka+32|0)>>>0<Ma>>>0){ia=ja;do{ja=ia;ia=ia+4|0;k[ia>>2]=7}while((ja+8|0)>>>0<Ma>>>0)}if((ka|0)!=(na|0)){ia=ka-na|0;k[S>>2]=k[S>>2]&-2;k[na+4>>2]=ia|1;k[ka>>2]=ia;ja=ia>>>3;if(ia>>>0<256){fa=ja<<1;ca=123264+(fa<<2)|0;ea=k[30806]|0;T=1<<ja;if(ea&T){ja=123264+(fa+2<<2)|0;Z=k[ja>>2]|0;if(Z>>>0<(k[30810]|0)>>>0)db();else{Na=ja;Pa=Z}}else{k[30806]=ea|T;Na=123264+(fa+2<<2)|0;Pa=ca}k[Na>>2]=na;k[Pa+12>>2]=na;k[na+8>>2]=Pa;k[na+12>>2]=ca;break}ca=ia>>>8;if(ca)if(ia>>>0>16777215)Qa=31;else{fa=(ca+1048320|0)>>>16&8;T=ca<<fa;ca=(T+520192|0)>>>16&4;ea=T<<ca;T=(ea+245760|0)>>>16&2;Z=14-(ca|fa|T)+(ea<<T>>>15)|0;Qa=ia>>>(Z+7|0)&1|Z<<1}else Qa=0;Z=123528+(Qa<<2)|0;k[na+28>>2]=Qa;k[na+20>>2]=0;k[ma>>2]=0;T=k[30807]|0;ea=1<<Qa;if(!(T&ea)){k[30807]=T|ea;k[Z>>2]=na;k[na+24>>2]=Z;k[na+12>>2]=na;k[na+8>>2]=na;break}ea=k[Z>>2]|0;k:do if((k[ea+4>>2]&-8|0)!=(ia|0)){Z=ia<<((Qa|0)==31?0:25-(Qa>>>1)|0);T=ea;while(1){fa=T+16+(Z>>>31<<2)|0;ca=k[fa>>2]|0;if(!ca){Ra=fa;Sa=T;break}if((k[ca+4>>2]&-8|0)==(ia|0)){Ta=ca;break k}else{Z=Z<<1;T=ca}}if(Ra>>>0<(k[30810]|0)>>>0)db();else{k[Ra>>2]=na;k[na+24>>2]=Sa;k[na+12>>2]=na;k[na+8>>2]=na;break g}}else Ta=ea;while(0);ea=Ta+8|0;ia=k[ea>>2]|0;ma=k[30810]|0;if(ia>>>0>=ma>>>0&Ta>>>0>=ma>>>0){k[ia+12>>2]=na;k[ea>>2]=na;k[na+8>>2]=ia;k[na+12>>2]=Ta;k[na+24>>2]=0;break}else db()}}else{ia=k[30810]|0;if((ia|0)==0|ga>>>0<ia>>>0)k[30810]=ga;k[30918]=ga;k[30919]=ha;k[30921]=0;k[30815]=k[30924];k[30814]=-1;ia=0;do{ea=ia<<1;ma=123264+(ea<<2)|0;k[123264+(ea+3<<2)>>2]=ma;k[123264+(ea+2<<2)>>2]=ma;ia=ia+1|0}while((ia|0)!=32);ia=ga+8|0;ma=(ia&7|0)==0?0:0-ia&7;ia=ha+-40-ma|0;k[30812]=ga+ma;k[30809]=ia;k[ga+(ma+4)>>2]=ia|1;k[ga+(ha+-36)>>2]=40;k[30813]=k[30928]}while(0);ha=k[30809]|0;if(ha>>>0>F>>>0){ga=ha-F|0;k[30809]=ga;ha=k[30812]|0;k[30812]=ha+F;k[ha+(F+4)>>2]=ga|1;k[ha+4>>2]=F|3;n=ha+8|0;return n|0}}ha=Np()|0;k[ha>>2]=12;n=0;return n|0}function kr(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;if(!a)return;b=a+-8|0;c=k[30810]|0;if(b>>>0<c>>>0)db();d=k[a+-4>>2]|0;e=d&3;if((e|0)==1)db();f=d&-8;g=a+(f+-8)|0;do if(!(d&1)){h=k[b>>2]|0;if(!e)return;i=-8-h|0;j=a+i|0;l=h+f|0;if(j>>>0<c>>>0)db();if((j|0)==(k[30811]|0)){m=a+(f+-4)|0;n=k[m>>2]|0;if((n&3|0)!=3){o=j;p=l;break}k[30808]=l;k[m>>2]=n&-2;k[a+(i+4)>>2]=l|1;k[g>>2]=l;return}n=h>>>3;if(h>>>0<256){h=k[a+(i+8)>>2]|0;m=k[a+(i+12)>>2]|0;q=123264+(n<<1<<2)|0;if((h|0)!=(q|0)){if(h>>>0<c>>>0)db();if((k[h+12>>2]|0)!=(j|0))db()}if((m|0)==(h|0)){k[30806]=k[30806]&~(1<<n);o=j;p=l;break}if((m|0)!=(q|0)){if(m>>>0<c>>>0)db();q=m+8|0;if((k[q>>2]|0)==(j|0))r=q;else db()}else r=m+8|0;k[h+12>>2]=m;k[r>>2]=h;o=j;p=l;break}h=k[a+(i+24)>>2]|0;m=k[a+(i+12)>>2]|0;do if((m|0)==(j|0)){q=a+(i+20)|0;n=k[q>>2]|0;if(!n){s=a+(i+16)|0;t=k[s>>2]|0;if(!t){u=0;break}else{v=t;w=s}}else{v=n;w=q}while(1){q=v+20|0;n=k[q>>2]|0;if(n){v=n;w=q;continue}q=v+16|0;n=k[q>>2]|0;if(!n){x=v;y=w;break}else{v=n;w=q}}if(y>>>0<c>>>0)db();else{k[y>>2]=0;u=x;break}}else{q=k[a+(i+8)>>2]|0;if(q>>>0<c>>>0)db();n=q+12|0;if((k[n>>2]|0)!=(j|0))db();s=m+8|0;if((k[s>>2]|0)==(j|0)){k[n>>2]=m;k[s>>2]=q;u=m;break}else db()}while(0);if(h){m=k[a+(i+28)>>2]|0;q=123528+(m<<2)|0;if((j|0)==(k[q>>2]|0)){k[q>>2]=u;if(!u){k[30807]=k[30807]&~(1<<m);o=j;p=l;break}}else{if(h>>>0<(k[30810]|0)>>>0)db();m=h+16|0;if((k[m>>2]|0)==(j|0))k[m>>2]=u;else k[h+20>>2]=u;if(!u){o=j;p=l;break}}m=k[30810]|0;if(u>>>0<m>>>0)db();k[u+24>>2]=h;q=k[a+(i+16)>>2]|0;do if(q)if(q>>>0<m>>>0)db();else{k[u+16>>2]=q;k[q+24>>2]=u;break}while(0);q=k[a+(i+20)>>2]|0;if(q)if(q>>>0<(k[30810]|0)>>>0)db();else{k[u+20>>2]=q;k[q+24>>2]=u;o=j;p=l;break}else{o=j;p=l}}else{o=j;p=l}}else{o=b;p=f}while(0);if(o>>>0>=g>>>0)db();b=a+(f+-4)|0;u=k[b>>2]|0;if(!(u&1))db();if(!(u&2)){if((g|0)==(k[30812]|0)){c=(k[30809]|0)+p|0;k[30809]=c;k[30812]=o;k[o+4>>2]=c|1;if((o|0)!=(k[30811]|0))return;k[30811]=0;k[30808]=0;return}if((g|0)==(k[30811]|0)){c=(k[30808]|0)+p|0;k[30808]=c;k[30811]=o;k[o+4>>2]=c|1;k[o+c>>2]=c;return}c=(u&-8)+p|0;x=u>>>3;do if(u>>>0>=256){y=k[a+(f+16)>>2]|0;w=k[a+(f|4)>>2]|0;do if((w|0)==(g|0)){v=a+(f+12)|0;r=k[v>>2]|0;if(!r){e=a+(f+8)|0;d=k[e>>2]|0;if(!d){z=0;break}else{A=d;B=e}}else{A=r;B=v}while(1){v=A+20|0;r=k[v>>2]|0;if(r){A=r;B=v;continue}v=A+16|0;r=k[v>>2]|0;if(!r){C=A;D=B;break}else{A=r;B=v}}if(D>>>0<(k[30810]|0)>>>0)db();else{k[D>>2]=0;z=C;break}}else{v=k[a+f>>2]|0;if(v>>>0<(k[30810]|0)>>>0)db();r=v+12|0;if((k[r>>2]|0)!=(g|0))db();e=w+8|0;if((k[e>>2]|0)==(g|0)){k[r>>2]=w;k[e>>2]=v;z=w;break}else db()}while(0);if(y){w=k[a+(f+20)>>2]|0;l=123528+(w<<2)|0;if((g|0)==(k[l>>2]|0)){k[l>>2]=z;if(!z){k[30807]=k[30807]&~(1<<w);break}}else{if(y>>>0<(k[30810]|0)>>>0)db();w=y+16|0;if((k[w>>2]|0)==(g|0))k[w>>2]=z;else k[y+20>>2]=z;if(!z)break}w=k[30810]|0;if(z>>>0<w>>>0)db();k[z+24>>2]=y;l=k[a+(f+8)>>2]|0;do if(l)if(l>>>0<w>>>0)db();else{k[z+16>>2]=l;k[l+24>>2]=z;break}while(0);l=k[a+(f+12)>>2]|0;if(l)if(l>>>0<(k[30810]|0)>>>0)db();else{k[z+20>>2]=l;k[l+24>>2]=z;break}}}else{l=k[a+f>>2]|0;w=k[a+(f|4)>>2]|0;y=123264+(x<<1<<2)|0;if((l|0)!=(y|0)){if(l>>>0<(k[30810]|0)>>>0)db();if((k[l+12>>2]|0)!=(g|0))db()}if((w|0)==(l|0)){k[30806]=k[30806]&~(1<<x);break}if((w|0)!=(y|0)){if(w>>>0<(k[30810]|0)>>>0)db();y=w+8|0;if((k[y>>2]|0)==(g|0))E=y;else db()}else E=w+8|0;k[l+12>>2]=w;k[E>>2]=l}while(0);k[o+4>>2]=c|1;k[o+c>>2]=c;if((o|0)==(k[30811]|0)){k[30808]=c;return}else F=c}else{k[b>>2]=u&-2;k[o+4>>2]=p|1;k[o+p>>2]=p;F=p}p=F>>>3;if(F>>>0<256){u=p<<1;b=123264+(u<<2)|0;c=k[30806]|0;E=1<<p;if(c&E){p=123264+(u+2<<2)|0;g=k[p>>2]|0;if(g>>>0<(k[30810]|0)>>>0)db();else{G=p;H=g}}else{k[30806]=c|E;G=123264+(u+2<<2)|0;H=b}k[G>>2]=o;k[H+12>>2]=o;k[o+8>>2]=H;k[o+12>>2]=b;return}b=F>>>8;if(b)if(F>>>0>16777215)I=31;else{H=(b+1048320|0)>>>16&8;G=b<<H;b=(G+520192|0)>>>16&4;u=G<<b;G=(u+245760|0)>>>16&2;E=14-(b|H|G)+(u<<G>>>15)|0;I=F>>>(E+7|0)&1|E<<1}else I=0;E=123528+(I<<2)|0;k[o+28>>2]=I;k[o+20>>2]=0;k[o+16>>2]=0;G=k[30807]|0;u=1<<I;a:do if(G&u){H=k[E>>2]|0;b:do if((k[H+4>>2]&-8|0)!=(F|0)){b=F<<((I|0)==31?0:25-(I>>>1)|0);c=H;while(1){g=c+16+(b>>>31<<2)|0;p=k[g>>2]|0;if(!p){J=g;K=c;break}if((k[p+4>>2]&-8|0)==(F|0)){L=p;break b}else{b=b<<1;c=p}}if(J>>>0<(k[30810]|0)>>>0)db();else{k[J>>2]=o;k[o+24>>2]=K;k[o+12>>2]=o;k[o+8>>2]=o;break a}}else L=H;while(0);H=L+8|0;c=k[H>>2]|0;b=k[30810]|0;if(c>>>0>=b>>>0&L>>>0>=b>>>0){k[c+12>>2]=o;k[H>>2]=o;k[o+8>>2]=c;k[o+12>>2]=L;k[o+24>>2]=0;break}else db()}else{k[30807]=G|u;k[E>>2]=o;k[o+24>>2]=E;k[o+12>>2]=o;k[o+8>>2]=o}while(0);o=(k[30814]|0)+-1|0;k[30814]=o;if(!o)M=123680;else return;while(1){o=k[M>>2]|0;if(!o)break;else M=o+8|0}k[30814]=-1;return}function lr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if(!a){c=jr(b)|0;return c|0}if(b>>>0>4294967231){d=Np()|0;k[d>>2]=12;c=0;return c|0}d=mr(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d){c=d+8|0;return c|0}d=jr(b)|0;if(!d){c=0;return c|0}e=k[a+-4>>2]|0;f=(e&-8)-((e&3|0)==0?8:4)|0;wr(d|0,a|0,(f>>>0<b>>>0?f:b)|0)|0;kr(a);c=d;return c|0}function mr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;c=a+4|0;d=k[c>>2]|0;e=d&-8;f=a+e|0;g=k[30810]|0;h=d&3;if(!((h|0)!=1&a>>>0>=g>>>0&a>>>0<f>>>0))db();i=a+(e|4)|0;j=k[i>>2]|0;if(!(j&1))db();if(!h){if(b>>>0<256){l=0;return l|0}if(e>>>0>=(b+4|0)>>>0?(e-b|0)>>>0<=k[30926]<<1>>>0:0){l=a;return l|0}l=0;return l|0}if(e>>>0>=b>>>0){h=e-b|0;if(h>>>0<=15){l=a;return l|0}k[c>>2]=d&1|b|2;k[a+(b+4)>>2]=h|3;k[i>>2]=k[i>>2]|1;nr(a+b|0,h);l=a;return l|0}if((f|0)==(k[30812]|0)){h=(k[30809]|0)+e|0;if(h>>>0<=b>>>0){l=0;return l|0}i=h-b|0;k[c>>2]=d&1|b|2;k[a+(b+4)>>2]=i|1;k[30812]=a+b;k[30809]=i;l=a;return l|0}if((f|0)==(k[30811]|0)){i=(k[30808]|0)+e|0;if(i>>>0<b>>>0){l=0;return l|0}h=i-b|0;if(h>>>0>15){k[c>>2]=d&1|b|2;k[a+(b+4)>>2]=h|1;k[a+i>>2]=h;m=a+(i+4)|0;k[m>>2]=k[m>>2]&-2;n=a+b|0;o=h}else{k[c>>2]=d&1|i|2;h=a+(i+4)|0;k[h>>2]=k[h>>2]|1;n=0;o=0}k[30808]=o;k[30811]=n;l=a;return l|0}if(j&2){l=0;return l|0}n=(j&-8)+e|0;if(n>>>0<b>>>0){l=0;return l|0}o=n-b|0;h=j>>>3;do if(j>>>0>=256){i=k[a+(e+24)>>2]|0;m=k[a+(e+12)>>2]|0;do if((m|0)==(f|0)){p=a+(e+20)|0;q=k[p>>2]|0;if(!q){r=a+(e+16)|0;s=k[r>>2]|0;if(!s){t=0;break}else{u=s;v=r}}else{u=q;v=p}while(1){p=u+20|0;q=k[p>>2]|0;if(q){u=q;v=p;continue}p=u+16|0;q=k[p>>2]|0;if(!q){w=u;x=v;break}else{u=q;v=p}}if(x>>>0<g>>>0)db();else{k[x>>2]=0;t=w;break}}else{p=k[a+(e+8)>>2]|0;if(p>>>0<g>>>0)db();q=p+12|0;if((k[q>>2]|0)!=(f|0))db();r=m+8|0;if((k[r>>2]|0)==(f|0)){k[q>>2]=m;k[r>>2]=p;t=m;break}else db()}while(0);if(i){m=k[a+(e+28)>>2]|0;p=123528+(m<<2)|0;if((f|0)==(k[p>>2]|0)){k[p>>2]=t;if(!t){k[30807]=k[30807]&~(1<<m);break}}else{if(i>>>0<(k[30810]|0)>>>0)db();m=i+16|0;if((k[m>>2]|0)==(f|0))k[m>>2]=t;else k[i+20>>2]=t;if(!t)break}m=k[30810]|0;if(t>>>0<m>>>0)db();k[t+24>>2]=i;p=k[a+(e+16)>>2]|0;do if(p)if(p>>>0<m>>>0)db();else{k[t+16>>2]=p;k[p+24>>2]=t;break}while(0);p=k[a+(e+20)>>2]|0;if(p)if(p>>>0<(k[30810]|0)>>>0)db();else{k[t+20>>2]=p;k[p+24>>2]=t;break}}}else{p=k[a+(e+8)>>2]|0;m=k[a+(e+12)>>2]|0;i=123264+(h<<1<<2)|0;if((p|0)!=(i|0)){if(p>>>0<g>>>0)db();if((k[p+12>>2]|0)!=(f|0))db()}if((m|0)==(p|0)){k[30806]=k[30806]&~(1<<h);break}if((m|0)!=(i|0)){if(m>>>0<g>>>0)db();i=m+8|0;if((k[i>>2]|0)==(f|0))y=i;else db()}else y=m+8|0;k[p+12>>2]=m;k[y>>2]=p}while(0);if(o>>>0<16){k[c>>2]=n|d&1|2;y=a+(n|4)|0;k[y>>2]=k[y>>2]|1;l=a;return l|0}else{k[c>>2]=d&1|b|2;k[a+(b+4)>>2]=o|3;d=a+(n|4)|0;k[d>>2]=k[d>>2]|1;nr(a+b|0,o);l=a;return l|0}return 0}function nr(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;c=a+b|0;d=k[a+4>>2]|0;do if(!(d&1)){e=k[a>>2]|0;if(!(d&3))return;f=a+(0-e)|0;g=e+b|0;h=k[30810]|0;if(f>>>0<h>>>0)db();if((f|0)==(k[30811]|0)){i=a+(b+4)|0;j=k[i>>2]|0;if((j&3|0)!=3){l=f;m=g;break}k[30808]=g;k[i>>2]=j&-2;k[a+(4-e)>>2]=g|1;k[c>>2]=g;return}j=e>>>3;if(e>>>0<256){i=k[a+(8-e)>>2]|0;n=k[a+(12-e)>>2]|0;o=123264+(j<<1<<2)|0;if((i|0)!=(o|0)){if(i>>>0<h>>>0)db();if((k[i+12>>2]|0)!=(f|0))db()}if((n|0)==(i|0)){k[30806]=k[30806]&~(1<<j);l=f;m=g;break}if((n|0)!=(o|0)){if(n>>>0<h>>>0)db();o=n+8|0;if((k[o>>2]|0)==(f|0))p=o;else db()}else p=n+8|0;k[i+12>>2]=n;k[p>>2]=i;l=f;m=g;break}i=k[a+(24-e)>>2]|0;n=k[a+(12-e)>>2]|0;do if((n|0)==(f|0)){o=16-e|0;j=a+(o+4)|0;q=k[j>>2]|0;if(!q){r=a+o|0;o=k[r>>2]|0;if(!o){s=0;break}else{t=o;u=r}}else{t=q;u=j}while(1){j=t+20|0;q=k[j>>2]|0;if(q){t=q;u=j;continue}j=t+16|0;q=k[j>>2]|0;if(!q){v=t;w=u;break}else{t=q;u=j}}if(w>>>0<h>>>0)db();else{k[w>>2]=0;s=v;break}}else{j=k[a+(8-e)>>2]|0;if(j>>>0<h>>>0)db();q=j+12|0;if((k[q>>2]|0)!=(f|0))db();r=n+8|0;if((k[r>>2]|0)==(f|0)){k[q>>2]=n;k[r>>2]=j;s=n;break}else db()}while(0);if(i){n=k[a+(28-e)>>2]|0;h=123528+(n<<2)|0;if((f|0)==(k[h>>2]|0)){k[h>>2]=s;if(!s){k[30807]=k[30807]&~(1<<n);l=f;m=g;break}}else{if(i>>>0<(k[30810]|0)>>>0)db();n=i+16|0;if((k[n>>2]|0)==(f|0))k[n>>2]=s;else k[i+20>>2]=s;if(!s){l=f;m=g;break}}n=k[30810]|0;if(s>>>0<n>>>0)db();k[s+24>>2]=i;h=16-e|0;j=k[a+h>>2]|0;do if(j)if(j>>>0<n>>>0)db();else{k[s+16>>2]=j;k[j+24>>2]=s;break}while(0);j=k[a+(h+4)>>2]|0;if(j)if(j>>>0<(k[30810]|0)>>>0)db();else{k[s+20>>2]=j;k[j+24>>2]=s;l=f;m=g;break}else{l=f;m=g}}else{l=f;m=g}}else{l=a;m=b}while(0);s=k[30810]|0;if(c>>>0<s>>>0)db();v=a+(b+4)|0;w=k[v>>2]|0;if(!(w&2)){if((c|0)==(k[30812]|0)){u=(k[30809]|0)+m|0;k[30809]=u;k[30812]=l;k[l+4>>2]=u|1;if((l|0)!=(k[30811]|0))return;k[30811]=0;k[30808]=0;return}if((c|0)==(k[30811]|0)){u=(k[30808]|0)+m|0;k[30808]=u;k[30811]=l;k[l+4>>2]=u|1;k[l+u>>2]=u;return}u=(w&-8)+m|0;t=w>>>3;do if(w>>>0>=256){p=k[a+(b+24)>>2]|0;d=k[a+(b+12)>>2]|0;do if((d|0)==(c|0)){j=a+(b+20)|0;n=k[j>>2]|0;if(!n){e=a+(b+16)|0;i=k[e>>2]|0;if(!i){x=0;break}else{y=i;z=e}}else{y=n;z=j}while(1){j=y+20|0;n=k[j>>2]|0;if(n){y=n;z=j;continue}j=y+16|0;n=k[j>>2]|0;if(!n){A=y;B=z;break}else{y=n;z=j}}if(B>>>0<s>>>0)db();else{k[B>>2]=0;x=A;break}}else{j=k[a+(b+8)>>2]|0;if(j>>>0<s>>>0)db();n=j+12|0;if((k[n>>2]|0)!=(c|0))db();e=d+8|0;if((k[e>>2]|0)==(c|0)){k[n>>2]=d;k[e>>2]=j;x=d;break}else db()}while(0);if(p){d=k[a+(b+28)>>2]|0;g=123528+(d<<2)|0;if((c|0)==(k[g>>2]|0)){k[g>>2]=x;if(!x){k[30807]=k[30807]&~(1<<d);break}}else{if(p>>>0<(k[30810]|0)>>>0)db();d=p+16|0;if((k[d>>2]|0)==(c|0))k[d>>2]=x;else k[p+20>>2]=x;if(!x)break}d=k[30810]|0;if(x>>>0<d>>>0)db();k[x+24>>2]=p;g=k[a+(b+16)>>2]|0;do if(g)if(g>>>0<d>>>0)db();else{k[x+16>>2]=g;k[g+24>>2]=x;break}while(0);g=k[a+(b+20)>>2]|0;if(g)if(g>>>0<(k[30810]|0)>>>0)db();else{k[x+20>>2]=g;k[g+24>>2]=x;break}}}else{g=k[a+(b+8)>>2]|0;d=k[a+(b+12)>>2]|0;p=123264+(t<<1<<2)|0;if((g|0)!=(p|0)){if(g>>>0<s>>>0)db();if((k[g+12>>2]|0)!=(c|0))db()}if((d|0)==(g|0)){k[30806]=k[30806]&~(1<<t);break}if((d|0)!=(p|0)){if(d>>>0<s>>>0)db();p=d+8|0;if((k[p>>2]|0)==(c|0))C=p;else db()}else C=d+8|0;k[g+12>>2]=d;k[C>>2]=g}while(0);k[l+4>>2]=u|1;k[l+u>>2]=u;if((l|0)==(k[30811]|0)){k[30808]=u;return}else D=u}else{k[v>>2]=w&-2;k[l+4>>2]=m|1;k[l+m>>2]=m;D=m}m=D>>>3;if(D>>>0<256){w=m<<1;v=123264+(w<<2)|0;u=k[30806]|0;C=1<<m;if(u&C){m=123264+(w+2<<2)|0;c=k[m>>2]|0;if(c>>>0<(k[30810]|0)>>>0)db();else{E=m;F=c}}else{k[30806]=u|C;E=123264+(w+2<<2)|0;F=v}k[E>>2]=l;k[F+12>>2]=l;k[l+8>>2]=F;k[l+12>>2]=v;return}v=D>>>8;if(v)if(D>>>0>16777215)G=31;else{F=(v+1048320|0)>>>16&8;E=v<<F;v=(E+520192|0)>>>16&4;w=E<<v;E=(w+245760|0)>>>16&2;C=14-(v|F|E)+(w<<E>>>15)|0;G=D>>>(C+7|0)&1|C<<1}else G=0;C=123528+(G<<2)|0;k[l+28>>2]=G;k[l+20>>2]=0;k[l+16>>2]=0;E=k[30807]|0;w=1<<G;if(!(E&w)){k[30807]=E|w;k[C>>2]=l;k[l+24>>2]=C;k[l+12>>2]=l;k[l+8>>2]=l;return}w=k[C>>2]|0;a:do if((k[w+4>>2]&-8|0)==(D|0))H=w;else{C=D<<((G|0)==31?0:25-(G>>>1)|0);E=w;while(1){F=E+16+(C>>>31<<2)|0;v=k[F>>2]|0;if(!v){I=F;J=E;break}if((k[v+4>>2]&-8|0)==(D|0)){H=v;break a}else{C=C<<1;E=v}}if(I>>>0<(k[30810]|0)>>>0)db();k[I>>2]=l;k[l+24>>2]=J;k[l+12>>2]=l;k[l+8>>2]=l;return}while(0);J=H+8|0;I=k[J>>2]|0;D=k[30810]|0;if(!(I>>>0>=D>>>0&H>>>0>=D>>>0))db();k[I+12>>2]=l;k[J>>2]=l;k[l+8>>2]=I;k[l+12>>2]=H;k[l+24>>2]=0;return}function or(){}function pr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=b-d>>>0;e=b-d-(c>>>0>a>>>0|0)>>>0;return (L=e,a-c>>>0|0)|0}function qr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;e=a&3;f=b|b<<8|b<<16|b<<24;g=d&~3;if(e){e=a+4-e|0;while((a|0)<(e|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(g|0)){k[a>>2]=f;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function rr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}L=a<<c-32;return 0}function sr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+c>>>0;return (L=b+d+(e>>>0<a>>>0|0)>>>0,e|0)|0}function tr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;y=y+1|0;k[a>>2]=y;while((e|0)<(d|0)){if(!(k[c+(e<<3)>>2]|0)){k[c+(e<<3)>>2]=y;k[c+((e<<3)+4)>>2]=b;k[c+((e<<3)+8)>>2]=0;L=d;return c|0}e=e+1|0}d=d*2|0;c=lr(c|0,8*(d+1|0)|0)|0;c=tr(a|0,b|0,c|0,d|0)|0;L=d;return c|0}function ur(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}L=0;return b>>>c-32|0}function vr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;while((d|0)<(c|0)){e=k[b+(d<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return k[b+((d<<3)+4)>>2]|0;d=d+1|0}return 0}function wr(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Ra(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function xr(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function yr(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){L=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}L=(b|0)<0?-1:0;return b>>c-32|0}function zr(a){a=a|0;var b=0;b=i[v+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[v+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[v+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[v+(a>>>24)>>0]|0)+24|0}function Ar(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=a&65535;d=b&65535;e=ha(d,c)|0;f=a>>>16;a=(e>>>16)+(ha(d,f)|0)|0;d=b>>>16;b=ha(d,c)|0;return (L=(a>>>16)+(ha(d,f)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|e&65535|0)|0}function Br(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=b>>31|((b|0)<0?-1:0)<<1;f=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;g=d>>31|((d|0)<0?-1:0)<<1;h=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;i=pr(e^a,f^b,e,f)|0;b=L;a=g^e;e=h^f;return pr((Gr(i,b,pr(g^c,h^d,g,h)|0,L,0)|0)^a,L^e,a,e)|0}function Cr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0;e=r;r=r+16|0;f=e|0;g=b>>31|((b|0)<0?-1:0)<<1;h=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;i=d>>31|((d|0)<0?-1:0)<<1;j=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;l=pr(g^a,h^b,g,h)|0;b=L;Gr(l,b,pr(i^c,j^d,i,j)|0,L,f)|0;j=pr(k[f>>2]^g,k[f+4>>2]^h,g,h)|0;h=L;r=e;return (L=h,j)|0}function Dr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;a=c;c=Ar(e,a)|0;f=L;return (L=(ha(b,a)|0)+(ha(d,e)|0)+f|f&0,c|0|0)|0}function Er(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Gr(a,b,c,d,0)|0}function Fr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=r;r=r+16|0;f=e|0;Gr(a,b,c,d,f)|0;r=e;return (L=k[f+4>>2]|0,k[f>>2]|0)|0}function Gr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;f=a;g=b;h=g;i=c;j=d;l=j;if(!h){m=(e|0)!=0;if(!l){if(m){k[e>>2]=(f>>>0)%(i>>>0);k[e+4>>2]=0}n=0;o=(f>>>0)/(i>>>0)>>>0;return (L=n,o)|0}else{if(!m){n=0;o=0;return (L=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;o=0;return (L=n,o)|0}}m=(l|0)==0;do if(i){if(!m){p=(ja(l|0)|0)-(ja(h|0)|0)|0;if(p>>>0<=31){q=p+1|0;r=31-p|0;s=p-31>>31;t=q;u=f>>>(q>>>0)&s|h<<r;v=h>>>(q>>>0)&s;w=0;x=f<<r;break}if(!e){n=0;o=0;return (L=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=g|b&0;n=0;o=0;return (L=n,o)|0}r=i-1|0;if(r&i){s=(ja(i|0)|0)+33-(ja(h|0)|0)|0;q=64-s|0;p=32-s|0;y=p>>31;z=s-32|0;A=z>>31;t=s;u=p-1>>31&h>>>(z>>>0)|(h<<p|f>>>(s>>>0))&A;v=A&h>>>(s>>>0);w=f<<q&y;x=(h<<q|f>>>(z>>>0))&y|f<<p&s-33>>31;break}if(e){k[e>>2]=r&f;k[e+4>>2]=0}if((i|0)==1){n=g|b&0;o=a|0|0;return (L=n,o)|0}else{r=zr(i|0)|0;n=h>>>(r>>>0)|0;o=h<<32-r|f>>>(r>>>0)|0;return (L=n,o)|0}}else{if(m){if(e){k[e>>2]=(h>>>0)%(i>>>0);k[e+4>>2]=0}n=0;o=(h>>>0)/(i>>>0)>>>0;return (L=n,o)|0}if(!f){if(e){k[e>>2]=0;k[e+4>>2]=(h>>>0)%(l>>>0)}n=0;o=(h>>>0)/(l>>>0)>>>0;return (L=n,o)|0}r=l-1|0;if(!(r&l)){if(e){k[e>>2]=a|0;k[e+4>>2]=r&h|b&0}n=0;o=h>>>((zr(l|0)|0)>>>0);return (L=n,o)|0}r=(ja(l|0)|0)-(ja(h|0)|0)|0;if(r>>>0<=30){s=r+1|0;p=31-r|0;t=s;u=h<<p|f>>>(s>>>0);v=h>>>(s>>>0);w=0;x=f<<p;break}if(!e){n=0;o=0;return (L=n,o)|0}k[e>>2]=a|0;k[e+4>>2]=g|b&0;n=0;o=0;return (L=n,o)|0}while(0);if(!t){B=x;C=w;D=v;E=u;F=0;G=0}else{b=c|0|0;c=j|d&0;d=sr(b|0,c|0,-1,-1)|0;j=L;g=x;x=w;w=v;v=u;u=t;t=0;do{a=g;g=x>>>31|g<<1;x=t|x<<1;f=v<<1|a>>>31|0;a=v>>>31|w<<1|0;pr(d,j,f,a)|0;h=L;l=h>>31|((h|0)<0?-1:0)<<1;t=l&1;v=pr(f,a,l&b,(((h|0)<0?-1:0)>>31|((h|0)<0?-1:0)<<1)&c)|0;w=L;u=u-1|0}while((u|0)!=0);B=g;C=x;D=w;E=v;F=0;G=t}t=C;C=0;if(e){k[e>>2]=E;k[e+4>>2]=D}n=(t|0)>>>31|(B|C)<<1|(C<<1|t>>>31)&0|F;o=(t<<1|0>>>31)&-2|G;return (L=n,o)|0}function Hr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nb[a&63](b|0,c|0,d|0)|0}function Ir(a,b,c,d,e,f,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;ob[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0)}function Jr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;pb[a&63](b|0,c|0,d|0,e|0,f|0)}function Kr(a,b){a=a|0;b=b|0;qb[a&127](b|0)}function Lr(a,b,c){a=a|0;b=b|0;c=c|0;rb[a&31](b|0,c|0)}function Mr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return sb[a&3](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Nr(a,b,c,d,e,f,g,h,i,j,k,l,m){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;m=m|0;tb[a&15](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0,k|0,l|0,m|0)}function Or(a,b){a=a|0;b=b|0;return ub[a&63](b|0)|0}function Pr(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;vb[a&127](b|0,c|0,d|0)}function Qr(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;wb[a&31](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)}function Rr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return xb[a&63](b|0,c|0,d|0,e|0)|0}function Sr(a,b,c){a=a|0;b=b|0;c=c|0;return yb[a&127](b|0,c|0)|0}function Tr(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return zb[a&3](b|0,c|0,d|0,e|0,f|0)|0}function Ur(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Ab[a&31](b|0,c|0,d|0,e|0)}function Vr(a,b,c){a=a|0;b=b|0;c=c|0;ka(0);return 0}function Wr(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;ka(1)}function Xr(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(2)}function Yr(a){a=a|0;ka(3)}function Zr(a,b){a=a|0;b=b|0;ka(4)}function _r(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ka(5);return 0}function $r(a,b,c,d,e,f,g,h,i,j,k,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;ka(6)}function as(a){a=a|0;ka(7);return 0}function bs(a,b,c){a=a|0;b=b|0;c=c|0;ka(8)}function cs(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ka(9)}function ds(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ka(10);return 0}function es(a,b){a=a|0;b=b|0;ka(11);return 0}function fs(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ka(12);return 0}function gs(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ka(13)}
94
+
95
+// EMSCRIPTEN_END_FUNCS
96
+var nb=[Vr,fr,pq,oq,qq,Vb,Wb,td,se,te,xe,Df,Ef,Sf,Tf,ck,dk,al,bl,bh,ch,Xh,Yh,Gi,Hi,Ki,Li,ij,jj,Uj,um,vm,$q,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr,Vr];var ob=[Wr,Mk,Nk,zl,Bl,Fl,Gl,Hl,Kl,nn,on,Wr,Wr,Wr,Wr,Wr];var pb=[Xr,Qk,cn,en,fn,gn,hn,jn,kn,Xn,Yn,Zn,_n,$n,ao,bo,co,eo,np,mp,lp,kp,jp,ip,hp,op,pp,qp,rp,sp,tp,up,vp,wp,xp,yp,zp,Ap,Bp,Cp,Dp,Ep,Fp,Gp,Hp,Ip,Jp,Kp,Lp,gp,fp,ep,Xr,Xr,Xr,Xr,Xr,Xr,Xr,Xr,Xr,Xr,Xr,Xr];var qb=[Yr,Ze,Nf,Of,bg,Kg,Lg,Mg,qg,sg,ug,wg,Bk,$j,xg,yg,Gk,ak,Ak,$g,ah,Hh,Wh,ei,fi,hi,li,Ei,Fi,sj,jk,kk,lk,mk,nk,vk,wk,xk,Pk,fl,gl,hl,ll,vl,wl,yl,Jl,Rl,Tl,Vl,Yl,Zl,gm,jm,mm,Am,Em,Pm,bn,dn,mn,rn,sn,En,Fn,On,Pn,Wn,go,io,jo,Yq,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr,Yr];var rb=[Zr,Jg,Ik,bk,_j,ji,Vj,gk,pk,Lk,El,Sl,Ul,Xl,fm,Dm,Om,Ym,qn,uo,Zr,Zr,Zr,Zr,Zr,Zr,Zr,Zr,Zr,Zr,Zr,Zr];var sb=[_r,ym,zm,_r];var tb=[$r,gd,hd,id,jd,kd,ld,md,nd,$r,$r,$r,$r,$r,$r,$r];var ub=[as,nq,ve,we,Pe,Ye,hf,kf,wf,Gf,Hf,Lf,Vf,Wf,Zf,$f,Ig,rg,vg,Ql,_k,$k,Ug,Vg,Yg,zh,Ah,Dh,Fh,Nh,Oh,Sh,Uh,ii,si,wi,xi,Ai,Ci,Ni,Oi,fj,kj,lj,oj,qj,el,ml,nl,ol,pl,Qn,Sn,as,as,as,as,as,as,as,as,as,as,as];var vb=[bs,ze,Ae,Bd,Cd,Dd,Ed,Fd,he,Ff,Uf,dg,Fk,Zj,Xk,Tg,oh,ph,qh,sh,th,uh,wh,xh,fh,gh,ih,jh,mh,Qh,Zh,Mi,Yi,Zi,_i,bj,cj,dj,Qi,Ri,Si,Vi,Wi,Xi,ok,Ho,Go,Fo,Eo,Do,Co,Bo,Io,Jo,Ko,Lo,Mo,No,Oo,Po,Qo,Ro,So,To,Uo,Vo,Wo,Xo,Yo,Zo,_o,$o,ap,bp,cp,dp,Ao,zo,yo,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs,bs];var wb=[cs,Ec,Fc,Gc,Hc,Ic,Jc,Lc,Mc,Nc,Oc,Pc,Qc,Rc,Sc,Tc,Uc,Vc,Wc,Yc,Zc,_c,$c,ad,bd,cd,dd,cs,cs,cs,cs,cs];var xb=[ds,Cc,Dc,ed,fd,ue,Qe,Re,Se,Me,Ne,Oe,lf,mf,uf,vf,xf,Jf,Mf,Qf,Yf,ag,Dg,Eg,kg,Wg,Xg,Zg,_g,nh,rh,vh,eh,hh,lh,Ch,Gh,Ih,Lh,Rh,Vh,qi,ti,ui,zi,Di,$i,aj,Ti,Ui,gj,nj,rj,wm,xm,ds,ds,ds,ds,ds,ds,ds,ds,ds];var yb=[es,jf,yh,pi,ej,Jh,Rf,Mh,rf,sf,pf,qf,gf,hj,vi,Rg,Aj,Bj,Cj,ec,Ue,Te,Od,nf,If,Kf,Xf,_f,cg,il,Yk,Bh,Eh,Kh,Ph,Th,ki,ri,yi,Bi,mj,pj,Qm,Rm,Sm,Tm,Um,Zm,_m,$m,tn,un,vn,wn,xn,yn,Gn,Hn,In,Jn,Kn,Rn,Tn,Un,ko,lo,mo,no,po,qo,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es,es];var zb=[fs,Bm,Cm,fs];var Ab=[gs,ud,ye,of,hk,Rk,Sk,Tk,Uk,Vk,Wk,Al,Cl,Ll,Ml,Nl,Ol,Pl,$l,am,bm,cm,dm,im,km,lm,vo,wo,xo,gs,gs,gs];return{_GetField:Kb,_TIFFClose:Mb,_TIFFReadDirectory:fc,_TIFFGetField:Pb,_bitshift64Lshr:ur,_bitshift64Shl:rr,_TIFFReadRGBAImageOriented:Ac,_TIFFCurrentDirectory:sd,_fflush:vq,_TIFFSetDirectory:Ub,_realloc:lr,_memset:qr,_memcpy:wr,_llvm_bswap_i32:xr,_i64Subtract:pr,_TIFFOpen:le,_i64Add:sr,_TIFFReadRGBAImage:Bc,__TIFFmalloc:me,___errno_location:Np,_testSetjmp:vr,_saveSetjmp:tr,_free:kr,_malloc:jr,__TIFFfree:ne,runPostSets:or,_emscripten_replace_memory:mb,stackAlloc:Bb,stackSave:Cb,stackRestore:Db,establishStackSpace:Eb,setThrew:Fb,setTempRet0:Ib,getTempRet0:Jb,dynCall_iiii:Hr,dynCall_viiiiiii:Ir,dynCall_viiiii:Jr,dynCall_vi:Kr,dynCall_vii:Lr,dynCall_iiiiiii:Mr,dynCall_viiiiiiiiiiii:Nr,dynCall_ii:Or,dynCall_viii:Pr,dynCall_viiiiiiiii:Qr,dynCall_iiiii:Rr,dynCall_iii:Sr,dynCall_iiiiii:Tr,dynCall_viiii:Ur}})
97
+
98
+
99
+// EMSCRIPTEN_END_ASM
100
+(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _GetField=Module["_GetField"]=asm["_GetField"];var _TIFFClose=Module["_TIFFClose"]=asm["_TIFFClose"];var _TIFFReadDirectory=Module["_TIFFReadDirectory"]=asm["_TIFFReadDirectory"];var _TIFFGetField=Module["_TIFFGetField"]=asm["_TIFFGetField"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _TIFFReadRGBAImageOriented=Module["_TIFFReadRGBAImageOriented"]=asm["_TIFFReadRGBAImageOriented"];var _TIFFCurrentDirectory=Module["_TIFFCurrentDirectory"]=asm["_TIFFCurrentDirectory"];var _fflush=Module["_fflush"]=asm["_fflush"];var _TIFFSetDirectory=Module["_TIFFSetDirectory"]=asm["_TIFFSetDirectory"];var _TIFFOpen=Module["_TIFFOpen"]=asm["_TIFFOpen"];var _memset=Module["_memset"]=asm["_memset"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var _realloc=Module["_realloc"]=asm["_realloc"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _TIFFReadRGBAImage=Module["_TIFFReadRGBAImage"]=asm["_TIFFReadRGBAImage"];var __TIFFmalloc=Module["__TIFFmalloc"]=asm["__TIFFmalloc"];var ___errno_location=Module["___errno_location"]=asm["___errno_location"];var _testSetjmp=Module["_testSetjmp"]=asm["_testSetjmp"];var _saveSetjmp=Module["_saveSetjmp"]=asm["_saveSetjmp"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _malloc=Module["_malloc"]=asm["_malloc"];var __TIFFfree=Module["__TIFFfree"]=asm["__TIFFfree"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiiiii=Module["dynCall_viiiiiii"]=asm["dynCall_viiiiiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_viiiiiiiiiiii=Module["dynCall_viiiiiiiiiiii"]=asm["dynCall_viiiiiiiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_viiiiiiiii=Module["dynCall_viiiiiiiii"]=asm["dynCall_viiiiiiiii"];var dynCall_iiiii=Module["dynCall_iiiii"]=asm["dynCall_iiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_iiiiii=Module["dynCall_iiiiii"]=asm["dynCall_iiiiii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){assert(runDependencies==0,"cannot call main when async dependencies remain! (listen on __ATMAIN__)");assert(__ATPRERUN__.length==0,"cannot call main when preRun functions remain to be called");args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),"i8",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,"i32",ALLOC_NORMAL);try{var ret=Module["_main"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="SimulateInfiniteLoop"){Module["noExitRuntime"]=true;return}else{if(e&&typeof e==="object"&&e.stack)Module.printErr("exception thrown: "+[e,e.stack]);throw e}}finally{calledMain=true}};function run(args){args=args||Module["arguments"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["stdout"]["once"]("drain",(function(){process["exit"](status)}));console.log(" ");setTimeout((function(){process["exit"](status)}),500)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();return Module})
101
+
102
+
103
+
104
+
105
+
106
+var TiffTag = {
107
+    SUBFILETYPE: 254,
108
+    OSUBFILETYPE: 255,
109
+    IMAGEWIDTH: 256,
110
+    IMAGELENGTH: 257,
111
+    BITSPERSAMPLE: 258,
112
+    COMPRESSION: 259,
113
+    PHOTOMETRIC: 262,
114
+    THRESHHOLDING: 263,
115
+    CELLWIDTH: 264,
116
+    CELLLENGTH: 265,
117
+    FILLORDER: 266,
118
+    DOCUMENTNAME: 269,
119
+    IMAGEDESCRIPTION: 270,
120
+    MAKE: 271,
121
+    MODEL: 272,
122
+    STRIPOFFSETS: 273,
123
+    ORIENTATION: 274,
124
+    SAMPLESPERPIXEL: 277,
125
+    ROWSPERSTRIP: 278,
126
+    STRIPBYTECOUNTS: 279,
127
+    MINSAMPLEVALUE: 280,
128
+    MAXSAMPLEVALUE: 281,
129
+    XRESOLUTION: 282,
130
+    YRESOLUTION: 283,
131
+    PLANARCONFIG: 284,
132
+    PAGENAME: 285,
133
+    XPOSITION: 286,
134
+    YPOSITION: 287,
135
+    FREEOFFSETS: 288,
136
+    FREEBYTECOUNTS: 289,
137
+    GRAYRESPONSEUNIT: 290,
138
+    GRAYRESPONSECURVE: 291,
139
+    RESOLUTIONUNIT: 296,
140
+    PAGENUMBER: 297,
141
+    COLORRESPONSEUNIT: 300,
142
+    TRANSFERFUNCTION: 301,
143
+    SOFTWARE: 305,
144
+    DATETIME: 306,
145
+    ARTIST: 315,
146
+    HOSTCOMPUTER: 316,
147
+    PREDICTOR: 317,
148
+    WHITEPOINT: 318,
149
+    PRIMARYCHROMATICITIES: 319,
150
+    COLORMAP: 320,
151
+    HALFTONEHINTS: 321,
152
+    TILEWIDTH: 322,
153
+    TILELENGTH: 323,
154
+    TILEOFFSETS: 324,
155
+    TILEBYTECOUNTS: 325,
156
+    BADFAXLINES: 326,
157
+    CLEANFAXDATA: 327,
158
+    CONSECUTIVEBADFAXLINES: 328,
159
+    SUBIFD: 330,
160
+    INKSET: 332,
161
+    INKNAMES: 333,
162
+    NUMBEROFINKS: 334,
163
+    DOTRANGE: 336,
164
+    TARGETPRINTER: 337,
165
+    EXTRASAMPLES: 338,
166
+    SAMPLEFORMAT: 339,
167
+    SMINSAMPLEVALUE: 340,
168
+    SMAXSAMPLEVALUE: 341,
169
+    CLIPPATH: 343,
170
+    XCLIPPATHUNITS: 344,
171
+    YCLIPPATHUNITS: 345,
172
+    INDEXED: 346,
173
+    JPEGTABLES: 347,
174
+    OPIPROXY: 351,
175
+    GLOBALPARAMETERSIFD: 400,
176
+    PROFILETYPE: 401,
177
+    FAXPROFILE: 402,
178
+    CODINGMETHODS: 403,
179
+    VERSIONYEAR: 404,
180
+    MODENUMBER: 405,
181
+    DECODE: 433,
182
+    IMAGEBASECOLOR: 434,
183
+    JPEGPROC: 512,
184
+    JPEGIFOFFSET: 513,
185
+    JPEGIFBYTECOUNT: 514,
186
+    JPEGRESTARTINTERVAL: 515,
187
+    JPEGLOSSLESSPREDICTORS: 517,
188
+    JPEGPOINTTRANSFORM: 518,
189
+    JPEGQTABLES: 519,
190
+    JPEGDCTABLES: 520,
191
+    JPEGACTABLES: 521,
192
+    YCBCRCOEFFICIENTS: 529,
193
+    YCBCRSUBSAMPLING: 530,
194
+    YCBCRPOSITIONING: 531,
195
+    REFERENCEBLACKWHITE: 532,
196
+    STRIPROWCOUNTS: 559,
197
+    XMLPACKET: 700,
198
+    OPIIMAGEID: 32781,
199
+    REFPTS: 32953,
200
+    REGIONTACKPOINT: 32954,
201
+    REGIONWARPCORNERS: 32955,
202
+    REGIONAFFINE: 32956,
203
+    MATTEING: 32995,
204
+    DATATYPE: 32996,
205
+    IMAGEDEPTH: 32997,
206
+    TILEDEPTH: 32998,
207
+    PIXAR_IMAGEFULLWIDTH: 33300,
208
+    PIXAR_IMAGEFULLLENGTH: 33301,
209
+    PIXAR_TEXTUREFORMAT: 33302,
210
+    PIXAR_WRAPMODES: 33303,
211
+    PIXAR_FOVCOT: 33304,
212
+    PIXAR_MATRIX_WORLDTOSCREEN: 33305,
213
+    PIXAR_MATRIX_WORLDTOCAMERA: 33306,
214
+    WRITERSERIALNUMBER: 33405,
215
+    CFAREPEATPATTERNDIM: 33421,
216
+    CFAPATTERN: 33422,
217
+    COPYRIGHT: 33432,
218
+    RICHTIFFIPTC: 33723,
219
+    FRAMECOUNT: 34232,
220
+    PHOTOSHOP: 34377,
221
+    EXIFIFD: 34665,
222
+    ICCPROFILE: 34675,
223
+    IMAGELAYER: 34732,
224
+    JBIGOPTIONS: 34750,
225
+    GPSIFD: 34853,
226
+    FAXRECVPARAMS: 34908,
227
+    FAXSUBADDRESS: 34909,
228
+    FAXRECVTIME: 34910,
229
+    FAXDCS: 34911,
230
+    STONITS: 37439,
231
+    FEDEX_EDR: 34929,
232
+    INTEROPERABILITYIFD: 40965,
233
+    DNGVERSION: 50706,
234
+    DNGBACKWARDVERSION: 50707,
235
+    UNIQUECAMERAMODEL: 50708,
236
+    LOCALIZEDCAMERAMODEL: 50709,
237
+    CFAPLANECOLOR: 50710,
238
+    CFALAYOUT: 50711,
239
+    LINEARIZATIONTABLE: 50712,
240
+    BLACKLEVELREPEATDIM: 50713,
241
+    BLACKLEVEL: 50714,
242
+    BLACKLEVELDELTAH: 50715,
243
+    BLACKLEVELDELTAV: 50716,
244
+    WHITELEVEL: 50717,
245
+    DEFAULTSCALE: 50718,
246
+    DEFAULTCROPORIGIN: 50719,
247
+    DEFAULTCROPSIZE: 50720,
248
+    ANALOGBALANCE: 50727,
249
+    ASSHOTNEUTRAL: 50728,
250
+    ASSHOTWHITEXY: 50729,
251
+    BASELINEEXPOSURE: 50730,
252
+    BASELINENOISE: 50731,
253
+    BASELINESHARPNESS: 50732,
254
+    BAYERGREENSPLIT: 50733,
255
+    LINEARRESPONSELIMIT: 50734,
256
+    CAMERASERIALNUMBER: 50735,
257
+    LENSINFO: 50736,
258
+    CHROMABLURRADIUS: 50737,
259
+    ANTIALIASSTRENGTH: 50738,
260
+    SHADOWSCALE: 50739,
261
+    DNGPRIVATEDATA: 50740,
262
+    MAKERNOTESAFETY: 50741,
263
+    BESTQUALITYSCALE: 50780,
264
+    RAWDATAUNIQUEID: 50781,
265
+    ORIGINALRAWFILENAME: 50827,
266
+    ORIGINALRAWFILEDATA: 50828,
267
+    ACTIVEAREA: 50829,
268
+    MASKEDAREAS: 50830,
269
+    ASSHOTICCPROFILE: 50831,
270
+    ASSHOTPREPROFILEMATRIX: 50832,
271
+    CURRENTICCPROFILE: 50833,
272
+    CURRENTPREPROFILEMATRIX: 50834,
273
+    DCSHUESHIFTVALUES: 65535,
274
+    FAXMODE: 65536,
275
+    JPEGQUALITY: 65537,
276
+    JPEGCOLORMODE: 65538,
277
+    JPEGTABLESMODE: 65539,
278
+    FAXFILLFUNC: 65540,
279
+    PIXARLOGDATAFMT: 65549,
280
+    DCSIMAGERTYPE: 65550,
281
+    DCSINTERPMODE: 65551,
282
+    DCSBALANCEARRAY: 65552,
283
+    DCSCORRECTMATRIX: 65553,
284
+    DCSGAMMA: 65554,
285
+    DCSTOESHOULDERPTS: 65555,
286
+    DCSCALIBRATIONFD: 65556,
287
+    ZIPQUALITY: 65557,
288
+    PIXARLOGQUALITY: 65558,
289
+    DCSCLIPRECTANGLE: 65559,
290
+    SGILOGDATAFMT: 65560,
291
+    SGILOGENCODE: 65561,
292
+    LZMAPRESET: 65562,
293
+    PERSAMPLE: 65563
294
+};
295
+var Tiff = (function () {
296
+    function Tiff(params) {
297
+        if (Tiff.Module === null) {
298
+            Tiff.initialize({});
299
+        }
300
+        this._filename = Tiff.createFileSystemObjectFromBuffer(params.buffer);
301
+        this._tiffPtr = Tiff.Module.ccall('TIFFOpen', 'number', [
302
+            'string', 'string'], [this._filename, 'r']);
303
+        if (this._tiffPtr === 0) {
304
+            throw new Tiff.Exception('The function TIFFOpen returns NULL');
305
+        }
306
+    }
307
+    Tiff.initialize = function (options) {
308
+        if (Tiff.Module !== null) {
309
+            return;
310
+        }
311
+        Tiff.Module = loadModule(options);
312
+    };
313
+    Tiff.prototype.width = function () {
314
+        return this.getField(Tiff.Tag.IMAGEWIDTH);
315
+    };
316
+    Tiff.prototype.height = function () {
317
+        return this.getField(Tiff.Tag.IMAGELENGTH);
318
+    };
319
+    Tiff.prototype.currentDirectory = function () {
320
+        return Tiff.Module.ccall('TIFFCurrentDirectory', 'number', ['number'], [this._tiffPtr]);
321
+    };
322
+    Tiff.prototype.countDirectory = function () {
323
+        var count = 0;
324
+        var current = this.currentDirectory();
325
+        while (true) {
326
+            count += 1;
327
+            var status = Tiff.Module.ccall('TIFFReadDirectory', 'number', ['number'], [this._tiffPtr]);
328
+            if (status === 0) {
329
+                break;
330
+            }
331
+        }
332
+        this.setDirectory(current);
333
+        return count;
334
+    };
335
+    Tiff.prototype.setDirectory = function (index) {
336
+        return Tiff.Module.ccall('TIFFSetDirectory', 'number', ['number', 'number'], [this._tiffPtr, index]);
337
+    };
338
+    Tiff.prototype.getField = function (tag) {
339
+        var value = Tiff.Module.ccall('GetField', 'number', ['number', 'number'], [
340
+            this._tiffPtr, tag]);
341
+        return value;
342
+    };
343
+    Tiff.prototype.readRGBAImage = function () {
344
+        var width = this.width();
345
+        var height = this.height();
346
+        var raster = Tiff.Module.ccall('_TIFFmalloc', 'number', ['number'], [width * height * 4]);
347
+        var result = Tiff.Module.ccall('TIFFReadRGBAImageOriented', 'number', [
348
+            'number', 'number', 'number', 'number', 'number', 'number'], [
349
+            this._tiffPtr, width, height, raster, 1, 0
350
+        ]);
351
+        if (result === 0) {
352
+            throw new Tiff.Exception('The function TIFFReadRGBAImageOriented returns NULL');
353
+        }
354
+        // copy the subarray, not create new sub-view
355
+        var data = Tiff.Module.HEAPU8.buffer.slice(raster, raster + width * height * 4);
356
+        Tiff.Module.ccall('free', 'number', ['number'], [raster]);
357
+        return data;
358
+    };
359
+    Tiff.prototype.toCanvas = function () {
360
+        var width = this.width();
361
+        var height = this.height();
362
+        var raster = Tiff.Module.ccall('_TIFFmalloc', 'number', ['number'], [width * height * 4]);
363
+        var result = Tiff.Module.ccall('TIFFReadRGBAImageOriented', 'number', [
364
+            'number', 'number', 'number', 'number', 'number', 'number'], [
365
+            this._tiffPtr, width, height, raster, 1, 0
366
+        ]);
367
+        if (result === 0) {
368
+            throw new Tiff.Exception('The function TIFFReadRGBAImageOriented returns NULL');
369
+        }
370
+        var image = Tiff.Module.HEAPU8.subarray(raster, raster + width * height * 4);
371
+        var canvas = document.createElement('canvas');
372
+        var context = canvas.getContext('2d');
373
+        canvas.width = width;
374
+        canvas.height = height;
375
+        var imageData = context.createImageData(width, height);
376
+        imageData.data.set(image);
377
+        context.putImageData(imageData, 0, 0);
378
+        Tiff.Module.ccall('free', 'number', ['number'], [raster]);
379
+        return canvas;
380
+    };
381
+    Tiff.prototype.toDataURL = function () {
382
+        return this.toCanvas().toDataURL();
383
+    };
384
+    Tiff.prototype.close = function () {
385
+        Tiff.Module.ccall('TIFFClose', 'number', ['number'], [this._tiffPtr]);
386
+    };
387
+    Tiff.createUniqueFileName = function () {
388
+        Tiff.uniqueIdForFileName += 1;
389
+        return String(Tiff.uniqueIdForFileName) + '.tiff';
390
+    };
391
+    Tiff.createFileSystemObjectFromBuffer = function (buffer) {
392
+        var filename = Tiff.createUniqueFileName();
393
+        Tiff.Module.FS.createDataFile('/', filename, new Uint8Array(buffer), true, false);
394
+        return filename;
395
+    };
396
+    Tiff.uniqueIdForFileName = 0;
397
+    Tiff.Module = null;
398
+    return Tiff;
399
+})();
400
+var Tiff;
401
+(function (Tiff) {
402
+    var Exception = (function () {
403
+        function Exception(message) {
404
+            this.message = message;
405
+            this.name = 'Tiff.Exception';
406
+        }
407
+        return Exception;
408
+    })();
409
+    Tiff.Exception = Exception;
410
+    Tiff.Tag = TiffTag;
411
+})(Tiff || (Tiff = {}));
412
+// for closure compiler
413
+Tiff.prototype['width'] = Tiff.prototype.width;
414
+Tiff.prototype['height'] = Tiff.prototype.height;
415
+Tiff.prototype['currentDirectory'] = Tiff.prototype.currentDirectory;
416
+Tiff.prototype['countDirectory'] = Tiff.prototype.countDirectory;
417
+Tiff.prototype['setDirectory'] = Tiff.prototype.setDirectory;
418
+Tiff.prototype['getField'] = Tiff.prototype.getField;
419
+Tiff.prototype['readRGBAImage'] = Tiff.prototype.readRGBAImage;
420
+Tiff.prototype['close'] = Tiff.prototype.close;
421
+Tiff['Exception'] = Tiff.Exception;
422
+Tiff['initialize'] = Tiff.initialize;
423
+if (typeof process === 'object' && typeof require === 'function') {
424
+    module['exports'] = Tiff;
425
+}
426
+else if (typeof define === "function" && define.amd) {
427
+    define('tiff', [], function () { return Tiff; });
428
+}
429
+else if (typeof window === 'object') {
430
+    window['Tiff'] = Tiff;
431
+}
432
+else if (typeof importScripts === 'function') {
433
+    self['Tiff'] = Tiff;
434
+}
0 435
new file mode 100644
... ...
@@ -0,0 +1,504 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Migration;
27
+
28
+use Closure;
29
+use OCP\DB\Types;
30
+use OCP\DB\ISchemaWrapper;
31
+use OCP\IDBConnection;
32
+use OCP\Migration\IOutput;
33
+use OCP\Migration\SimpleMigrationStep;
34
+
35
+
36
+class Version116Date20230508212745 extends SimpleMigrationStep {
37
+
38
+        /** @var IDBConnection */
39
+        private $connection;
40
+
41
+        /**
42
+         * @param IDBConnection $connection
43
+         */
44
+        public function __construct(IDBConnection $connection) {
45
+                $this->connection = $connection;
46
+        }
47
+
48
+	/**
49
+	 * @param IOutput $output
50
+	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
51
+	 * @param array $options
52
+	 * @return null|ISchemaWrapper
53
+	 */
54
+	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
55
+		/** @var ISchemaWrapper $schema */
56
+		$schema = $schemaClosure();
57
+
58
+		if (!$schema->hasTable('sms_relent_settings')) {
59
+			$table = $schema->createTable('sms_relent_settings');
60
+			$table->addColumn('id', Types::BIGINT, [
61
+				'autoincrement' => true,
62
+				'notnull' => true,
63
+                                'length' => 11,
64
+                                'unsigned' => true,
65
+			]);
66
+			$table->addColumn('user_id', Types::STRING, [
67
+				'notnull' => true,
68
+				'length' => 128,
69
+			]);
70
+			$table->addColumn('telapi_key', Types::STRING, [
71
+				'notnull' => true,
72
+				'length' => 512,
73
+			]);
74
+			$table->addColumn('tel_pub_key', Types::STRING, [
75
+				'notnull' => true,
76
+				'length' => 512,
77
+			]);
78
+			$table->addColumn('telapi_url_rec', Types::STRING, [
79
+				'notnull' => true,
80
+				'length' => 512,
81
+			]);
82
+			$table->addColumn('telapi_url', Types::STRING, [
83
+				'notnull' => true,
84
+				'length' => 512,
85
+			]);
86
+			$table->addColumn('messaging_profile_id', Types::STRING, [
87
+				'notnull' => true,
88
+				'length' => 512,
89
+			]);
90
+			$table->addColumn('nexapi_key', Types::STRING, [
91
+				'notnull' => true,
92
+				'length' => 512,
93
+			]);
94
+			$table->addColumn('nexapi_secret', Types::STRING, [
95
+				'notnull' => true,
96
+				'length' => 512,
97
+			]);
98
+			$table->addColumn('nexapi_url_rec', Types::STRING, [
99
+				'notnull' => true,
100
+				'length' => 512,
101
+			]);
102
+			$table->addColumn('nexapi_url', Types::STRING, [
103
+				'notnull' => true,
104
+				'length' => 512,
105
+			]);
106
+			$table->addColumn('twilapi_key', Types::STRING, [
107
+				'notnull' => true,
108
+				'length' => 512,
109
+			]);
110
+			$table->addColumn('twilapi_secret', Types::STRING, [
111
+				'notnull' => true,
112
+				'length' => 512,
113
+			]);
114
+			$table->addColumn('twilapi_url_rec', Types::STRING, [
115
+				'notnull' => true,
116
+				'length' => 512,
117
+			]);
118
+			$table->addColumn('twilapi_url', Types::STRING, [
119
+				'notnull' => true,
120
+				'length' => 512,
121
+			]);
122
+			$table->addColumn('flowapi_key', Types::STRING, [
123
+				'notnull' => true,
124
+				'length' => 512,
125
+			]);
126
+			$table->addColumn('flowapi_secret', Types::STRING, [
127
+				'notnull' => true,
128
+				'length' => 512,
129
+			]);
130
+			$table->addColumn('flowapi_url_rec', Types::STRING, [
131
+				'notnull' => true,
132
+				'length' => 512,
133
+			]);
134
+			$table->addColumn('flowapi_url', Types::STRING, [
135
+				'notnull' => true,
136
+				'length' => 512,
137
+			]);
138
+			$table->addColumn('tel_sender_name', Types::STRING, [
139
+				'notnull' => false,
140
+				'length' => 48,
141
+				'default' => '',
142
+			]);
143
+			$table->addColumn('nex_sender_name', Types::STRING, [
144
+				'notnull' => false,
145
+				'length' => 48,
146
+				'default' => '',
147
+			]);
148
+			$table->addColumn('twil_sender_name', Types::STRING, [
149
+				'notnull' => false,
150
+				'length' => 48,
151
+				'default' => '',
152
+			]);
153
+			$table->addColumn('flow_sender_name', Types::STRING, [
154
+				'notnull' => false,
155
+				'length' => 48,
156
+				'default' => '',
157
+			]);
158
+			$table->addColumn('messagesperpage', Types::INTEGER, [
159
+				'notnull' => false,
160
+				'length' => 11,
161
+                                'unsigned' => true,
162
+			]);
163
+			$table->addColumn('get_notify', Types::SMALLINT, [
164
+				'notnull' => false,
165
+				'length' => 1,
166
+			]);
167
+			$table->addColumn('notification_email', Types::STRING, [
168
+				'notnull' => false,
169
+				'length' => 512,
170
+				'default' => '',
171
+			]);
172
+			$table->addColumn('getsmsinemail', Types::SMALLINT, [
173
+				'notnull' => false,
174
+				'length' => 1,
175
+			]);
176
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
177
+				'notnull' => false,
178
+				'length' => 1,
179
+			]);
180
+			$table->addColumn('show_display_names', Types::SMALLINT, [
181
+				'notnull' => false,
182
+				'length' => 1,
183
+			]);
184
+                        $table->setPrimaryKey(['id']);
185
+                        $table->addUniqueIndex(['id']);
186
+
187
+		} else {
188
+
189
+                        $table = $schema->getTable('sms_relent_settings');
190
+
191
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
192
+				'notnull' => false,
193
+				'length' => 1,
194
+			]);
195
+			$table->addColumn('show_display_names', Types::SMALLINT, [
196
+				'notnull' => false,
197
+				'length' => 1,
198
+			]);
199
+                }
200
+
201
+
202
+		if (!$schema->hasTable('sms_relent_received')) {
203
+			$table = $schema->createTable('sms_relent_received');
204
+			$table->addColumn('id', Types::BIGINT, [
205
+				'autoincrement' => true,
206
+				'notnull' => true,
207
+                                'length' => 11,
208
+                                'unsigned' => true,
209
+			]);
210
+			$table->addColumn('user_id', Types::STRING, [
211
+				'notnull' => true,
212
+				'length' => 64,
213
+			]);
214
+			$table->addColumn('message_id', Types::STRING, [
215
+				'notnull' => true,
216
+				'length' => 512,
217
+			]);
218
+			$table->addColumn('date', Types::DATETIME, [
219
+				'notnull' => true,
220
+			]);
221
+			$table->addColumn('from', Types::STRING, [
222
+				'notnull' => true,
223
+				'length' => 128,
224
+			]);
225
+			$table->addColumn('to', Types::STRING, [
226
+				'notnull' => true,
227
+				'length' => 128,
228
+			]);
229
+			$table->addColumn('message', Types::TEXT, [
230
+				'notnull' => false,
231
+				'default' => '',
232
+			]);
233
+			$table->addColumn('author_displayname', Types::STRING, [
234
+				'notnull' => true,
235
+				'length' => 255,
236
+			]);
237
+			$table->addColumn('internal_sender', Types::SMALLINT, [
238
+				'notnull' => false,
239
+				'length' => 1,
240
+			]);
241
+                        $table->setPrimaryKey(['id']);
242
+                        $table->addUniqueIndex(['id']);
243
+
244
+		} else {
245
+
246
+                        $table = $schema->getTable('sms_relent_received');
247
+
248
+			$table->addColumn('author_displayname', Types::STRING, [
249
+				'notnull' => true,
250
+				'length' => 255,
251
+			]);
252
+			$table->addColumn('internal_sender', Types::SMALLINT, [
253
+				'notnull' => false,
254
+				'length' => 1,
255
+			]);
256
+                }
257
+
258
+
259
+		if (!$schema->hasTable('sms_relent_sent')) {
260
+			$table = $schema->createTable('sms_relent_sent');
261
+			$table->addColumn('id', Types::BIGINT, [
262
+				'autoincrement' => true,
263
+				'notnull' => true,
264
+                                'length' => 11,
265
+                                'unsigned' => true,
266
+			]);
267
+			$table->addColumn('user_id', Types::STRING, [
268
+				'notnull' => true,
269
+				'length' => 64,
270
+			]);
271
+			$table->addColumn('message_id', Types::STRING, [
272
+				'notnull' => true,
273
+				'length' => 512,
274
+			]);
275
+			$table->addColumn('date', Types::DATETIME, [
276
+				'notnull' => true,
277
+			]);
278
+			$table->addColumn('from', Types::STRING, [
279
+				'notnull' => true,
280
+				'length' => 128,
281
+			]);
282
+			$table->addColumn('to', Types::STRING, [
283
+				'notnull' => true,
284
+				'length' => 128,
285
+			]);
286
+			$table->addColumn('network ', Types::STRING, [
287
+				'notnull' => false,
288
+				'length' => 64,
289
+				'default' => '',
290
+			]);
291
+			$table->addColumn('price', Types::STRING, [
292
+				'notnull' => false,
293
+				'length' => 64,
294
+				'default' => '',
295
+			]);
296
+			$table->addColumn('status', Types::STRING, [
297
+				'notnull' => false,
298
+				'length' => 512,
299
+				'default' => '',
300
+			]);
301
+			$table->addColumn('deliveryreceipt', Types::STRING, [
302
+				'notnull' => false,
303
+				'length' => 64,
304
+				'default' => '',
305
+			]);
306
+			$table->addColumn('message', Types::TEXT, [
307
+				'notnull' => false,
308
+                                'default' => '',
309
+			]);
310
+			$table->addColumn('author_displayname', Types::STRING, [
311
+				'notnull' => true,
312
+				'length' => 255,
313
+			]);
314
+                        $table->setPrimaryKey(['id']);
315
+                        $table->addUniqueIndex(['id']);
316
+
317
+		} else {
318
+
319
+                        $table = $schema->getTable('sms_relent_sent');
320
+
321
+			$table->addColumn('author_displayname', Types::STRING, [
322
+				'notnull' => true,
323
+				'length' => 255,
324
+			]);
325
+                }
326
+
327
+
328
+		if (!$schema->hasTable('sms_relent_autorply')) {
329
+			$table = $schema->createTable('sms_relent_autorply');
330
+			$table->addColumn('id', Types::BIGINT, [
331
+				'autoincrement' => true,
332
+				'notnull' => true,
333
+                                'length' => 11,
334
+                                'unsigned' => true,
335
+			]);
336
+			$table->addColumn('user_id', Types::STRING, [
337
+				'notnull' => true,
338
+				'length' => 128,
339
+			]);
340
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
341
+				'notnull' => true,
342
+				'length' => 255,
343
+			]);
344
+			$table->addColumn('phone_number', Types::STRING, [
345
+				'notnull' => true,
346
+				'length' => 128,
347
+			]);
348
+			$table->addColumn('days_of_week', Types::STRING, [
349
+				'notnull' => false,
350
+				'length' => 64,
351
+                                'default' => '',
352
+			]);
353
+			$table->addColumn('daily_start', Types::STRING, [
354
+				'notnull' => false,
355
+				'length' => 8,
356
+                                'default' => '',
357
+			]);
358
+			$table->addColumn('daily_end', Types::STRING, [
359
+				'notnull' => false,
360
+				'length' => 8,
361
+                                'default' => '',
362
+			]);
363
+			$table->addColumn('vacation_start', Types::DATETIME, [
364
+				'notnull' => false,
365
+			]);
366
+			$table->addColumn('vacation_end', Types::DATETIME, [
367
+				'notnull' => false,
368
+			]);
369
+			$table->addColumn('message_text', Types::TEXT, [
370
+				'notnull' => false,
371
+                                'default' => '',
372
+			]);
373
+                        $table->setPrimaryKey(['id']);
374
+                        $table->addUniqueIndex(['id']);
375
+
376
+		}
377
+
378
+
379
+		if (!$schema->hasTable('sms_relent_restrict')) {
380
+			$table = $schema->createTable('sms_relent_restrict');
381
+			$table->addColumn('id', Types::BIGINT, [
382
+				'autoincrement' => true,
383
+				'notnull' => true,
384
+                                'length' => 11,
385
+                                'unsigned' => true,
386
+			]);
387
+			$table->addColumn('user_id', Types::STRING, [
388
+				'notnull' => true,
389
+				'length' => 128,
390
+			]);
391
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
392
+				'notnull' => true,
393
+				'length' => 255,
394
+			]);
395
+			$table->addColumn('phone_number', Types::STRING, [
396
+				'notnull' => true,
397
+				'length' => 128,
398
+			]);
399
+			$table->addColumn('groups', Types::STRING, [
400
+				'notnull' => true,
401
+				'length' => 2048,
402
+			]);
403
+			$table->addColumn('users', Types::STRING, [
404
+				'notnull' => true,
405
+				'length' => 2048,
406
+			]);
407
+                        $table->setPrimaryKey(['id']);
408
+                        $table->addUniqueIndex(['id']);
409
+
410
+		}
411
+
412
+		return $schema;
413
+	}
414
+
415
+        public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
416
+
417
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_sent' table, for messages that were sent before the upgrade
418
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `user_id` FROM `*PREFIX*sms_relent_sent`');
419
+	        $getrecfromnbres = $getrecfromnb->execute();
420
+
421
+                $recdatauids = [];
422
+                $idsent = [];
423
+                while ($rowfetched = $getrecfromnbres->fetch()) {
424
+                       $recdatauids[] = $rowfetched['user_id'];
425
+                       $idsent[] = $rowfetched['id'];
426
+                }
427
+                $getrecfromnbres->closeCursor();
428
+
429
+                if ($recdatauids) {
430
+
431
+                    $recuids = array_values(array_unique($recdatauids));
432
+                    $acdatausrdn = [];
433
+
434
+                    foreach ($recuids as $dnkey => $dnvalue) {
435
+		             $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
436
+			     $getacdatadnres = $getacdatadn->execute([$dnvalue, 'displayname']);
437
+
438
+			     while ($acusrdnfetched = $getacdatadnres->fetch()) {
439
+				    $acdatausrdn[$dnvalue] = $acusrdnfetched['value'];
440
+			     }
441
+			     $getacdatadnres->closeCursor();
442
+                    }
443
+
444
+                    foreach ($recdatauids as $pdpkey => $pdpvalue) {
445
+
446
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_sent` SET `author_displayname` = ? WHERE `user_id` = ? AND `id` = ?');
447
+			     $updaterecmsres = $updaterecms->execute([$acdatausrdn[$pdpvalue], $pdpvalue, $idsent[$pdpkey]]);
448
+			     $updaterecmsres->closeCursor();
449
+                    }
450
+                }
451
+
452
+
453
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_received' table, for messages that were received before the upgrade
454
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `date`, `from` FROM `*PREFIX*sms_relent_received`');
455
+	        $getrecfromnbres = $getrecfromnb->execute();
456
+
457
+                $recdatanmbrs = [];
458
+                $idsrc = [];
459
+                $daterec = [];
460
+                while ($rowfetched = $getrecfromnbres->fetch()) {
461
+                       $recdatanmbrs[] = $rowfetched['from'];
462
+                       $idsrc[] = $rowfetched['id'];
463
+                       $daterecarr = explode(":", $rowfetched['date']);
464
+                       $daterec[] = $daterecarr[0];
465
+                }
466
+                $getrecfromnbres->closeCursor();
467
+
468
+                if ($recdatanmbrs) {
469
+
470
+                    foreach ($recdatanmbrs as $rckey => $rcvalue) {
471
+
472
+			     $authorDisplayNm = '';
473
+			     $internalSender = 0;
474
+
475
+			     // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
476
+			     $recmsgfromprc = '%' . $rcvalue;
477
+                             $recdataprc = $daterec[$rckey] . '%';
478
+			     $getdspnmst = $this->connection->prepare('SELECT `date`, `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ? AND `date` LIKE ?');
479
+			     $getdspnmstres = $getdspnmst->execute([$recmsgfromprc, $recdataprc]);
480
+
481
+			     $dispnamearr = [];
482
+			     while ($dspnmstfetched = $getdspnmstres->fetch()) {
483
+				    $dispnamearr[] = $dspnmstfetched['author_displayname'];
484
+			     }
485
+			     $getdspnmstres->closeCursor();
486
+
487
+			     if ($dispnamearr) {
488
+				 $descdspnmarr = array_reverse($dispnamearr);
489
+				 $authorDisplayNm = $descdspnmarr[0];
490
+				 $internalSender = 1;
491
+			     } else { $authorDisplayNm = ''; $internalSender = 0; }
492
+
493
+                             $pdpkeyprc = '%' . $rcvalue;
494
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_received` SET `author_displayname` = ?, `internal_sender` = ?
495
+                                                                        WHERE `from` LIKE ? AND `id` = ?');
496
+			     $updaterecmsres = $updaterecms->execute([$authorDisplayNm, $internalSender, $pdpkeyprc, $idsrc[$rckey]]);
497
+			     $updaterecmsres->closeCursor();
498
+                    }
499
+                }
500
+
501
+                return null;
502
+        }
503
+
504
+}
0 505
new file mode 100644
... ...
@@ -0,0 +1,494 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Migration;
27
+
28
+use Closure;
29
+use OCP\DB\Types;
30
+use OCP\DB\ISchemaWrapper;
31
+use OCP\IDBConnection;
32
+use OCP\Migration\IOutput;
33
+use OCP\Migration\SimpleMigrationStep;
34
+
35
+
36
+class Version117Date20230509183517 extends SimpleMigrationStep {
37
+
38
+        /** @var IDBConnection */
39
+        private $connection;
40
+
41
+        /**
42
+         * @param IDBConnection $connection
43
+         */
44
+        public function __construct(IDBConnection $connection) {
45
+                $this->connection = $connection;
46
+        }
47
+
48
+	/**
49
+	 * @param IOutput $output
50
+	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
51
+	 * @param array $options
52
+	 * @return null|ISchemaWrapper
53
+	 */
54
+	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
55
+		/** @var ISchemaWrapper $schema */
56
+		$schema = $schemaClosure();
57
+
58
+		if (!$schema->hasTable('sms_relent_settings')) {
59
+			$table = $schema->createTable('sms_relent_settings');
60
+			$table->addColumn('id', Types::BIGINT, [
61
+				'autoincrement' => true,
62
+				'notnull' => true,
63
+                                'length' => 11,
64
+                                'unsigned' => true,
65
+			]);
66
+			$table->addColumn('user_id', Types::STRING, [
67
+				'notnull' => true,
68
+				'length' => 128,
69
+			]);
70
+			$table->addColumn('telapi_key', Types::STRING, [
71
+				'notnull' => true,
72
+				'length' => 512,
73
+			]);
74
+			$table->addColumn('tel_pub_key', Types::STRING, [
75
+				'notnull' => true,
76
+				'length' => 512,
77
+			]);
78
+			$table->addColumn('telapi_url_rec', Types::STRING, [
79
+				'notnull' => true,
80
+				'length' => 512,
81
+			]);
82
+			$table->addColumn('telapi_url', Types::STRING, [
83
+				'notnull' => true,
84
+				'length' => 512,
85
+			]);
86
+			$table->addColumn('messaging_profile_id', Types::STRING, [
87
+				'notnull' => true,
88
+				'length' => 512,
89
+			]);
90
+			$table->addColumn('nexapi_key', Types::STRING, [
91
+				'notnull' => true,
92
+				'length' => 512,
93
+			]);
94
+			$table->addColumn('nexapi_secret', Types::STRING, [
95
+				'notnull' => true,
96
+				'length' => 512,
97
+			]);
98
+			$table->addColumn('nexapi_url_rec', Types::STRING, [
99
+				'notnull' => true,
100
+				'length' => 512,
101
+			]);
102
+			$table->addColumn('nexapi_url', Types::STRING, [
103
+				'notnull' => true,
104
+				'length' => 512,
105
+			]);
106
+			$table->addColumn('twilapi_key', Types::STRING, [
107
+				'notnull' => true,
108
+				'length' => 512,
109
+			]);
110
+			$table->addColumn('twilapi_secret', Types::STRING, [
111
+				'notnull' => true,
112
+				'length' => 512,
113
+			]);
114
+			$table->addColumn('twilapi_url_rec', Types::STRING, [
115
+				'notnull' => true,
116
+				'length' => 512,
117
+			]);
118
+			$table->addColumn('twilapi_url', Types::STRING, [
119
+				'notnull' => true,
120
+				'length' => 512,
121
+			]);
122
+			$table->addColumn('flowapi_key', Types::STRING, [
123
+				'notnull' => true,
124
+				'length' => 512,
125
+			]);
126
+			$table->addColumn('flowapi_secret', Types::STRING, [
127
+				'notnull' => true,
128
+				'length' => 512,
129
+			]);
130
+			$table->addColumn('flowapi_url_rec', Types::STRING, [
131
+				'notnull' => true,
132
+				'length' => 512,
133
+			]);
134
+			$table->addColumn('flowapi_url', Types::STRING, [
135
+				'notnull' => true,
136
+				'length' => 512,
137
+			]);
138
+			$table->addColumn('tel_sender_name', Types::STRING, [
139
+				'notnull' => false,
140
+				'length' => 48,
141
+				'default' => '',
142
+			]);
143
+			$table->addColumn('nex_sender_name', Types::STRING, [
144
+				'notnull' => false,
145
+				'length' => 48,
146
+				'default' => '',
147
+			]);
148
+			$table->addColumn('twil_sender_name', Types::STRING, [
149
+				'notnull' => false,
150
+				'length' => 48,
151
+				'default' => '',
152
+			]);
153
+			$table->addColumn('flow_sender_name', Types::STRING, [
154
+				'notnull' => false,
155
+				'length' => 48,
156
+				'default' => '',
157
+			]);
158
+			$table->addColumn('messagesperpage', Types::INTEGER, [
159
+				'notnull' => false,
160
+				'length' => 11,
161
+                                'unsigned' => true,
162
+			]);
163
+			$table->addColumn('get_notify', Types::SMALLINT, [
164
+				'notnull' => false,
165
+				'length' => 1,
166
+			]);
167
+			$table->addColumn('notification_email', Types::STRING, [
168
+				'notnull' => false,
169
+				'length' => 512,
170
+				'default' => '',
171
+			]);
172
+			$table->addColumn('getsmsinemail', Types::SMALLINT, [
173
+				'notnull' => false,
174
+				'length' => 1,
175
+			]);
176
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
177
+				'notnull' => false,
178
+				'length' => 1,
179
+			]);
180
+			$table->addColumn('show_display_names', Types::SMALLINT, [
181
+				'notnull' => false,
182
+				'length' => 1,
183
+			]);
184
+                        $table->setPrimaryKey(['id']);
185
+                        $table->addUniqueIndex(['id']);
186
+
187
+		}
188
+
189
+
190
+		if (!$schema->hasTable('sms_relent_received')) {
191
+			$table = $schema->createTable('sms_relent_received');
192
+			$table->addColumn('id', Types::BIGINT, [
193
+				'autoincrement' => true,
194
+				'notnull' => true,
195
+                                'length' => 11,
196
+                                'unsigned' => true,
197
+			]);
198
+			$table->addColumn('user_id', Types::STRING, [
199
+				'notnull' => true,
200
+				'length' => 64,
201
+			]);
202
+			$table->addColumn('message_id', Types::STRING, [
203
+				'notnull' => true,
204
+				'length' => 512,
205
+			]);
206
+			$table->addColumn('date', Types::DATETIME, [
207
+				'notnull' => true,
208
+			]);
209
+			$table->addColumn('from', Types::STRING, [
210
+				'notnull' => true,
211
+				'length' => 128,
212
+			]);
213
+			$table->addColumn('to', Types::STRING, [
214
+				'notnull' => true,
215
+				'length' => 128,
216
+			]);
217
+			$table->addColumn('message', Types::TEXT, [
218
+				'notnull' => false,
219
+				'default' => '',
220
+			]);
221
+			$table->addColumn('author_displayname', Types::STRING, [
222
+				'notnull' => true,
223
+				'length' => 255,
224
+			]);
225
+			$table->addColumn('internal_sender', Types::SMALLINT, [
226
+				'notnull' => false,
227
+				'length' => 1,
228
+			]);
229
+                        $table->setPrimaryKey(['id']);
230
+                        $table->addUniqueIndex(['id']);
231
+
232
+		}
233
+
234
+
235
+		if (!$schema->hasTable('sms_relent_sent')) {
236
+			$table = $schema->createTable('sms_relent_sent');
237
+			$table->addColumn('id', Types::BIGINT, [
238
+				'autoincrement' => true,
239
+				'notnull' => true,
240
+                                'length' => 11,
241
+                                'unsigned' => true,
242
+			]);
243
+			$table->addColumn('user_id', Types::STRING, [
244
+				'notnull' => true,
245
+				'length' => 64,
246
+			]);
247
+			$table->addColumn('message_id', Types::STRING, [
248
+				'notnull' => true,
249
+				'length' => 512,
250
+			]);
251
+			$table->addColumn('date', Types::DATETIME, [
252
+				'notnull' => true,
253
+			]);
254
+			$table->addColumn('from', Types::STRING, [
255
+				'notnull' => true,
256
+				'length' => 128,
257
+			]);
258
+			$table->addColumn('to', Types::STRING, [
259
+				'notnull' => true,
260
+				'length' => 128,
261
+			]);
262
+			$table->addColumn('network ', Types::STRING, [
263
+				'notnull' => false,
264
+				'length' => 64,
265
+				'default' => '',
266
+			]);
267
+			$table->addColumn('price', Types::STRING, [
268
+				'notnull' => false,
269
+				'length' => 64,
270
+				'default' => '',
271
+			]);
272
+			$table->addColumn('status', Types::STRING, [
273
+				'notnull' => false,
274
+				'length' => 512,
275
+				'default' => '',
276
+			]);
277
+			$table->addColumn('deliveryreceipt', Types::STRING, [
278
+				'notnull' => false,
279
+				'length' => 64,
280
+				'default' => '',
281
+			]);
282
+			$table->addColumn('message', Types::TEXT, [
283
+				'notnull' => false,
284
+                                'default' => '',
285
+			]);
286
+			$table->addColumn('author_displayname', Types::STRING, [
287
+				'notnull' => true,
288
+				'length' => 255,
289
+			]);
290
+                        $table->setPrimaryKey(['id']);
291
+                        $table->addUniqueIndex(['id']);
292
+
293
+		}
294
+
295
+
296
+		if (!$schema->hasTable('sms_relent_autorply')) {
297
+			$table = $schema->createTable('sms_relent_autorply');
298
+			$table->addColumn('id', Types::BIGINT, [
299
+				'autoincrement' => true,
300
+				'notnull' => true,
301
+                                'length' => 11,
302
+                                'unsigned' => true,
303
+			]);
304
+			$table->addColumn('user_id', Types::STRING, [
305
+				'notnull' => true,
306
+				'length' => 128,
307
+			]);
308
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
309
+				'notnull' => true,
310
+				'length' => 255,
311
+			]);
312
+			$table->addColumn('phone_number', Types::STRING, [
313
+				'notnull' => true,
314
+				'length' => 128,
315
+			]);
316
+			$table->addColumn('days_of_week', Types::STRING, [
317
+				'notnull' => false,
318
+				'length' => 64,
319
+                                'default' => '',
320
+			]);
321
+			$table->addColumn('daily_start', Types::STRING, [
322
+				'notnull' => false,
323
+				'length' => 8,
324
+                                'default' => '',
325
+			]);
326
+			$table->addColumn('daily_end', Types::STRING, [
327
+				'notnull' => false,
328
+				'length' => 8,
329
+                                'default' => '',
330
+			]);
331
+			$table->addColumn('vacation_start', Types::DATETIME, [
332
+				'notnull' => false,
333
+			]);
334
+			$table->addColumn('vacation_end', Types::DATETIME, [
335
+				'notnull' => false,
336
+			]);
337
+			$table->addColumn('message_text', Types::TEXT, [
338
+				'notnull' => false,
339
+                                'default' => '',
340
+			]);
341
+                        $table->setPrimaryKey(['id']);
342
+                        $table->addUniqueIndex(['id']);
343
+
344
+		}
345
+
346
+
347
+		if (!$schema->hasTable('sms_relent_restrict')) {
348
+			$table = $schema->createTable('sms_relent_restrict');
349
+			$table->addColumn('id', Types::BIGINT, [
350
+				'autoincrement' => true,
351
+				'notnull' => true,
352
+                                'length' => 11,
353
+                                'unsigned' => true,
354
+			]);
355
+			$table->addColumn('user_id', Types::STRING, [
356
+				'notnull' => true,
357
+				'length' => 128,
358
+			]);
359
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
360
+				'notnull' => true,
361
+				'length' => 255,
362
+			]);
363
+			$table->addColumn('phone_number', Types::STRING, [
364
+				'notnull' => true,
365
+				'length' => 128,
366
+			]);
367
+			$table->addColumn('groups', Types::STRING, [
368
+				'notnull' => true,
369
+				'length' => 2048,
370
+			]);
371
+			$table->addColumn('users', Types::STRING, [
372
+				'notnull' => true,
373
+				'length' => 2048,
374
+			]);
375
+                        $table->setPrimaryKey(['id']);
376
+                        $table->addUniqueIndex(['id']);
377
+
378
+		}
379
+
380
+		return $schema;
381
+	}
382
+
383
+        public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
384
+
385
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_sent' table, for messages that were sent before the upgrade
386
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `user_id` FROM `*PREFIX*sms_relent_sent`');
387
+	        $getrecfromnbres = $getrecfromnb->execute();
388
+
389
+                $recdatauids = [];
390
+                $idsent = [];
391
+                while ($rowfetched = $getrecfromnbres->fetch()) {
392
+                       $recdatauids[] = $rowfetched['user_id'];
393
+                       $idsent[] = $rowfetched['id'];
394
+                }
395
+                $getrecfromnbres->closeCursor();
396
+
397
+                if ($recdatauids) {
398
+
399
+                    $recuids = array_values(array_unique($recdatauids));
400
+                    $acdatausrdn = [];
401
+
402
+                    foreach ($recuids as $dnkey => $dnvalue) {
403
+		             $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
404
+			     $getacdatadnres = $getacdatadn->execute([$dnvalue, 'displayname']);
405
+
406
+			     while ($acusrdnfetched = $getacdatadnres->fetch()) {
407
+				    $acdatausrdn[$dnvalue] = $acusrdnfetched['value'];
408
+			     }
409
+			     $getacdatadnres->closeCursor();
410
+                    }
411
+
412
+                    foreach ($recdatauids as $pdpkey => $pdpvalue) {
413
+
414
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_sent` SET `author_displayname` = ? WHERE `user_id` = ? AND `id` = ?');
415
+			     $updaterecmsres = $updaterecms->execute([$acdatausrdn[$pdpvalue], $pdpvalue, $idsent[$pdpkey]]);
416
+			     $updaterecmsres->closeCursor();
417
+                    }
418
+                }
419
+
420
+
421
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_received' table, for messages that were received before the upgrade
422
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `date`, `from` FROM `*PREFIX*sms_relent_received`');
423
+	        $getrecfromnbres = $getrecfromnb->execute();
424
+
425
+                $recdatanmbrs = [];
426
+                $idsrc = [];
427
+                $daterec = [];
428
+                while ($rowfetched = $getrecfromnbres->fetch()) {
429
+                       $recdatanmbrs[] = $rowfetched['from'];
430
+                       $idsrc[] = $rowfetched['id'];
431
+                       $daterecarr = explode(":", $rowfetched['date']);
432
+                       $daterec[] = $daterecarr[0];
433
+                }
434
+                $getrecfromnbres->closeCursor();
435
+
436
+                if ($recdatanmbrs) {
437
+
438
+                    foreach ($recdatanmbrs as $rckey => $rcvalue) {
439
+
440
+			     $authorDisplayNm = '';
441
+			     $internalSender = 0;
442
+
443
+			     // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
444
+			     $recmsgfromprc = '%' . $rcvalue;
445
+                             $recdataprc = $daterec[$rckey] . '%';
446
+			     $getdspnmst = $this->connection->prepare('SELECT `date`, `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ? AND `date` LIKE ?');
447
+			     $getdspnmstres = $getdspnmst->execute([$recmsgfromprc, $recdataprc]);
448
+
449
+			     $dispnamearr = [];
450
+			     while ($dspnmstfetched = $getdspnmstres->fetch()) {
451
+				    $dispnamearr[] = $dspnmstfetched['author_displayname'];
452
+			     }
453
+			     $getdspnmstres->closeCursor();
454
+
455
+			     if ($dispnamearr) {
456
+				 $descdspnmarr = array_reverse($dispnamearr);
457
+				 $authorDisplayNm = $descdspnmarr[0];
458
+				 $internalSender = 1;
459
+			     } else { $authorDisplayNm = ''; $internalSender = 0; }
460
+
461
+
462
+			     if (!$authorDisplayNm) {
463
+
464
+				 // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table
465
+				 $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
466
+				 $getdspnmres = $getdspnm->execute([$rcvalue]);
467
+
468
+				 $dspnmearr = [];
469
+				 while ($dspnmfetched = $getdspnmres->fetch()) {
470
+				        if ($dspnmfetched['author_displayname']) {
471
+				            $dspnmearr[] = $dspnmfetched['author_displayname'];
472
+				        }
473
+				 }
474
+				 $getdspnmres->closeCursor();
475
+
476
+				 if ($dspnmearr) {
477
+				     $descdisplaynmarr = array_reverse($dspnmearr);
478
+				     $authorDisplayNm = $descdisplaynmarr[0];
479
+				     $internalSender = 0;
480
+				 } else { $authorDisplayNm = ''; $internalSender = 0; }
481
+			     }
482
+
483
+                             $pdpkeyprc = '%' . $rcvalue;
484
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_received` SET `author_displayname` = ?, `internal_sender` = ?
485
+                                                                        WHERE `from` LIKE ? AND `id` = ?');
486
+			     $updaterecmsres = $updaterecms->execute([$authorDisplayNm, $internalSender, $pdpkeyprc, $idsrc[$rckey]]);
487
+			     $updaterecmsres->closeCursor();
488
+                    }
489
+                }
490
+
491
+                return null;
492
+        }
493
+
494
+}
0 495
new file mode 100644
... ...
@@ -0,0 +1,494 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Migration;
27
+
28
+use Closure;
29
+use OCP\DB\Types;
30
+use OCP\DB\ISchemaWrapper;
31
+use OCP\IDBConnection;
32
+use OCP\Migration\IOutput;
33
+use OCP\Migration\SimpleMigrationStep;
34
+
35
+
36
+class Version118Date20230509194216 extends SimpleMigrationStep {
37
+
38
+        /** @var IDBConnection */
39
+        private $connection;
40
+
41
+        /**
42
+         * @param IDBConnection $connection
43
+         */
44
+        public function __construct(IDBConnection $connection) {
45
+                $this->connection = $connection;
46
+        }
47
+
48
+	/**
49
+	 * @param IOutput $output
50
+	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
51
+	 * @param array $options
52
+	 * @return null|ISchemaWrapper
53
+	 */
54
+	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
55
+		/** @var ISchemaWrapper $schema */
56
+		$schema = $schemaClosure();
57
+
58
+		if (!$schema->hasTable('sms_relent_settings')) {
59
+			$table = $schema->createTable('sms_relent_settings');
60
+			$table->addColumn('id', Types::BIGINT, [
61
+				'autoincrement' => true,
62
+				'notnull' => true,
63
+                                'length' => 11,
64
+                                'unsigned' => true,
65
+			]);
66
+			$table->addColumn('user_id', Types::STRING, [
67
+				'notnull' => true,
68
+				'length' => 128,
69
+			]);
70
+			$table->addColumn('telapi_key', Types::STRING, [
71
+				'notnull' => true,
72
+				'length' => 512,
73
+			]);
74
+			$table->addColumn('tel_pub_key', Types::STRING, [
75
+				'notnull' => true,
76
+				'length' => 512,
77
+			]);
78
+			$table->addColumn('telapi_url_rec', Types::STRING, [
79
+				'notnull' => true,
80
+				'length' => 512,
81
+			]);
82
+			$table->addColumn('telapi_url', Types::STRING, [
83
+				'notnull' => true,
84
+				'length' => 512,
85
+			]);
86
+			$table->addColumn('messaging_profile_id', Types::STRING, [
87
+				'notnull' => true,
88
+				'length' => 512,
89
+			]);
90
+			$table->addColumn('nexapi_key', Types::STRING, [
91
+				'notnull' => true,
92
+				'length' => 512,
93
+			]);
94
+			$table->addColumn('nexapi_secret', Types::STRING, [
95
+				'notnull' => true,
96
+				'length' => 512,
97
+			]);
98
+			$table->addColumn('nexapi_url_rec', Types::STRING, [
99
+				'notnull' => true,
100
+				'length' => 512,
101
+			]);
102
+			$table->addColumn('nexapi_url', Types::STRING, [
103
+				'notnull' => true,
104
+				'length' => 512,
105
+			]);
106
+			$table->addColumn('twilapi_key', Types::STRING, [
107
+				'notnull' => true,
108
+				'length' => 512,
109
+			]);
110
+			$table->addColumn('twilapi_secret', Types::STRING, [
111
+				'notnull' => true,
112
+				'length' => 512,
113
+			]);
114
+			$table->addColumn('twilapi_url_rec', Types::STRING, [
115
+				'notnull' => true,
116
+				'length' => 512,
117
+			]);
118
+			$table->addColumn('twilapi_url', Types::STRING, [
119
+				'notnull' => true,
120
+				'length' => 512,
121
+			]);
122
+			$table->addColumn('flowapi_key', Types::STRING, [
123
+				'notnull' => true,
124
+				'length' => 512,
125
+			]);
126
+			$table->addColumn('flowapi_secret', Types::STRING, [
127
+				'notnull' => true,
128
+				'length' => 512,
129
+			]);
130
+			$table->addColumn('flowapi_url_rec', Types::STRING, [
131
+				'notnull' => true,
132
+				'length' => 512,
133
+			]);
134
+			$table->addColumn('flowapi_url', Types::STRING, [
135
+				'notnull' => true,
136
+				'length' => 512,
137
+			]);
138
+			$table->addColumn('tel_sender_name', Types::STRING, [
139
+				'notnull' => false,
140
+				'length' => 48,
141
+				'default' => '',
142
+			]);
143
+			$table->addColumn('nex_sender_name', Types::STRING, [
144
+				'notnull' => false,
145
+				'length' => 48,
146
+				'default' => '',
147
+			]);
148
+			$table->addColumn('twil_sender_name', Types::STRING, [
149
+				'notnull' => false,
150
+				'length' => 48,
151
+				'default' => '',
152
+			]);
153
+			$table->addColumn('flow_sender_name', Types::STRING, [
154
+				'notnull' => false,
155
+				'length' => 48,
156
+				'default' => '',
157
+			]);
158
+			$table->addColumn('messagesperpage', Types::INTEGER, [
159
+				'notnull' => false,
160
+				'length' => 11,
161
+                                'unsigned' => true,
162
+			]);
163
+			$table->addColumn('get_notify', Types::SMALLINT, [
164
+				'notnull' => false,
165
+				'length' => 1,
166
+			]);
167
+			$table->addColumn('notification_email', Types::STRING, [
168
+				'notnull' => false,
169
+				'length' => 512,
170
+				'default' => '',
171
+			]);
172
+			$table->addColumn('getsmsinemail', Types::SMALLINT, [
173
+				'notnull' => false,
174
+				'length' => 1,
175
+			]);
176
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
177
+				'notnull' => false,
178
+				'length' => 1,
179
+			]);
180
+			$table->addColumn('show_display_names', Types::SMALLINT, [
181
+				'notnull' => false,
182
+				'length' => 1,
183
+			]);
184
+                        $table->setPrimaryKey(['id']);
185
+                        $table->addUniqueIndex(['id']);
186
+
187
+		}
188
+
189
+
190
+		if (!$schema->hasTable('sms_relent_received')) {
191
+			$table = $schema->createTable('sms_relent_received');
192
+			$table->addColumn('id', Types::BIGINT, [
193
+				'autoincrement' => true,
194
+				'notnull' => true,
195
+                                'length' => 11,
196
+                                'unsigned' => true,
197
+			]);
198
+			$table->addColumn('user_id', Types::STRING, [
199
+				'notnull' => true,
200
+				'length' => 64,
201
+			]);
202
+			$table->addColumn('message_id', Types::STRING, [
203
+				'notnull' => true,
204
+				'length' => 512,
205
+			]);
206
+			$table->addColumn('date', Types::DATETIME, [
207
+				'notnull' => true,
208
+			]);
209
+			$table->addColumn('from', Types::STRING, [
210
+				'notnull' => true,
211
+				'length' => 128,
212
+			]);
213
+			$table->addColumn('to', Types::STRING, [
214
+				'notnull' => true,
215
+				'length' => 128,
216
+			]);
217
+			$table->addColumn('message', Types::TEXT, [
218
+				'notnull' => false,
219
+				'default' => '',
220
+			]);
221
+			$table->addColumn('author_displayname', Types::STRING, [
222
+				'notnull' => true,
223
+				'length' => 255,
224
+			]);
225
+			$table->addColumn('internal_sender', Types::SMALLINT, [
226
+				'notnull' => false,
227
+				'length' => 1,
228
+			]);
229
+                        $table->setPrimaryKey(['id']);
230
+                        $table->addUniqueIndex(['id']);
231
+
232
+		}
233
+
234
+
235
+		if (!$schema->hasTable('sms_relent_sent')) {
236
+			$table = $schema->createTable('sms_relent_sent');
237
+			$table->addColumn('id', Types::BIGINT, [
238
+				'autoincrement' => true,
239
+				'notnull' => true,
240
+                                'length' => 11,
241
+                                'unsigned' => true,
242
+			]);
243
+			$table->addColumn('user_id', Types::STRING, [
244
+				'notnull' => true,
245
+				'length' => 64,
246
+			]);
247
+			$table->addColumn('message_id', Types::STRING, [
248
+				'notnull' => true,
249
+				'length' => 512,
250
+			]);
251
+			$table->addColumn('date', Types::DATETIME, [
252
+				'notnull' => true,
253
+			]);
254
+			$table->addColumn('from', Types::STRING, [
255
+				'notnull' => true,
256
+				'length' => 128,
257
+			]);
258
+			$table->addColumn('to', Types::STRING, [
259
+				'notnull' => true,
260
+				'length' => 128,
261
+			]);
262
+			$table->addColumn('network ', Types::STRING, [
263
+				'notnull' => false,
264
+				'length' => 64,
265
+				'default' => '',
266
+			]);
267
+			$table->addColumn('price', Types::STRING, [
268
+				'notnull' => false,
269
+				'length' => 64,
270
+				'default' => '',
271
+			]);
272
+			$table->addColumn('status', Types::STRING, [
273
+				'notnull' => false,
274
+				'length' => 512,
275
+				'default' => '',
276
+			]);
277
+			$table->addColumn('deliveryreceipt', Types::STRING, [
278
+				'notnull' => false,
279
+				'length' => 64,
280
+				'default' => '',
281
+			]);
282
+			$table->addColumn('message', Types::TEXT, [
283
+				'notnull' => false,
284
+                                'default' => '',
285
+			]);
286
+			$table->addColumn('author_displayname', Types::STRING, [
287
+				'notnull' => true,
288
+				'length' => 255,
289
+			]);
290
+                        $table->setPrimaryKey(['id']);
291
+                        $table->addUniqueIndex(['id']);
292
+
293
+		}
294
+
295
+
296
+		if (!$schema->hasTable('sms_relent_autorply')) {
297
+			$table = $schema->createTable('sms_relent_autorply');
298
+			$table->addColumn('id', Types::BIGINT, [
299
+				'autoincrement' => true,
300
+				'notnull' => true,
301
+                                'length' => 11,
302
+                                'unsigned' => true,
303
+			]);
304
+			$table->addColumn('user_id', Types::STRING, [
305
+				'notnull' => true,
306
+				'length' => 128,
307
+			]);
308
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
309
+				'notnull' => true,
310
+				'length' => 255,
311
+			]);
312
+			$table->addColumn('phone_number', Types::STRING, [
313
+				'notnull' => true,
314
+				'length' => 128,
315
+			]);
316
+			$table->addColumn('days_of_week', Types::STRING, [
317
+				'notnull' => false,
318
+				'length' => 64,
319
+                                'default' => '',
320
+			]);
321
+			$table->addColumn('daily_start', Types::STRING, [
322
+				'notnull' => false,
323
+				'length' => 8,
324
+                                'default' => '',
325
+			]);
326
+			$table->addColumn('daily_end', Types::STRING, [
327
+				'notnull' => false,
328
+				'length' => 8,
329
+                                'default' => '',
330
+			]);
331
+			$table->addColumn('vacation_start', Types::DATETIME, [
332
+				'notnull' => false,
333
+			]);
334
+			$table->addColumn('vacation_end', Types::DATETIME, [
335
+				'notnull' => false,
336
+			]);
337
+			$table->addColumn('message_text', Types::TEXT, [
338
+				'notnull' => false,
339
+                                'default' => '',
340
+			]);
341
+                        $table->setPrimaryKey(['id']);
342
+                        $table->addUniqueIndex(['id']);
343
+
344
+		}
345
+
346
+
347
+		if (!$schema->hasTable('sms_relent_restrict')) {
348
+			$table = $schema->createTable('sms_relent_restrict');
349
+			$table->addColumn('id', Types::BIGINT, [
350
+				'autoincrement' => true,
351
+				'notnull' => true,
352
+                                'length' => 11,
353
+                                'unsigned' => true,
354
+			]);
355
+			$table->addColumn('user_id', Types::STRING, [
356
+				'notnull' => true,
357
+				'length' => 128,
358
+			]);
359
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
360
+				'notnull' => true,
361
+				'length' => 255,
362
+			]);
363
+			$table->addColumn('phone_number', Types::STRING, [
364
+				'notnull' => true,
365
+				'length' => 128,
366
+			]);
367
+			$table->addColumn('groups', Types::STRING, [
368
+				'notnull' => true,
369
+				'length' => 2048,
370
+			]);
371
+			$table->addColumn('users', Types::STRING, [
372
+				'notnull' => true,
373
+				'length' => 2048,
374
+			]);
375
+                        $table->setPrimaryKey(['id']);
376
+                        $table->addUniqueIndex(['id']);
377
+
378
+		}
379
+
380
+		return $schema;
381
+	}
382
+
383
+        public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
384
+
385
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_sent' table, for messages that were sent before the upgrade
386
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `user_id` FROM `*PREFIX*sms_relent_sent`');
387
+	        $getrecfromnbres = $getrecfromnb->execute();
388
+
389
+                $recdatauids = [];
390
+                $idsent = [];
391
+                while ($rowfetched = $getrecfromnbres->fetch()) {
392
+                       $recdatauids[] = $rowfetched['user_id'];
393
+                       $idsent[] = $rowfetched['id'];
394
+                }
395
+                $getrecfromnbres->closeCursor();
396
+
397
+                if ($recdatauids) {
398
+
399
+                    $recuids = array_values(array_unique($recdatauids));
400
+                    $acdatausrdn = [];
401
+
402
+                    foreach ($recuids as $dnkey => $dnvalue) {
403
+		             $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
404
+			     $getacdatadnres = $getacdatadn->execute([$dnvalue, 'displayname']);
405
+
406
+			     while ($acusrdnfetched = $getacdatadnres->fetch()) {
407
+				    $acdatausrdn[$dnvalue] = $acusrdnfetched['value'];
408
+			     }
409
+			     $getacdatadnres->closeCursor();
410
+                    }
411
+
412
+                    foreach ($recdatauids as $pdpkey => $pdpvalue) {
413
+
414
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_sent` SET `author_displayname` = ? WHERE `user_id` = ? AND `id` = ?');
415
+			     $updaterecmsres = $updaterecms->execute([$acdatausrdn[$pdpvalue], $pdpvalue, $idsent[$pdpkey]]);
416
+			     $updaterecmsres->closeCursor();
417
+                    }
418
+                }
419
+
420
+
421
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_received' table, for messages that were received before the upgrade
422
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `date`, `from` FROM `*PREFIX*sms_relent_received`');
423
+	        $getrecfromnbres = $getrecfromnb->execute();
424
+
425
+                $recdatanmbrs = [];
426
+                $idsrc = [];
427
+                $daterec = [];
428
+                while ($rowfetched = $getrecfromnbres->fetch()) {
429
+                       $recdatanmbrs[] = $rowfetched['from'];
430
+                       $idsrc[] = $rowfetched['id'];
431
+                       $daterecarr = explode(":", $rowfetched['date']);
432
+                       $daterec[] = $daterecarr[0];
433
+                }
434
+                $getrecfromnbres->closeCursor();
435
+
436
+                if ($recdatanmbrs) {
437
+
438
+                    foreach ($recdatanmbrs as $rckey => $rcvalue) {
439
+
440
+			     $authorDisplayNm = '';
441
+			     $internalSender = 0;
442
+
443
+			     // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
444
+			     $recmsgfromprc = '%' . $rcvalue;
445
+                             $recdataprc = $daterec[$rckey] . '%';
446
+			     $getdspnmst = $this->connection->prepare('SELECT `date`, `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ? AND `date` LIKE ?');
447
+			     $getdspnmstres = $getdspnmst->execute([$recmsgfromprc, $recdataprc]);
448
+
449
+			     $dispnamearr = [];
450
+			     while ($dspnmstfetched = $getdspnmstres->fetch()) {
451
+				    $dispnamearr[] = $dspnmstfetched['author_displayname'];
452
+			     }
453
+			     $getdspnmstres->closeCursor();
454
+
455
+			     if ($dispnamearr) {
456
+				 $descdspnmarr = array_reverse($dispnamearr);
457
+				 $authorDisplayNm = $descdspnmarr[0];
458
+				 $internalSender = 1;
459
+			     } else { $authorDisplayNm = ''; $internalSender = 0; }
460
+
461
+
462
+			     if (!$authorDisplayNm) {
463
+
464
+				 // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table
465
+				 $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
466
+				 $getdspnmres = $getdspnm->execute([$rcvalue]);
467
+
468
+				 $dspnmearr = [];
469
+				 while ($dspnmfetched = $getdspnmres->fetch()) {
470
+				        if ($dspnmfetched['author_displayname']) {
471
+				            $dspnmearr[] = $dspnmfetched['author_displayname'];
472
+				        }
473
+				 }
474
+				 $getdspnmres->closeCursor();
475
+
476
+				 if ($dspnmearr) {
477
+				     $descdisplaynmarr = array_reverse($dspnmearr);
478
+				     $authorDisplayNm = $descdisplaynmarr[0];
479
+				     $internalSender = 0;
480
+				 } else { $authorDisplayNm = ''; $internalSender = 0; }
481
+			     }
482
+
483
+                             $pdpkeyprc = '%' . $rcvalue;
484
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_received` SET `author_displayname` = ?, `internal_sender` = ?
485
+                                                                        WHERE `from` LIKE ? AND `id` = ?');
486
+			     $updaterecmsres = $updaterecms->execute([$authorDisplayNm, $internalSender, $pdpkeyprc, $idsrc[$rckey]]);
487
+			     $updaterecmsres->closeCursor();
488
+                    }
489
+                }
490
+
491
+                return null;
492
+        }
493
+
494
+}
0 495
new file mode 100644
... ...
@@ -0,0 +1,543 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Migration;
27
+
28
+use Closure;
29
+use OCP\DB\Types;
30
+use OCP\DB\ISchemaWrapper;
31
+use OCP\IDBConnection;
32
+use OCP\Migration\IOutput;
33
+use OCP\Migration\SimpleMigrationStep;
34
+
35
+
36
+class Version120Date20230520072431 extends SimpleMigrationStep {
37
+
38
+        /** @var IDBConnection */
39
+        private $connection;
40
+
41
+        /**
42
+         * @param IDBConnection $connection
43
+         */
44
+        public function __construct(IDBConnection $connection) {
45
+                $this->connection = $connection;
46
+        }
47
+
48
+	/**
49
+	 * @param IOutput $output
50
+	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
51
+	 * @param array $options
52
+	 * @return null|ISchemaWrapper
53
+	 */
54
+	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
55
+		/** @var ISchemaWrapper $schema */
56
+		$schema = $schemaClosure();
57
+
58
+		if (!$schema->hasTable('sms_relent_settings')) {
59
+			$table = $schema->createTable('sms_relent_settings');
60
+			$table->addColumn('id', Types::BIGINT, [
61
+				'autoincrement' => true,
62
+				'notnull' => true,
63
+                                'length' => 11,
64
+                                'unsigned' => true,
65
+			]);
66
+			$table->addColumn('user_id', Types::STRING, [
67
+				'notnull' => true,
68
+				'length' => 128,
69
+			]);
70
+			$table->addColumn('telapi_key', Types::STRING, [
71
+				'notnull' => true,
72
+				'length' => 512,
73
+			]);
74
+			$table->addColumn('tel_pub_key', Types::STRING, [
75
+				'notnull' => true,
76
+				'length' => 512,
77
+			]);
78
+			$table->addColumn('telapi_url_rec', Types::STRING, [
79
+				'notnull' => true,
80
+				'length' => 512,
81
+			]);
82
+			$table->addColumn('telapi_url', Types::STRING, [
83
+				'notnull' => true,
84
+				'length' => 512,
85
+			]);
86
+			$table->addColumn('messaging_profile_id', Types::STRING, [
87
+				'notnull' => true,
88
+				'length' => 512,
89
+			]);
90
+			$table->addColumn('nexapi_key', Types::STRING, [
91
+				'notnull' => true,
92
+				'length' => 512,
93
+			]);
94
+			$table->addColumn('nexapi_secret', Types::STRING, [
95
+				'notnull' => true,
96
+				'length' => 512,
97
+			]);
98
+			$table->addColumn('nexapi_url_rec', Types::STRING, [
99
+				'notnull' => true,
100
+				'length' => 512,
101
+			]);
102
+			$table->addColumn('nexapi_url', Types::STRING, [
103
+				'notnull' => true,
104
+				'length' => 512,
105
+			]);
106
+			$table->addColumn('twilapi_key', Types::STRING, [
107
+				'notnull' => true,
108
+				'length' => 512,
109
+			]);
110
+			$table->addColumn('twilapi_secret', Types::STRING, [
111
+				'notnull' => true,
112
+				'length' => 512,
113
+			]);
114
+			$table->addColumn('twilapi_url_rec', Types::STRING, [
115
+				'notnull' => true,
116
+				'length' => 512,
117
+			]);
118
+			$table->addColumn('twilapi_url', Types::STRING, [
119
+				'notnull' => true,
120
+				'length' => 512,
121
+			]);
122
+			$table->addColumn('flowapi_key', Types::STRING, [
123
+				'notnull' => true,
124
+				'length' => 512,
125
+			]);
126
+			$table->addColumn('flowapi_secret', Types::STRING, [
127
+				'notnull' => true,
128
+				'length' => 512,
129
+			]);
130
+			$table->addColumn('flowapi_url_rec', Types::STRING, [
131
+				'notnull' => true,
132
+				'length' => 512,
133
+			]);
134
+			$table->addColumn('flowapi_url', Types::STRING, [
135
+				'notnull' => true,
136
+				'length' => 512,
137
+			]);
138
+			$table->addColumn('tel_sender_name', Types::STRING, [
139
+				'notnull' => false,
140
+				'length' => 48,
141
+				'default' => '',
142
+			]);
143
+			$table->addColumn('nex_sender_name', Types::STRING, [
144
+				'notnull' => false,
145
+				'length' => 48,
146
+				'default' => '',
147
+			]);
148
+			$table->addColumn('twil_sender_name', Types::STRING, [
149
+				'notnull' => false,
150
+				'length' => 48,
151
+				'default' => '',
152
+			]);
153
+			$table->addColumn('flow_sender_name', Types::STRING, [
154
+				'notnull' => false,
155
+				'length' => 48,
156
+				'default' => '',
157
+			]);
158
+			$table->addColumn('messagesperpage', Types::INTEGER, [
159
+				'notnull' => false,
160
+				'length' => 11,
161
+                                'unsigned' => true,
162
+			]);
163
+			$table->addColumn('get_notify', Types::SMALLINT, [
164
+				'notnull' => false,
165
+				'length' => 1,
166
+			]);
167
+			$table->addColumn('notification_email', Types::STRING, [
168
+				'notnull' => false,
169
+				'length' => 512,
170
+				'default' => '',
171
+			]);
172
+			$table->addColumn('getsmsinemail', Types::SMALLINT, [
173
+				'notnull' => false,
174
+				'length' => 1,
175
+			]);
176
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
177
+				'notnull' => false,
178
+				'length' => 1,
179
+			]);
180
+			$table->addColumn('show_display_names', Types::SMALLINT, [
181
+				'notnull' => false,
182
+				'length' => 1,
183
+			]);
184
+                        $table->setPrimaryKey(['id']);
185
+                        $table->addUniqueIndex(['id']);
186
+
187
+		}
188
+
189
+
190
+		if (!$schema->hasTable('sms_relent_received')) {
191
+			$table = $schema->createTable('sms_relent_received');
192
+			$table->addColumn('id', Types::BIGINT, [
193
+				'autoincrement' => true,
194
+				'notnull' => true,
195
+                                'length' => 11,
196
+                                'unsigned' => true,
197
+			]);
198
+			$table->addColumn('user_id', Types::STRING, [
199
+				'notnull' => true,
200
+				'length' => 64,
201
+			]);
202
+			$table->addColumn('message_id', Types::STRING, [
203
+				'notnull' => true,
204
+				'length' => 512,
205
+			]);
206
+			$table->addColumn('date', Types::DATETIME, [
207
+				'notnull' => true,
208
+			]);
209
+			$table->addColumn('from', Types::STRING, [
210
+				'notnull' => true,
211
+				'length' => 128,
212
+			]);
213
+			$table->addColumn('to', Types::STRING, [
214
+				'notnull' => true,
215
+				'length' => 128,
216
+			]);
217
+			$table->addColumn('message', Types::TEXT, [
218
+				'notnull' => false,
219
+				'default' => '',
220
+			]);
221
+			$table->addColumn('author_displayname', Types::STRING, [
222
+				'notnull' => true,
223
+				'length' => 255,
224
+			]);
225
+			$table->addColumn('internal_sender', Types::SMALLINT, [
226
+				'notnull' => false,
227
+				'length' => 1,
228
+			]);
229
+                        $table->setPrimaryKey(['id']);
230
+                        $table->addUniqueIndex(['id']);
231
+
232
+		}
233
+
234
+
235
+		if (!$schema->hasTable('sms_relent_sent')) {
236
+			$table = $schema->createTable('sms_relent_sent');
237
+			$table->addColumn('id', Types::BIGINT, [
238
+				'autoincrement' => true,
239
+				'notnull' => true,
240
+                                'length' => 11,
241
+                                'unsigned' => true,
242
+			]);
243
+			$table->addColumn('user_id', Types::STRING, [
244
+				'notnull' => true,
245
+				'length' => 64,
246
+			]);
247
+			$table->addColumn('message_id', Types::STRING, [
248
+				'notnull' => true,
249
+				'length' => 512,
250
+			]);
251
+			$table->addColumn('date', Types::DATETIME, [
252
+				'notnull' => true,
253
+			]);
254
+			$table->addColumn('from', Types::STRING, [
255
+				'notnull' => true,
256
+				'length' => 128,
257
+			]);
258
+			$table->addColumn('to', Types::STRING, [
259
+				'notnull' => true,
260
+				'length' => 128,
261
+			]);
262
+			$table->addColumn('network ', Types::STRING, [
263
+				'notnull' => false,
264
+				'length' => 64,
265
+				'default' => '',
266
+			]);
267
+			$table->addColumn('price', Types::STRING, [
268
+				'notnull' => false,
269
+				'length' => 64,
270
+				'default' => '',
271
+			]);
272
+			$table->addColumn('status', Types::STRING, [
273
+				'notnull' => false,
274
+				'length' => 512,
275
+				'default' => '',
276
+			]);
277
+			$table->addColumn('deliveryreceipt', Types::STRING, [
278
+				'notnull' => false,
279
+				'length' => 64,
280
+				'default' => '',
281
+			]);
282
+			$table->addColumn('message', Types::TEXT, [
283
+				'notnull' => false,
284
+                                'default' => '',
285
+			]);
286
+			$table->addColumn('author_displayname', Types::STRING, [
287
+				'notnull' => true,
288
+				'length' => 255,
289
+			]);
290
+                        $table->setPrimaryKey(['id']);
291
+                        $table->addUniqueIndex(['id']);
292
+
293
+		}
294
+
295
+
296
+		if (!$schema->hasTable('sms_relent_autorply')) {
297
+			$table = $schema->createTable('sms_relent_autorply');
298
+			$table->addColumn('id', Types::BIGINT, [
299
+				'autoincrement' => true,
300
+				'notnull' => true,
301
+                                'length' => 11,
302
+                                'unsigned' => true,
303
+			]);
304
+			$table->addColumn('user_id', Types::STRING, [
305
+				'notnull' => true,
306
+				'length' => 128,
307
+			]);
308
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
309
+				'notnull' => true,
310
+				'length' => 255,
311
+			]);
312
+			$table->addColumn('phone_number', Types::STRING, [
313
+				'notnull' => true,
314
+				'length' => 128,
315
+			]);
316
+			$table->addColumn('days_of_week', Types::STRING, [
317
+				'notnull' => false,
318
+				'length' => 64,
319
+                                'default' => '',
320
+			]);
321
+			$table->addColumn('daily_start', Types::STRING, [
322
+				'notnull' => false,
323
+				'length' => 8,
324
+                                'default' => '',
325
+			]);
326
+			$table->addColumn('daily_end', Types::STRING, [
327
+				'notnull' => false,
328
+				'length' => 8,
329
+                                'default' => '',
330
+			]);
331
+			$table->addColumn('vacation_start', Types::DATETIME, [
332
+				'notnull' => false,
333
+			]);
334
+			$table->addColumn('vacation_end', Types::DATETIME, [
335
+				'notnull' => false,
336
+			]);
337
+			$table->addColumn('message_text', Types::TEXT, [
338
+				'notnull' => false,
339
+                                'default' => '',
340
+			]);
341
+                        $table->setPrimaryKey(['id']);
342
+                        $table->addUniqueIndex(['id']);
343
+
344
+		}
345
+
346
+
347
+		if (!$schema->hasTable('sms_relent_restrict')) {
348
+			$table = $schema->createTable('sms_relent_restrict');
349
+			$table->addColumn('id', Types::BIGINT, [
350
+				'autoincrement' => true,
351
+				'notnull' => true,
352
+                                'length' => 11,
353
+                                'unsigned' => true,
354
+			]);
355
+			$table->addColumn('user_id', Types::STRING, [
356
+				'notnull' => true,
357
+				'length' => 128,
358
+			]);
359
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
360
+				'notnull' => true,
361
+				'length' => 255,
362
+			]);
363
+			$table->addColumn('phone_number', Types::STRING, [
364
+				'notnull' => true,
365
+				'length' => 128,
366
+			]);
367
+			$table->addColumn('groups', Types::STRING, [
368
+				'notnull' => true,
369
+				'length' => 2048,
370
+			]);
371
+			$table->addColumn('users', Types::STRING, [
372
+				'notnull' => true,
373
+				'length' => 2048,
374
+			]);
375
+                        $table->setPrimaryKey(['id']);
376
+                        $table->addUniqueIndex(['id']);
377
+
378
+		}
379
+
380
+		if (!$schema->hasTable('sms_relent_subac')) {
381
+			$table = $schema->createTable('sms_relent_subac');
382
+			$table->addColumn('id', Types::BIGINT, [
383
+				'autoincrement' => true,
384
+				'notnull' => true,
385
+                                'length' => 11,
386
+                                'unsigned' => true,
387
+			]);
388
+			$table->addColumn('user_id', Types::STRING, [
389
+				'notnull' => true,
390
+				'length' => 128,
391
+			]);
392
+			$table->addColumn('tnx_groups_allowed', Types::TEXT, [
393
+				'notnull' => false,
394
+                                'default' => '',
395
+			]);
396
+			$table->addColumn('tnx_users_allowed', Types::TEXT, [
397
+				'notnull' => false,
398
+                                'default' => '',
399
+			]);
400
+			$table->addColumn('plv_groups_allowed', Types::TEXT, [
401
+				'notnull' => false,
402
+                                'default' => '',
403
+			]);
404
+			$table->addColumn('plv_users_allowed', Types::TEXT, [
405
+				'notnull' => false,
406
+                                'default' => '',
407
+			]);
408
+			$table->addColumn('twl_groups_allowed', Types::TEXT, [
409
+				'notnull' => false,
410
+                                'default' => '',
411
+			]);
412
+			$table->addColumn('twl_users_allowed', Types::TEXT, [
413
+				'notnull' => false,
414
+                                'default' => '',
415
+			]);
416
+			$table->addColumn('flr_groups_allowed', Types::TEXT, [
417
+				'notnull' => false,
418
+                                'default' => '',
419
+			]);
420
+			$table->addColumn('flr_users_allowed', Types::TEXT, [
421
+				'notnull' => false,
422
+                                'default' => '',
423
+			]);
424
+                        $table->setPrimaryKey(['id']);
425
+                        $table->addUniqueIndex(['id']);
426
+		}
427
+
428
+
429
+		return $schema;
430
+	}
431
+
432
+        public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
433
+
434
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_sent' table, for messages that were sent before the upgrade
435
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `user_id` FROM `*PREFIX*sms_relent_sent`');
436
+	        $getrecfromnbres = $getrecfromnb->execute();
437
+
438
+                $recdatauids = [];
439
+                $idsent = [];
440
+                while ($rowfetched = $getrecfromnbres->fetch()) {
441
+                       $recdatauids[] = $rowfetched['user_id'];
442
+                       $idsent[] = $rowfetched['id'];
443
+                }
444
+                $getrecfromnbres->closeCursor();
445
+
446
+                if ($recdatauids) {
447
+
448
+                    $recuids = array_values(array_unique($recdatauids));
449
+                    $acdatausrdn = [];
450
+
451
+                    foreach ($recuids as $dnkey => $dnvalue) {
452
+		             $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
453
+			     $getacdatadnres = $getacdatadn->execute([$dnvalue, 'displayname']);
454
+
455
+			     while ($acusrdnfetched = $getacdatadnres->fetch()) {
456
+				    $acdatausrdn[$dnvalue] = $acusrdnfetched['value'];
457
+			     }
458
+			     $getacdatadnres->closeCursor();
459
+                    }
460
+
461
+                    foreach ($recdatauids as $pdpkey => $pdpvalue) {
462
+
463
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_sent` SET `author_displayname` = ? WHERE `user_id` = ? AND `id` = ?');
464
+			     $updaterecmsres = $updaterecms->execute([$acdatausrdn[$pdpvalue], $pdpvalue, $idsent[$pdpkey]]);
465
+			     $updaterecmsres->closeCursor();
466
+                    }
467
+                }
468
+
469
+
470
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_received' table, for messages that were received before the upgrade
471
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `date`, `from` FROM `*PREFIX*sms_relent_received`');
472
+	        $getrecfromnbres = $getrecfromnb->execute();
473
+
474
+                $recdatanmbrs = [];
475
+                $idsrc = [];
476
+                $daterec = [];
477
+                while ($rowfetched = $getrecfromnbres->fetch()) {
478
+                       $recdatanmbrs[] = $rowfetched['from'];
479
+                       $idsrc[] = $rowfetched['id'];
480
+                       $daterecarr = explode(":", $rowfetched['date']);
481
+                       $daterec[] = $daterecarr[0];
482
+                }
483
+                $getrecfromnbres->closeCursor();
484
+
485
+                if ($recdatanmbrs) {
486
+
487
+                    foreach ($recdatanmbrs as $rckey => $rcvalue) {
488
+
489
+			     $authorDisplayNm = '';
490
+			     $internalSender = 0;
491
+
492
+			     // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
493
+			     $recmsgfromprc = '%' . $rcvalue;
494
+                             $recdataprc = $daterec[$rckey] . '%';
495
+			     $getdspnmst = $this->connection->prepare('SELECT `date`, `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ? AND `date` LIKE ?');
496
+			     $getdspnmstres = $getdspnmst->execute([$recmsgfromprc, $recdataprc]);
497
+
498
+			     $dispnamearr = [];
499
+			     while ($dspnmstfetched = $getdspnmstres->fetch()) {
500
+				    $dispnamearr[] = $dspnmstfetched['author_displayname'];
501
+			     }
502
+			     $getdspnmstres->closeCursor();
503
+
504
+			     if ($dispnamearr) {
505
+				 $descdspnmarr = array_reverse($dispnamearr);
506
+				 $authorDisplayNm = $descdspnmarr[0];
507
+				 $internalSender = 1;
508
+			     } else { $authorDisplayNm = ''; $internalSender = 0; }
509
+
510
+
511
+			     if (!$authorDisplayNm) {
512
+
513
+				 // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table
514
+				 $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
515
+				 $getdspnmres = $getdspnm->execute([$rcvalue]);
516
+
517
+				 $dspnmearr = [];
518
+				 while ($dspnmfetched = $getdspnmres->fetch()) {
519
+				        if ($dspnmfetched['author_displayname']) {
520
+				            $dspnmearr[] = $dspnmfetched['author_displayname'];
521
+				        }
522
+				 }
523
+				 $getdspnmres->closeCursor();
524
+
525
+				 if ($dspnmearr) {
526
+				     $descdisplaynmarr = array_reverse($dspnmearr);
527
+				     $authorDisplayNm = $descdisplaynmarr[0];
528
+				     $internalSender = 0;
529
+				 } else { $authorDisplayNm = ''; $internalSender = 0; }
530
+			     }
531
+
532
+                             $pdpkeyprc = '%' . $rcvalue;
533
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_received` SET `author_displayname` = ?, `internal_sender` = ?
534
+                                                                        WHERE `from` LIKE ? AND `id` = ?');
535
+			     $updaterecmsres = $updaterecms->execute([$authorDisplayNm, $internalSender, $pdpkeyprc, $idsrc[$rckey]]);
536
+			     $updaterecmsres->closeCursor();
537
+                    }
538
+                }
539
+
540
+                return null;
541
+        }
542
+
543
+}
0 544
new file mode 100644
... ...
@@ -0,0 +1,544 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Migration;
27
+
28
+use Closure;
29
+use OCP\DB\Types;
30
+use OCP\DB\ISchemaWrapper;
31
+use OCP\IDBConnection;
32
+use OCP\Migration\IOutput;
33
+use OCP\Migration\SimpleMigrationStep;
34
+
35
+
36
+class Version121Date20230523201743 extends SimpleMigrationStep {
37
+
38
+        /** @var IDBConnection */
39
+        private $connection;
40
+
41
+        /**
42
+         * @param IDBConnection $connection
43
+         */
44
+        public function __construct(IDBConnection $connection) {
45
+                $this->connection = $connection;
46
+        }
47
+
48
+	/**
49
+	 * @param IOutput $output
50
+	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
51
+	 * @param array $options
52
+	 * @return null|ISchemaWrapper
53
+	 */
54
+	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
55
+		/** @var ISchemaWrapper $schema */
56
+		$schema = $schemaClosure();
57
+
58
+		if (!$schema->hasTable('sms_relent_settings')) {
59
+			$table = $schema->createTable('sms_relent_settings');
60
+			$table->addColumn('id', Types::BIGINT, [
61
+				'autoincrement' => true,
62
+				'notnull' => true,
63
+                                'length' => 11,
64
+                                'unsigned' => true,
65
+			]);
66
+			$table->addColumn('user_id', Types::STRING, [
67
+				'notnull' => true,
68
+				'length' => 128,
69
+			]);
70
+			$table->addColumn('telapi_key', Types::STRING, [
71
+				'notnull' => true,
72
+				'length' => 512,
73
+			]);
74
+			$table->addColumn('tel_pub_key', Types::STRING, [
75
+				'notnull' => true,
76
+				'length' => 512,
77
+			]);
78
+			$table->addColumn('telapi_url_rec', Types::STRING, [
79
+				'notnull' => true,
80
+				'length' => 512,
81
+			]);
82
+			$table->addColumn('telapi_url', Types::STRING, [
83
+				'notnull' => true,
84
+				'length' => 512,
85
+			]);
86
+			$table->addColumn('messaging_profile_id', Types::STRING, [
87
+				'notnull' => true,
88
+				'length' => 512,
89
+			]);
90
+			$table->addColumn('nexapi_key', Types::STRING, [
91
+				'notnull' => true,
92
+				'length' => 512,
93
+			]);
94
+			$table->addColumn('nexapi_secret', Types::STRING, [
95
+				'notnull' => true,
96
+				'length' => 512,
97
+			]);
98
+			$table->addColumn('nexapi_url_rec', Types::STRING, [
99
+				'notnull' => true,
100
+				'length' => 512,
101
+			]);
102
+			$table->addColumn('nexapi_url', Types::STRING, [
103
+				'notnull' => true,
104
+				'length' => 512,
105
+			]);
106
+			$table->addColumn('twilapi_key', Types::STRING, [
107
+				'notnull' => true,
108
+				'length' => 512,
109
+			]);
110
+			$table->addColumn('twilapi_secret', Types::STRING, [
111
+				'notnull' => true,
112
+				'length' => 512,
113
+			]);
114
+			$table->addColumn('twilapi_url_rec', Types::STRING, [
115
+				'notnull' => true,
116
+				'length' => 512,
117
+			]);
118
+			$table->addColumn('twilapi_url', Types::STRING, [
119
+				'notnull' => true,
120
+				'length' => 512,
121
+			]);
122
+			$table->addColumn('flowapi_key', Types::STRING, [
123
+				'notnull' => true,
124
+				'length' => 512,
125
+			]);
126
+			$table->addColumn('flowapi_secret', Types::STRING, [
127
+				'notnull' => true,
128
+				'length' => 512,
129
+			]);
130
+			$table->addColumn('flowapi_url_rec', Types::STRING, [
131
+				'notnull' => true,
132
+				'length' => 512,
133
+			]);
134
+			$table->addColumn('flowapi_url', Types::STRING, [
135
+				'notnull' => true,
136
+				'length' => 512,
137
+			]);
138
+			$table->addColumn('tel_sender_name', Types::STRING, [
139
+				'notnull' => false,
140
+				'length' => 48,
141
+				'default' => '',
142
+			]);
143
+			$table->addColumn('nex_sender_name', Types::STRING, [
144
+				'notnull' => false,
145
+				'length' => 48,
146
+				'default' => '',
147
+			]);
148
+			$table->addColumn('twil_sender_name', Types::STRING, [
149
+				'notnull' => false,
150
+				'length' => 48,
151
+				'default' => '',
152
+			]);
153
+			$table->addColumn('flow_sender_name', Types::STRING, [
154
+				'notnull' => false,
155
+				'length' => 48,
156
+				'default' => '',
157
+			]);
158
+			$table->addColumn('messagesperpage', Types::INTEGER, [
159
+				'notnull' => false,
160
+				'length' => 11,
161
+                                'unsigned' => true,
162
+			]);
163
+			$table->addColumn('get_notify', Types::SMALLINT, [
164
+				'notnull' => false,
165
+				'length' => 1,
166
+			]);
167
+			$table->addColumn('notification_email', Types::STRING, [
168
+				'notnull' => false,
169
+				'length' => 512,
170
+				'default' => '',
171
+			]);
172
+			$table->addColumn('getsmsinemail', Types::SMALLINT, [
173
+				'notnull' => false,
174
+				'length' => 1,
175
+			]);
176
+			$table->addColumn('show_all_messages', Types::SMALLINT, [
177
+				'notnull' => false,
178
+				'length' => 1,
179
+			]);
180
+			$table->addColumn('show_display_names', Types::SMALLINT, [
181
+				'notnull' => false,
182
+				'length' => 1,
183
+			]);
184
+                        $table->setPrimaryKey(['id']);
185
+                        $table->addUniqueIndex(['id']);
186
+
187
+		}
188
+
189
+
190
+		if (!$schema->hasTable('sms_relent_received')) {
191
+			$table = $schema->createTable('sms_relent_received');
192
+			$table->addColumn('id', Types::BIGINT, [
193
+				'autoincrement' => true,
194
+				'notnull' => true,
195
+                                'length' => 11,
196
+                                'unsigned' => true,
197
+			]);
198
+			$table->addColumn('user_id', Types::STRING, [
199
+				'notnull' => true,
200
+				'length' => 64,
201
+			]);
202
+			$table->addColumn('message_id', Types::STRING, [
203
+				'notnull' => true,
204
+				'length' => 512,
205
+			]);
206
+			$table->addColumn('date', Types::DATETIME, [
207
+				'notnull' => true,
208
+			]);
209
+			$table->addColumn('from', Types::STRING, [
210
+				'notnull' => true,
211
+				'length' => 128,
212
+			]);
213
+			$table->addColumn('to', Types::STRING, [
214
+				'notnull' => true,
215
+				'length' => 128,
216
+			]);
217
+			$table->addColumn('message', Types::TEXT, [
218
+				'notnull' => false,
219
+				'default' => '',
220
+			]);
221
+			$table->addColumn('author_displayname', Types::STRING, [
222
+				'notnull' => true,
223
+				'length' => 255,
224
+			]);
225
+			$table->addColumn('internal_sender', Types::SMALLINT, [
226
+				'notnull' => false,
227
+				'length' => 1,
228
+			]);
229
+                        $table->setPrimaryKey(['id']);
230
+                        $table->addUniqueIndex(['id']);
231
+
232
+		}
233
+
234
+
235
+		if (!$schema->hasTable('sms_relent_sent')) {
236
+			$table = $schema->createTable('sms_relent_sent');
237
+			$table->addColumn('id', Types::BIGINT, [
238
+				'autoincrement' => true,
239
+				'notnull' => true,
240
+                                'length' => 11,
241
+                                'unsigned' => true,
242
+			]);
243
+			$table->addColumn('user_id', Types::STRING, [
244
+				'notnull' => true,
245
+				'length' => 64,
246
+			]);
247
+			$table->addColumn('message_id', Types::STRING, [
248
+				'notnull' => true,
249
+				'length' => 512,
250
+			]);
251
+			$table->addColumn('date', Types::DATETIME, [
252
+				'notnull' => true,
253
+			]);
254
+			$table->addColumn('from', Types::STRING, [
255
+				'notnull' => true,
256
+				'length' => 128,
257
+			]);
258
+			$table->addColumn('to', Types::STRING, [
259
+				'notnull' => true,
260
+				'length' => 128,
261
+			]);
262
+			$table->addColumn('network ', Types::STRING, [
263
+				'notnull' => false,
264
+				'length' => 64,
265
+				'default' => '',
266
+			]);
267
+			$table->addColumn('price', Types::STRING, [
268
+				'notnull' => false,
269
+				'length' => 64,
270
+				'default' => '',
271
+			]);
272
+			$table->addColumn('status', Types::STRING, [
273
+				'notnull' => false,
274
+				'length' => 512,
275
+				'default' => '',
276
+			]);
277
+			$table->addColumn('deliveryreceipt', Types::STRING, [
278
+				'notnull' => false,
279
+				'length' => 64,
280
+				'default' => '',
281
+			]);
282
+			$table->addColumn('message', Types::TEXT, [
283
+				'notnull' => false,
284
+                                'default' => '',
285
+			]);
286
+			$table->addColumn('author_displayname', Types::STRING, [
287
+				'notnull' => true,
288
+				'length' => 255,
289
+			]);
290
+                        $table->setPrimaryKey(['id']);
291
+                        $table->addUniqueIndex(['id']);
292
+
293
+		}
294
+
295
+
296
+		if (!$schema->hasTable('sms_relent_autorply')) {
297
+			$table = $schema->createTable('sms_relent_autorply');
298
+			$table->addColumn('id', Types::BIGINT, [
299
+				'autoincrement' => true,
300
+				'notnull' => true,
301
+                                'length' => 11,
302
+                                'unsigned' => true,
303
+			]);
304
+			$table->addColumn('user_id', Types::STRING, [
305
+				'notnull' => true,
306
+				'length' => 128,
307
+			]);
308
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
309
+				'notnull' => true,
310
+				'length' => 255,
311
+			]);
312
+			$table->addColumn('phone_number', Types::STRING, [
313
+				'notnull' => true,
314
+				'length' => 128,
315
+			]);
316
+			$table->addColumn('days_of_week', Types::STRING, [
317
+				'notnull' => false,
318
+				'length' => 64,
319
+                                'default' => '',
320
+			]);
321
+			$table->addColumn('daily_start', Types::STRING, [
322
+				'notnull' => false,
323
+				'length' => 8,
324
+                                'default' => '',
325
+			]);
326
+			$table->addColumn('daily_end', Types::STRING, [
327
+				'notnull' => false,
328
+				'length' => 8,
329
+                                'default' => '',
330
+			]);
331
+			$table->addColumn('vacation_start', Types::DATETIME, [
332
+				'notnull' => false,
333
+			]);
334
+			$table->addColumn('vacation_end', Types::DATETIME, [
335
+				'notnull' => false,
336
+			]);
337
+			$table->addColumn('message_text', Types::TEXT, [
338
+				'notnull' => false,
339
+                                'default' => '',
340
+			]);
341
+                        $table->setPrimaryKey(['id']);
342
+                        $table->addUniqueIndex(['id']);
343
+
344
+		}
345
+
346
+
347
+		if (!$schema->hasTable('sms_relent_restrict')) {
348
+			$table = $schema->createTable('sms_relent_restrict');
349
+			$table->addColumn('id', Types::BIGINT, [
350
+				'autoincrement' => true,
351
+				'notnull' => true,
352
+                                'length' => 11,
353
+                                'unsigned' => true,
354
+			]);
355
+			$table->addColumn('user_id', Types::STRING, [
356
+				'notnull' => true,
357
+				'length' => 128,
358
+			]);
359
+			$table->addColumn('saved_by_dsplname', Types::STRING, [
360
+				'notnull' => true,
361
+				'length' => 255,
362
+			]);
363
+			$table->addColumn('phone_number', Types::STRING, [
364
+				'notnull' => true,
365
+				'length' => 128,
366
+			]);
367
+			$table->addColumn('groups', Types::STRING, [
368
+				'notnull' => true,
369
+				'length' => 2048,
370
+			]);
371
+			$table->addColumn('users', Types::STRING, [
372
+				'notnull' => true,
373
+				'length' => 2048,
374
+			]);
375
+                        $table->setPrimaryKey(['id']);
376
+                        $table->addUniqueIndex(['id']);
377
+
378
+		}
379
+
380
+		if (!$schema->hasTable('sms_relent_subac')) {
381
+			$table = $schema->createTable('sms_relent_subac');
382
+			$table->addColumn('id', Types::BIGINT, [
383
+				'autoincrement' => true,
384
+				'notnull' => true,
385
+                                'length' => 11,
386
+                                'unsigned' => true,
387
+			]);
388
+			$table->addColumn('user_id', Types::STRING, [
389
+				'notnull' => true,
390
+				'length' => 128,
391
+			]);
392
+			$table->addColumn('tnx_groups_allowed', Types::TEXT, [
393
+				'notnull' => false,
394
+                                'default' => '',
395
+			]);
396
+			$table->addColumn('tnx_users_allowed', Types::TEXT, [
397
+				'notnull' => false,
398
+                                'default' => '',
399
+			]);
400
+			$table->addColumn('plv_groups_allowed', Types::TEXT, [
401
+				'notnull' => false,
402
+                                'default' => '',
403
+			]);
404
+			$table->addColumn('plv_users_allowed', Types::TEXT, [
405
+				'notnull' => false,
406
+                                'default' => '',
407
+			]);
408
+			$table->addColumn('twl_groups_allowed', Types::TEXT, [
409
+				'notnull' => false,
410
+                                'default' => '',
411
+			]);
412
+			$table->addColumn('twl_users_allowed', Types::TEXT, [
413
+				'notnull' => false,
414
+                                'default' => '',
415
+			]);
416
+			$table->addColumn('flr_groups_allowed', Types::TEXT, [
417
+				'notnull' => false,
418
+                                'default' => '',
419
+			]);
420
+			$table->addColumn('flr_users_allowed', Types::TEXT, [
421
+				'notnull' => false,
422
+                                'default' => '',
423
+			]);
424
+                        $table->setPrimaryKey(['id']);
425
+                        $table->addUniqueIndex(['id']);
426
+		}
427
+
428
+
429
+		return $schema;
430
+	}
431
+
432
+        public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
433
+
434
+
435
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_sent' table, for messages that were sent before the upgrade
436
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `user_id` FROM `*PREFIX*sms_relent_sent`');
437
+	        $getrecfromnbres = $getrecfromnb->execute();
438
+
439
+                $recdatauids = [];
440
+                $idsent = [];
441
+                while ($rowfetched = $getrecfromnbres->fetch()) {
442
+                       $recdatauids[] = $rowfetched['user_id'];
443
+                       $idsent[] = $rowfetched['id'];
444
+                }
445
+                $getrecfromnbres->closeCursor();
446
+
447
+                if ($recdatauids) {
448
+
449
+                    $recuids = array_values(array_unique($recdatauids));
450
+                    $acdatausrdn = [];
451
+
452
+                    foreach ($recuids as $dnkey => $dnvalue) {
453
+		             $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
454
+			     $getacdatadnres = $getacdatadn->execute([$dnvalue, 'displayname']);
455
+
456
+			     while ($acusrdnfetched = $getacdatadnres->fetch()) {
457
+				    $acdatausrdn[$dnvalue] = $acusrdnfetched['value'];
458
+			     }
459
+			     $getacdatadnres->closeCursor();
460
+                    }
461
+
462
+                    foreach ($recdatauids as $pdpkey => $pdpvalue) {
463
+
464
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_sent` SET `author_displayname` = ? WHERE `user_id` = ? AND `id` = ?');
465
+			     $updaterecmsres = $updaterecms->execute([$acdatausrdn[$pdpvalue], $pdpvalue, $idsent[$pdpkey]]);
466
+			     $updaterecmsres->closeCursor();
467
+                    }
468
+                }
469
+
470
+
471
+                // Enter the Nextcloud display name in the 'author_displayname' column of the 'sms_relent_received' table, for messages that were received before the upgrade
472
+                $getrecfromnb = $this->connection->prepare('SELECT `id`, `date`, `from` FROM `*PREFIX*sms_relent_received`');
473
+	        $getrecfromnbres = $getrecfromnb->execute();
474
+
475
+                $recdatanmbrs = [];
476
+                $idsrc = [];
477
+                $daterec = [];
478
+                while ($rowfetched = $getrecfromnbres->fetch()) {
479
+                       $recdatanmbrs[] = $rowfetched['from'];
480
+                       $idsrc[] = $rowfetched['id'];
481
+                       $daterecarr = explode(":", $rowfetched['date']);
482
+                       $daterec[] = $daterecarr[0];
483
+                }
484
+                $getrecfromnbres->closeCursor();
485
+
486
+                if ($recdatanmbrs) {
487
+
488
+                    foreach ($recdatanmbrs as $rckey => $rcvalue) {
489
+
490
+			     $authorDisplayNm = '';
491
+			     $internalSender = 0;
492
+
493
+			     // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
494
+			     $recmsgfromprc = '%' . $rcvalue;
495
+                             $recdataprc = $daterec[$rckey] . '%';
496
+			     $getdspnmst = $this->connection->prepare('SELECT `date`, `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ? AND `date` LIKE ?');
497
+			     $getdspnmstres = $getdspnmst->execute([$recmsgfromprc, $recdataprc]);
498
+
499
+			     $dispnamearr = [];
500
+			     while ($dspnmstfetched = $getdspnmstres->fetch()) {
501
+				    $dispnamearr[] = $dspnmstfetched['author_displayname'];
502
+			     }
503
+			     $getdspnmstres->closeCursor();
504
+
505
+			     if ($dispnamearr) {
506
+				 $descdspnmarr = array_reverse($dispnamearr);
507
+				 $authorDisplayNm = $descdspnmarr[0];
508
+				 $internalSender = 1;
509
+			     } else { $authorDisplayNm = ''; $internalSender = 0; }
510
+
511
+
512
+			     if (!$authorDisplayNm) {
513
+
514
+				 // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table
515
+				 $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
516
+				 $getdspnmres = $getdspnm->execute([$rcvalue]);
517
+
518
+				 $dspnmearr = [];
519
+				 while ($dspnmfetched = $getdspnmres->fetch()) {
520
+				        if ($dspnmfetched['author_displayname']) {
521
+				            $dspnmearr[] = $dspnmfetched['author_displayname'];
522
+				        }
523
+				 }
524
+				 $getdspnmres->closeCursor();
525
+
526
+				 if ($dspnmearr) {
527
+				     $descdisplaynmarr = array_reverse($dspnmearr);
528
+				     $authorDisplayNm = $descdisplaynmarr[0];
529
+				     $internalSender = 0;
530
+				 } else { $authorDisplayNm = ''; $internalSender = 0; }
531
+			     }
532
+
533
+                             $pdpkeyprc = '%' . $rcvalue;
534
+			     $updaterecms = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_received` SET `author_displayname` = ?, `internal_sender` = ?
535
+                                                                        WHERE `from` LIKE ? AND `id` = ?');
536
+			     $updaterecmsres = $updaterecms->execute([$authorDisplayNm, $internalSender, $pdpkeyprc, $idsrc[$rckey]]);
537
+			     $updaterecmsres->closeCursor();
538
+                    }
539
+                }
540
+
541
+                return null;
542
+        }
543
+
544
+}
0 545
new file mode 100644
... ...
@@ -0,0 +1,3614 @@
1
+<?php
2
+/**
3
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
4
+ *
5
+ * @author Double Bastion LLC
6
+ *
7
+ * @license GNU AGPL version 3 or any later version
8
+ *
9
+ * This program is free software; you can redistribute it and/or
10
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
11
+ * License as published by the Free Software Foundation; either
12
+ * version 3 of the License, or any later version.
13
+ *
14
+ * This program is distributed in the hope that it will be useful,
15
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public
20
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
+ *
22
+ */
23
+
24
+declare(strict_types=1);
25
+
26
+namespace OCA\SMSRelentless\Service;
27
+
28
+use OCP\IDBConnection;
29
+use OCP\Security\ICrypto;
30
+use OCP\AppFramework\ApiController;
31
+use OCP\AppFramework\Controller;
32
+use OCP\IRequest;
33
+use OCP\IGroupManager;
34
+
35
+
36
+class SmsrelentlessService {
37
+
38
+     private $connection;
39
+     private $crypto;
40
+     private $groupManager;
41
+
42
+     public function __construct(IDBConnection $connection, ICrypto $crypto, IGroupManager $groupManager) {
43
+
44
+                $this->connection = $connection;
45
+                $this->crypto = $crypto;
46
+                $this->groupManager = $groupManager;
47
+     }
48
+
49
+
50
+     /**
51
+      * @NoAdminRequired
52
+      *
53
+      */
54
+     public function insertrecsms($userId, $recmessagearr) {
55
+
56
+            $authorDisplayNm = '';
57
+            $internalSender = 0;
58
+
59
+            // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table
60
+            $recmsgfromprc = '%' . $recmessagearr[2];
61
+            $getdspnmst = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ?');
62
+            $getdspnmstres = $getdspnmst->execute([$recmsgfromprc]);
63
+
64
+            $dispnamearr = [];
65
+            while ($dspnmstfetched = $getdspnmstres->fetch()) {
66
+                   $dispnamearr[] = $dspnmstfetched['author_displayname'];
67
+            }
68
+	    $getdspnmstres->closeCursor();
69
+
70
+            if ($dispnamearr) {
71
+                $descdspnmarr = array_reverse($dispnamearr);
72
+                $authorDisplayNm = $descdspnmarr[0];
73
+                $internalSender = 1;
74
+            } else { $authorDisplayNm = ''; $internalSender = 0; }
75
+
76
+
77
+            if (!$authorDisplayNm) {
78
+
79
+                // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table
80
+                $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
81
+                $getdspnmres = $getdspnm->execute([$recmessagearr[2]]);
82
+
83
+                $dspnmearr = [];
84
+                while ($dspnmfetched = $getdspnmres->fetch()) {
85
+                       if ($dspnmfetched['author_displayname']) {
86
+                           $dspnmearr[] = $dspnmfetched['author_displayname'];
87
+                       }
88
+                }
89
+	        $getdspnmres->closeCursor();
90
+
91
+                if ($dspnmearr) {
92
+                    $descdisplaynmarr = array_reverse($dspnmearr);
93
+                    $authorDisplayNm = $descdisplaynmarr[0];
94
+                    $internalSender = 0;
95
+                } else { $authorDisplayNm = ''; $internalSender = 0; }
96
+            }
97
+
98
+            // Insert the received message in the 'sms_relent_received' table
99
+            $escapedmessagepre = $recmessagearr[4];
100
+            $escapedmessage = nl2br($escapedmessagepre);
101
+
102
+            $sql = $this->connection->prepare('
103
+				INSERT INTO `*PREFIX*sms_relent_received`
104
+					(`user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`)
105
+				VALUES (?, ?, ?, ?, ?, ?, ?, ?)
106
+			');
107
+	    $sql->execute([$userId, $recmessagearr[0], $recmessagearr[1], $recmessagearr[2], $recmessagearr[3], $escapedmessage, $authorDisplayNm, $internalSender]);
108
+     }
109
+
110
+
111
+     /**
112
+      * @NoAdminRequired
113
+      *
114
+      */
115
+     public function insertsentsms($userId, $sentmessagearr) {
116
+
117
+            $authorDisplayName = '';
118
+            $msgsentfrompre = explode("+", $sentmessagearr[2]);
119
+            $msgsentfrom = "+" . $msgsentfrompre[1];
120
+
121
+            // Search for the sender's Display Name
122
+            $getacdatadnst = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
123
+            $getacdatadnstres = $getacdatadnst->execute([$userId, 'displayname']);
124
+	    $acusrdnstfetched = $getacdatadnstres->fetch();
125
+            $getacdatadnstres->closeCursor();
126
+
127
+            if ($acusrdnstfetched) {
128
+	        $authorDisplayName = $acusrdnstfetched['value'];
129
+	    }
130
+
131
+            $textwithnl = nl2br($sentmessagearr[8]);
132
+            $sql = $this->connection->prepare('
133
+				INSERT INTO `*PREFIX*sms_relent_sent`
134
+					(`user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`)
135
+				VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
136
+			');
137
+	    $sql->execute([$userId, $sentmessagearr[0], $sentmessagearr[1], $sentmessagearr[2], $sentmessagearr[3], $sentmessagearr[4], $sentmessagearr[5], $sentmessagearr[6], 
138
+                           $sentmessagearr[7], $textwithnl, $authorDisplayName]);
139
+     }
140
+
141
+
142
+     /**
143
+      * @NoAdminRequired
144
+      *
145
+      */
146
+     public function updatedeliverystatustel($ncuserfortelnyxdel, $messageid, $network, $messageprice, $messagestatus, $deliverystatus) {
147
+
148
+	    $sqlupdateds = $this->connection->prepare('
149
+			UPDATE `*PREFIX*sms_relent_sent`
150
+			SET `price` = ?, `status` = ?, `deliveryreceipt` = ?, `network` = ?
151
+                        WHERE `message_id` = ? AND `user_id` = ? ');
152
+	    $updateRes = $sqlupdateds->execute([$messageprice, $messagestatus, $deliverystatus, $network, $messageid, $ncuserfortelnyxdel]);
153
+	    $updateRes->closeCursor();
154
+     }
155
+
156
+
157
+     /**
158
+      * @NoAdminRequired
159
+      *
160
+      */
161
+     public function updatedeliverystatusnex($ncuserforplivodel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
162
+
163
+	    $sqlupdatedspl = $this->connection->prepare('
164
+			UPDATE `*PREFIX*sms_relent_sent`
165
+			SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ?
166
+                        WHERE `message_id` = ? AND `user_id` = ? ');
167
+	    $updateResdspl = $sqlupdatedspl->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserforplivodel]);
168
+	    $updateResdspl->closeCursor();
169
+     }
170
+
171
+
172
+     /**
173
+      * @NoAdminRequired
174
+      *
175
+      */
176
+     public function updatedeliverystatustwil($ncuserfortwildel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
177
+
178
+	    $sqlupdatedstw = $this->connection->prepare('
179
+			UPDATE `*PREFIX*sms_relent_sent`
180
+			SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ?
181
+                        WHERE `message_id` = ? AND `user_id` = ? ');
182
+	    $updateResdstw = $sqlupdatedstw->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserfortwildel]);
183
+	    $updateResdstw->closeCursor();
184
+     }
185
+
186
+
187
+     /**
188
+      * @NoAdminRequired
189
+      *
190
+      */
191
+     public function updatedeliverystatusflow($ncuserforflowdel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
192
+
193
+	    $sqlupdatedsfl = $this->connection->prepare('
194
+			UPDATE `*PREFIX*sms_relent_sent`
195
+			SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ?
196
+                        WHERE `message_id` = ? AND `user_id` = ? ');
197
+	    $updateResdsfl = $sqlupdatedsfl->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserforflowdel]);
198
+	    $updateResdsfl->closeCursor();
199
+     }
200
+
201
+
202
+     /**
203
+      * @NoAdminRequired
204
+      */
205
+     public function getreceivedtable($userId) {
206
+
207
+        // Get the user's preferences from the settings
208
+        $getgamcheckrc = $this->connection->prepare('
209
+		       SELECT `user_id`, `show_all_messages`, `show_display_names`
210
+		       FROM  `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
211
+        $getgamcheckrcres = $getgamcheckrc->execute([$userId]);
212
+        $getcrgamsrcpref = $getgamcheckrcres->fetch();
213
+        $crgamsrcpref = $getcrgamsrcpref['show_all_messages'];
214
+        $crdnmsrcpref = $getcrgamsrcpref['show_display_names'];
215
+        $getgamcheckrcres->closeCursor();
216
+
217
+
218
+        // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see
219
+        if ($crgamsrcpref == 1 && $this->groupManager->isAdmin($userId)) {
220
+
221
+            // Get the users that belong to the 'admin' group
222
+            $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
223
+            $getadmnres = $getadmn->execute(['admin']);
224
+
225
+            $usersadminsd = [];
226
+            while ($getadmnusrs = $getadmnres->fetch()) {
227
+                   $usersadminsd[] = $getadmnusrs['uid'];
228
+            }
229
+            $getadmnres->closeCursor();
230
+
231
+            // Get the groups and users that were allowed access to the API keys
232
+            $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
233
+                                                  `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
234
+                                                   WHERE `user_id` = ?');
235
+            $getgrpsres = $getgrps->execute([$userId]);
236
+            $getgrpsusr = $getgrpsres->fetch();
237
+            $getgrpsres->closeCursor();
238
+
239
+            if ($getgrpsusr) {
240
+
241
+                if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
242
+                if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
243
+                if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
244
+                if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
245
+
246
+                $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers);
247
+                $allwdusersunq = array_filter(array_unique($allwdusersarr));
248
+
249
+                if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
250
+                if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
251
+                if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
252
+                if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
253
+
254
+                $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups);
255
+                $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr));
256
+
257
+            } else {
258
+                $allwdusersunq = [];
259
+                $allwdgroupsunq = [];
260
+            }
261
+
262
+            // Get the username for each Display Name of the allowed users
263
+            $allwdusersfnl = [];
264
+            foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
265
+
266
+                         $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
267
+		         $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]);
268
+		         $acdatausrname = $getacdatausrnmres->fetch();
269
+                         if ($acdatausrname) {
270
+                             $allwdusersfnl[] = $acdatausrname['uid'];
271
+                         }
272
+                         $getacdatausrnmres->closeCursor();
273
+            }
274
+
275
+            // Get the users from all the allowed groups
276
+            $allwdusersgrpmlt = [];
277
+            foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
278
+
279
+                         // Get all the users that belong to the current group
280
+                         $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
281
+		         $getusringroupres = $getusringroup->execute([$prgrpvalue]);
282
+
283
+		         while ($getusrname = $getusringroupres->fetch()) {
284
+
285
+	                        // Ensure the current user is not an admin
286
+                                if (!in_array($getusrname['uid'], $usersadminsd)) {
287
+                                     $allwdusersgrpmlt[] = $getusrname['uid'];
288
+                                }
289
+                         }
290
+		         $getusringroupres->closeCursor();
291
+            }
292
+            $allwdusersgrpfnl = array_unique($allwdusersgrpmlt);
293
+            
294
+            $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl);
295
+            $allusruniquest = array_unique($allusr);
296
+
297
+            if ($allusruniquest) {
298
+                array_unshift($allusruniquest, $userId);
299
+                $allusruniquerc = $allusruniquest;
300
+            } else { $allusruniquerc = [$userId]; }
301
+
302
+            $procardatarc = implode(',', array_fill(0, count($allusruniquerc), '?'));
303
+        }
304
+
305
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
306
+        if ($crgamsrcpref == 1 && $this->groupManager->isAdmin($userId)) {
307
+
308
+            if ($crdnmsrcpref == 1) {
309
+	        $getrectable = $this->connection->prepare('
310
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`
311
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` IN (' . $procardatarc . ')');
312
+	        $rcresult = $getrectable->execute($allusruniquerc);
313
+            } else {
314
+	        $getrectable = $this->connection->prepare('
315
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender`
316
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` IN (' . $procardatarc . ')');
317
+	        $rcresult = $getrectable->execute($allusruniquerc);
318
+            }
319
+
320
+        // If the user is an admin and he wants to see only his messages
321
+        } elseif ($crgamsrcpref == 0 && $this->groupManager->isAdmin($userId)) {
322
+
323
+            if ($crdnmsrcpref == 1) {
324
+	        $getrectable = $this->connection->prepare('
325
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`
326
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` = ?');
327
+	        $rcresult = $getrectable->execute([$userId]);
328
+            } else {
329
+	        $getrectable = $this->connection->prepare('
330
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender`
331
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` = ?');
332
+	        $rcresult = $getrectable->execute([$userId]);
333
+            }
334
+
335
+        // If the user is not an admin 
336
+        } elseif (!$this->groupManager->isAdmin($userId)) {
337
+
338
+	    // Get the Display Name of the current user
339
+	    $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
340
+	    $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
341
+	    $acdatausrdnadm = $getacdatadnres->fetch();
342
+	    $cruserdname = $acdatausrdnadm['value'];
343
+	    $getacdatadnres->closeCursor();
344
+
345
+            // Get the groups to which the current user belongs
346
+            $getusrgrp = $this->connection->prepare('
347
+	          SELECT `gid`, `uid`
348
+	          FROM  `*PREFIX*group_user`
349
+                  WHERE `uid` = ?');
350
+            $getusrgrpres = $getusrgrp->execute([$userId]);
351
+
352
+            $usergrps = [];
353
+            while ($fetchedgrps = $getusrgrpres->fetch()) {
354
+                   $usergrps[] = $fetchedgrps['gid'];
355
+            }
356
+            $getusrgrpres->closeCursor();
357
+
358
+            // Get the restrictions from the 'sms_relent_restrict' table
359
+            $getrestr = $this->connection->prepare('
360
+		       SELECT `phone_number`, `groups`, `users`
361
+		       FROM  `*PREFIX*sms_relent_restrict`');
362
+            $getrestrres = $getrestr->execute();
363
+
364
+            $restrdata = [];
365
+            while ($restrfetched = $getrestrres->fetch()) {
366
+                   $restrdata[] = $restrfetched;
367
+            }
368
+            $getrestrres->closeCursor();
369
+
370
+            // Get the phone numbers that the user is allowed/not allowed to use
371
+            if ($restrdata) {
372
+
373
+                $restrPhoneNmbrs = [];
374
+                $allowedPhoneNmbrs = [];
375
+                foreach ($restrdata as $rskey => $rsvalue) {
376
+
377
+                         $chck = 0;
378
+                         $restrgrparr = explode("|", $rsvalue['groups']);
379
+                         foreach ($restrgrparr as $rkey => $rvalue) {
380
+                                  if ($rvalue) {
381
+                                      if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
382
+                                  }
383
+                         }
384
+                         if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
385
+
386
+                         if ($chck == 0) { 
387
+                             $restrPhoneNmbrs[] = $rsvalue['phone_number']; 
388
+                         } else {
389
+                             $crphnmbr = explode(": ", $rsvalue['phone_number']);
390
+                             if ($crphnmbr[0] == 'Tx') {
391
+                                 $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1];
392
+                             } elseif ($crphnmbr[0] == 'Pl') {
393
+                                 $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1];
394
+                             } elseif ($crphnmbr[0] == 'Tw') {
395
+                                 $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1];
396
+                             } elseif ($crphnmbr[0] == 'Fl') {
397
+                                 $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1];
398
+                             }
399
+                         }
400
+                }
401
+
402
+                $procalwdphnmbrs = implode(',', array_fill(0, count($allowedPhoneNmbrs), '?'));
403
+                array_unshift($allowedPhoneNmbrs, $userId);
404
+                $procalwduid = $allowedPhoneNmbrs;
405
+
406
+                if ($crdnmsrcpref == 1) {
407
+	            $getrectable = $this->connection->prepare('
408
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`
409
+			FROM `*PREFIX*sms_relent_received`
410
+			WHERE (`user_id` = ? OR `to` IN (' . $procalwdphnmbrs . '))');
411
+	            $rcresult = $getrectable->execute($procalwduid);
412
+                } else {
413
+	            $getrectable = $this->connection->prepare('
414
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender`
415
+			FROM `*PREFIX*sms_relent_received`
416
+			WHERE (`user_id` = ? OR `to` IN (' . $procalwdphnmbrs . '))');
417
+	            $rcresult = $getrectable->execute($procalwduid);
418
+                }
419
+
420
+            } else {
421
+
422
+                if ($crdnmsrcpref == 1) {
423
+	            $getrectable = $this->connection->prepare('
424
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`
425
+			FROM `*PREFIX*sms_relent_received`
426
+			WHERE `user_id` = ?');
427
+	            $rcresult = $getrectable->execute([$userId]);
428
+                } else {
429
+	            $getrectable = $this->connection->prepare('
430
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender`
431
+			FROM `*PREFIX*sms_relent_received`
432
+			WHERE `user_id` = ?');
433
+	            $rcresult = $getrectable->execute([$userId]);
434
+                }
435
+            }
436
+        }
437
+
438
+        $recdatatable = [];
439
+        while ($rowfetched = $rcresult->fetch()) {
440
+               $recdatatable[] = $rowfetched;
441
+        }
442
+	$rcresult->closeCursor();
443
+
444
+        $recdatafromdb = $recdatatable;
445
+
446
+
447
+        if ($this->groupManager->isAdmin($userId)) {
448
+
449
+              $recdatafdb = ['datarows' => $recdatafromdb, 'showdispnm' => $crdnmsrcpref];
450
+              return $recdatafdb;
451
+
452
+        } else {
453
+
454
+            if ($restrdata) {
455
+
456
+                // Clean the 'not allowed' phone numbers from tags
457
+                $restrPhfin = [];
458
+                foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
459
+
460
+                    $restrpharr = explode(": ", $phvalue);
461
+                    $restrPhfin[] = $restrpharr[1];
462
+                }
463
+
464
+                // Assemble the array of message rows that excludes the rows for the 'not allowed' phone numbers
465
+                foreach ($recdatafromdb as $mdkey => $mdvalue) {
466
+
467
+                    if (str_contains($mdvalue['to'], "+")) {
468
+                        $fromnmbrarr = explode("+", $mdvalue['to']);
469
+                        if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
470
+                            unset($recdatafromdb[$mdkey]);
471
+                        }
472
+                    } else {
473
+                        $tonmbrarr = explode(": ", $mdvalue['to']);
474
+                        if (count($tonmbrarr) == 2) {
475
+                            $tonmbrtbcmprd = $tonmbrarr[1];
476
+                        } else {
477
+                            $tonmbrtbcmprd = $tonmbrarr[0];
478
+                        }
479
+                        if (in_array($tonmbrtbcmprd, $restrPhfin)) {
480
+                            unset($recdatafromdb[$mdkey]);
481
+                        }
482
+                    }
483
+                }
484
+
485
+                $recdatafdbproc = array_values($recdatafromdb);
486
+
487
+                $recdataproc = ['datarows' => $recdatafdbproc, 'showdispnm' => $crdnmsrcpref];
488
+                return $recdataproc;
489
+
490
+            } else {
491
+
492
+                $recdatafdb = ['datarows' => $recdatafromdb, 'showdispnm' => $crdnmsrcpref];
493
+                return $recdatafdb;
494
+            }
495
+        }
496
+     }
497
+
498
+
499
+     /**
500
+      * @NoAdminRequired
501
+      */
502
+     public function getreceivedtablefordel($userId) {
503
+
504
+        if ($this->groupManager->isAdmin($userId)) {
505
+
506
+            $getrecfordl = $this->connection->prepare('
507
+			SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`
508
+			FROM  `*PREFIX*sms_relent_received`
509
+			WHERE `user_id` = ?');
510
+	    $resultdl = $getrecfordl->execute([$userId]);
511
+
512
+            $recdatatable = [];
513
+            while ($rowfetched = $resultdl->fetch()) {
514
+                   $recdatatable[] = $rowfetched;
515
+            }
516
+            $resultdl->closeCursor();
517
+
518
+            $recdatafromdb = $recdatatable;
519
+
520
+            return $recdatafromdb;
521
+
522
+        } else { return "not permitted"; }
523
+     }
524
+
525
+
526
+     /**
527
+      * @NoAdminRequired
528
+      */
529
+     public function removerecrows($userId, $recmessagedbIDs) {
530
+
531
+        foreach ($recmessagedbIDs as $key => $rowtodel) {
532
+		 $query = $this->connection->prepare('
533
+		       DELETE FROM `*PREFIX*sms_relent_received`
534
+		       WHERE `id` = ?');
535
+		 $deleteResult = $query->execute([$rowtodel]);
536
+		 $deleteResult->closeCursor();
537
+        }
538
+
539
+	$sqlupdate = $this->connection->prepare('
540
+                  SET @resetrec = 0;
541
+		  UPDATE `*PREFIX*sms_relent_received`
542
+		  SET `id` = @resetrec := @resetrec + 1;
543
+                  ALTER TABLE `*PREFIX*sms_relent_received` auto_increment=1;');
544
+	$updateRes = $sqlupdate->execute();
545
+	$updateRes->closeCursor();
546
+     }
547
+
548
+
549
+     /**
550
+      * @NoAdminRequired
551
+      */
552
+     public function getsenttable($userId) {
553
+
554
+        // Get the user's preferences from the settings
555
+        $getgamcheck = $this->connection->prepare('
556
+		       SELECT `user_id`, `show_all_messages`, `show_display_names`
557
+		       FROM  `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
558
+        $getgamcheckres = $getgamcheck->execute([$userId]);
559
+        $getcrgamspref = $getgamcheckres->fetch();
560
+        $crgamspref = $getcrgamspref['show_all_messages'];
561
+        $crdnamespref = $getcrgamspref['show_display_names'];
562
+        $getgamcheckres->closeCursor();
563
+
564
+
565
+        // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see
566
+        if ($crgamspref == 1 && $this->groupManager->isAdmin($userId)) {
567
+
568
+            // Get the users that belong to the 'admin' group
569
+            $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
570
+            $getadmnres = $getadmn->execute(['admin']);
571
+
572
+            $usersadminsd = [];
573
+            while ($getadmnusrs = $getadmnres->fetch()) {
574
+                   $usersadminsd[] = $getadmnusrs['uid'];
575
+            }
576
+            $getadmnres->closeCursor();
577
+
578
+            // Get the groups and users that were allowed access to the API keys
579
+            $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
580
+                                                  `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
581
+                                                   WHERE `user_id` = ?');
582
+            $getgrpsres = $getgrps->execute([$userId]);
583
+            $getgrpsusr = $getgrpsres->fetch();
584
+            $getgrpsres->closeCursor();
585
+
586
+            if ($getgrpsusr) {
587
+
588
+                if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
589
+                if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
590
+                if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
591
+                if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
592
+
593
+                $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers);
594
+                $allwdusersunq = array_filter(array_unique($allwdusersarr));
595
+
596
+                if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
597
+                if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
598
+                if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
599
+                if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
600
+
601
+                $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups);
602
+                $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr));
603
+
604
+            } else {
605
+                $allwdusersunq = [];
606
+                $allwdgroupsunq = [];
607
+            }
608
+
609
+            // Get the username for each Display Name of the allowed users
610
+            $allwdusersfnl = [];
611
+            foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
612
+
613
+                         $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
614
+		         $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]);
615
+		         $acdatausrname = $getacdatausrnmres->fetch();
616
+                         if ($acdatausrname) {
617
+                             $allwdusersfnl[] = $acdatausrname['uid'];
618
+                         }
619
+                         $getacdatausrnmres->closeCursor();
620
+            }
621
+
622
+            // Get the users from all the allowed groups
623
+            $allwdusersgrpmlt = [];
624
+            foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
625
+
626
+                         // Get all the users that belong to the current group
627
+                         $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
628
+		         $getusringroupres = $getusringroup->execute([$prgrpvalue]);
629
+
630
+		         while ($getusrname = $getusringroupres->fetch()) {
631
+
632
+	                        // Ensure the current user is not an admin
633
+                                if (!in_array($getusrname['uid'], $usersadminsd)) {
634
+                                     $allwdusersgrpmlt[] = $getusrname['uid'];
635
+                                }
636
+                         }
637
+		         $getusringroupres->closeCursor();
638
+            }
639
+            $allwdusersgrpfnl = array_unique($allwdusersgrpmlt);
640
+            
641
+            $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl);
642
+            $allusruniquest = array_unique($allusr);
643
+
644
+            if ($allusruniquest) {
645
+                array_unshift($allusruniquest, $userId);
646
+                $allusrunique = $allusruniquest;
647
+            } else { $allusrunique = [$userId]; }
648
+
649
+            $procardata = implode(',', array_fill(0, count($allusrunique), '?'));
650
+        }
651
+
652
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
653
+        if ($crgamspref == 1 && $this->groupManager->isAdmin($userId)) {
654
+
655
+            if ($crdnamespref == 1) {
656
+                $getsenttbl = $this->connection->prepare('
657
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`
658
+		       FROM  `*PREFIX*sms_relent_sent` WHERE `user_id` IN (' . $procardata . ')');
659
+                $resultsent = $getsenttbl->execute($allusrunique);
660
+            } else {
661
+                $getsenttbl = $this->connection->prepare('
662
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`
663
+		       FROM  `*PREFIX*sms_relent_sent` WHERE `user_id` IN (' . $procardata . ')');
664
+                $resultsent = $getsenttbl->execute($allusrunique);
665
+            }
666
+
667
+        // If the user is an admin and he wants to see only his messages
668
+        } elseif ($crgamspref == 0 && $this->groupManager->isAdmin($userId)) {
669
+
670
+            if ($crdnamespref == 1) {
671
+                $getsenttbl = $this->connection->prepare('
672
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`
673
+		       FROM  `*PREFIX*sms_relent_sent` WHERE `user_id` = ?');
674
+                $resultsent = $getsenttbl->execute([$userId]);
675
+            } else {
676
+                $getsenttbl = $this->connection->prepare('
677
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`
678
+		       FROM  `*PREFIX*sms_relent_sent` WHERE `user_id` = ?');
679
+                $resultsent = $getsenttbl->execute([$userId]);
680
+            }
681
+
682
+        // If the user is not an admin 
683
+        } elseif (!$this->groupManager->isAdmin($userId)) {
684
+
685
+            if ($crdnamespref == 1) {
686
+                $getsenttbl = $this->connection->prepare('
687
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`
688
+		       FROM  `*PREFIX*sms_relent_sent`
689
+		       WHERE `user_id` = ?');
690
+                $resultsent = $getsenttbl->execute([$userId]);
691
+            } else {
692
+                $getsenttbl = $this->connection->prepare('
693
+		       SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`
694
+		       FROM  `*PREFIX*sms_relent_sent`
695
+		       WHERE `user_id` = ?');
696
+                $resultsent = $getsenttbl->execute([$userId]);
697
+            }
698
+        }
699
+
700
+        $sentdatatable = [];
701
+        while ($rowfetched = $resultsent->fetch()){
702
+               $sentdatatable[] = $rowfetched;
703
+        }
704
+        $resultsent->closeCursor();
705
+
706
+        $sentdatafromdb = $sentdatatable;
707
+
708
+
709
+        if ($this->groupManager->isAdmin($userId)) {
710
+
711
+            $sentdatafdb = ['datarows' => $sentdatafromdb, 'showdispnm' => $crdnamespref];
712
+            return $sentdatafdb;
713
+
714
+        } else {
715
+
716
+            // Get the restrictions from the 'sms_relent_restrict' table
717
+            $getrestr = $this->connection->prepare('
718
+		       SELECT `phone_number`, `groups`, `users`
719
+		       FROM  `*PREFIX*sms_relent_restrict`');
720
+            $getrestrres = $getrestr->execute();
721
+
722
+            $restrdata = [];
723
+            while ($restrfetched = $getrestrres->fetch()) {
724
+                   $restrdata[] = $restrfetched;
725
+            }
726
+            $getrestrres->closeCursor();
727
+
728
+            if ($restrdata) {
729
+
730
+                // Get the groups to which the current user belongs
731
+                $getusrgrp = $this->connection->prepare('
732
+		       SELECT `gid`, `uid`
733
+		       FROM  `*PREFIX*group_user`
734
+                       WHERE `uid` = ?');
735
+                $getusrgrpres = $getusrgrp->execute([$userId]);
736
+
737
+                $usergrps = [];
738
+                while ($fetchedgrps = $getusrgrpres->fetch()) {
739
+                       $usergrps[] = $fetchedgrps['gid'];
740
+                }
741
+                $getusrgrpres->closeCursor();
742
+
743
+		// Get the Display Name of the current user
744
+		$getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
745
+		$getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
746
+		$acdatausrdnadm = $getacdatadnres->fetch();
747
+		$cruserdname = $acdatausrdnadm['value'];
748
+		$getacdatadnres->closeCursor();
749
+
750
+                // Get the phone numbers that are not allowed for the current user
751
+                $restrPhoneNmbrs = [];
752
+                foreach ($restrdata as $rskey => $rsvalue) {
753
+
754
+                         $chck = 0;
755
+                         $restrgrparr = explode("|", $rsvalue['groups']);
756
+                         foreach ($restrgrparr as $rkey => $rvalue) {
757
+                                  if ($rvalue) {
758
+                                      if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
759
+                                  }
760
+                         }
761
+                         if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
762
+
763
+                         if ($chck == 0) { $restrPhoneNmbrs[] = $rsvalue['phone_number']; }
764
+                }
765
+
766
+                // Clean the phone numbers from tags
767
+                $restrPhfin = [];
768
+                foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
769
+
770
+                    $restrpharr = explode(": ", $phvalue);
771
+                    $restrPhfin[] = $restrpharr[1];
772
+                }
773
+
774
+                // Assemble the array of message rows that excludes the rows for the restricted phone numbers
775
+                foreach ($sentdatafromdb as $smdkey => $smdvalue) {
776
+
777
+                    if (str_contains($smdvalue['from'], "+")) {
778
+                        $fromnmbrarr = explode("+", $smdvalue['from']);
779
+                        if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
780
+                            unset($sentdatafromdb[$smdkey]);
781
+                        }
782
+                    } else {
783
+                        $frmnmbrarr = explode(": ", $smdvalue['from']);
784
+                        if (count($frmnmbrarr) == 2) {
785
+                            $nmbtbcmprd = $frmnmbrarr[1];
786
+                        } else { 
787
+                            $nmbtbcmprd = $frmnmbrarr[0];
788
+                        }
789
+
790
+                        if (in_array($nmbtbcmprd, $restrPhfin)) {
791
+                            unset($sentdatafromdb[$smdkey]);
792
+                        }
793
+                    }
794
+                }
795
+
796
+                $sentdatadbproc = array_values($sentdatafromdb);
797
+
798
+                $sentdatafdb = ['datarows' => $sentdatadbproc, 'showdispnm' => $crdnamespref];
799
+                return $sentdatafdb;
800
+
801
+            } else {
802
+
803
+                $sentdatafdb = ['datarows' => $sentdatafromdb, 'showdispnm' => $crdnamespref];
804
+                return $sentdatafdb;
805
+            }
806
+        }
807
+     }
808
+
809
+
810
+     /**
811
+      * @NoAdminRequired
812
+      */
813
+     public function getsenttablefordel($userId) {
814
+
815
+        if ($this->groupManager->isAdmin($userId)) {
816
+
817
+            $getsenttbldel = $this->connection->prepare('
818
+		          SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`
819
+		          FROM  `*PREFIX*sms_relent_sent`
820
+		          WHERE `user_id` = ?');
821
+            $resultsentdl = $getsenttbldel->execute([$userId]);
822
+
823
+            $sentdatatable = [];
824
+            while ($rowfetched = $resultsentdl->fetch()){
825
+                   $sentdatatable[] = $rowfetched;
826
+            }
827
+            $resultsentdl->closeCursor();
828
+
829
+            $sentdatafromdb = $sentdatatable;
830
+
831
+            return $sentdatafromdb;
832
+
833
+        } else { return "not permitted"; }
834
+     }
835
+
836
+
837
+     /**
838
+      * @NoAdminRequired
839
+      */
840
+     public function removesentrows($userId, $sentmessagedbIDs) {
841
+
842
+        foreach ($sentmessagedbIDs as $key => $sentrowtodel) {
843
+		 $query = $this->connection->prepare('
844
+		       DELETE FROM `*PREFIX*sms_relent_sent`
845
+		       WHERE `id` = ?');
846
+		 $deleteResult = $query->execute([$sentrowtodel]);
847
+		 $deleteResult->closeCursor();
848
+        }
849
+
850
+	$sqlupdate = $this->connection->prepare('
851
+                  SET @resetsent = 0;
852
+		  UPDATE `*PREFIX*sms_relent_sent`
853
+		  SET `id` = @resetsent := @resetsent + 1;
854
+                  ALTER TABLE `*PREFIX*sms_relent_sent` auto_increment=1;');
855
+	$updateRes = $sqlupdate->execute();
856
+	$updateRes->closeCursor();
857
+     }
858
+
859
+
860
+     /**
861
+      * @NoAdminRequired
862
+      */
863
+     public function getgroupedtable($userId) {
864
+
865
+
866
+        // Get the user's preferences from the settings
867
+        $getpref = $this->connection->prepare('
868
+		       SELECT `user_id`, `show_all_messages`
869
+		       FROM  `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
870
+        $getprefres = $getpref->execute([$userId]);
871
+        $getprefresdata = $getprefres->fetch();
872
+        $crsampref = $getprefresdata['show_all_messages'];
873
+        $getprefres->closeCursor();
874
+
875
+
876
+        // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see
877
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
878
+
879
+            // Get the users that belong to the 'admin' group
880
+            $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
881
+            $getadmnres = $getadmn->execute(['admin']);
882
+
883
+            $usersadminsd = [];
884
+            while ($getadmnusrs = $getadmnres->fetch()) {
885
+                   $usersadminsd[] = $getadmnusrs['uid'];
886
+            }
887
+            $getadmnres->closeCursor();
888
+
889
+            // Get the groups and users that were allowed access to the API keys
890
+            $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
891
+                                                  `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
892
+                                                   WHERE `user_id` = ?');
893
+            $getgrpsres = $getgrps->execute([$userId]);
894
+            $getgrpsusr = $getgrpsres->fetch();
895
+            $getgrpsres->closeCursor();
896
+
897
+            if ($getgrpsusr) {
898
+
899
+                if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
900
+                if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
901
+                if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
902
+                if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
903
+
904
+                $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers);
905
+                $allwdusersunq = array_filter(array_unique($allwdusersarr));
906
+
907
+                if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
908
+                if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
909
+                if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
910
+                if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
911
+
912
+                $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups);
913
+                $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr));
914
+
915
+            } else {
916
+                $allwdusersunq = [];
917
+                $allwdgroupsunq = [];
918
+            }
919
+
920
+            // Get the username for each Display Name of the allowed users
921
+            $allwdusersfnl = [];
922
+            foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
923
+
924
+                         $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
925
+		         $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]);
926
+		         $acdatausrname = $getacdatausrnmres->fetch();
927
+                         if ($acdatausrname) {
928
+                             $allwdusersfnl[] = $acdatausrname['uid'];
929
+                         }
930
+                         $getacdatausrnmres->closeCursor();
931
+            }
932
+
933
+            // Get the users from all the allowed groups
934
+            $allwdusersgrpmlt = [];
935
+            foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
936
+
937
+                         // Get all the users that belong to the current group
938
+                         $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
939
+		         $getusringroupres = $getusringroup->execute([$prgrpvalue]);
940
+
941
+		         while ($getusrname = $getusringroupres->fetch()) {
942
+
943
+	                        // Ensure the current user is not an admin
944
+                                if (!in_array($getusrname['uid'], $usersadminsd)) {
945
+                                     $allwdusersgrpmlt[] = $getusrname['uid'];
946
+                                }
947
+                         }
948
+		         $getusringroupres->closeCursor();
949
+            }
950
+            $allwdusersgrpfnl = array_unique($allwdusersgrpmlt);
951
+            
952
+            $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl);
953
+            $allusruniquest = array_unique($allusr);
954
+
955
+            if ($allusruniquest) {
956
+                array_unshift($allusruniquest, $userId);
957
+                $allusruniquegr = $allusruniquest;
958
+            } else { $allusruniquegr = [$userId]; }
959
+
960
+            $procardatagr = implode(',', array_fill(0, count($allusruniquegr), '?'));
961
+        }
962
+
963
+        // Get received messages
964
+
965
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
966
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
967
+
968
+            $getrecmsgs = $this->connection->prepare('
969
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
970
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` IN (' . $procardatagr . ')');
971
+	    $getrecmsgsres = $getrecmsgs->execute($allusruniquegr);
972
+
973
+        // If the user is an admin and he wants to see only his messages
974
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
975
+
976
+            $getrecmsgs = $this->connection->prepare('
977
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
978
+			FROM `*PREFIX*sms_relent_received` WHERE `user_id` = ?');
979
+	    $getrecmsgsres = $getrecmsgs->execute([$userId]);
980
+
981
+        // If the user is not an admin 
982
+        } elseif (!$this->groupManager->isAdmin($userId)) {
983
+
984
+	    // Get the Display Name of the current user
985
+	    $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
986
+	    $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
987
+	    $acdatausrdnadm = $getacdatadnres->fetch();
988
+	    $cruserdname = $acdatausrdnadm['value'];
989
+	    $getacdatadnres->closeCursor();
990
+
991
+            // Get the groups to which the current user belongs
992
+            $getusrgrp = $this->connection->prepare('
993
+	          SELECT `gid`, `uid`
994
+	          FROM  `*PREFIX*group_user`
995
+                  WHERE `uid` = ?');
996
+            $getusrgrpres = $getusrgrp->execute([$userId]);
997
+
998
+            $usergrps = [];
999
+            while ($fetchedgrps = $getusrgrpres->fetch()) {
1000
+                   $usergrps[] = $fetchedgrps['gid'];
1001
+            }
1002
+            $getusrgrpres->closeCursor();
1003
+
1004
+            // Get the restrictions from the 'sms_relent_restrict' table
1005
+            $getrestr = $this->connection->prepare('
1006
+		       SELECT `phone_number`, `groups`, `users`
1007
+		       FROM  `*PREFIX*sms_relent_restrict`');
1008
+            $getrestrres = $getrestr->execute();
1009
+
1010
+            $restrdata = [];
1011
+            while ($restrfetched = $getrestrres->fetch()) {
1012
+                   $restrdata[] = $restrfetched;
1013
+            }
1014
+            $getrestrres->closeCursor();
1015
+
1016
+            // Get the phone numbers that the user is allowed/not allowed to use
1017
+            if ($restrdata) {
1018
+
1019
+                $restrPhoneNmbrs = [];
1020
+                $allowedPhoneNmbrs = [];
1021
+                foreach ($restrdata as $rskey => $rsvalue) {
1022
+
1023
+                         $chck = 0;
1024
+                         $restrgrparr = explode("|", $rsvalue['groups']);
1025
+                         foreach ($restrgrparr as $rkey => $rvalue) {
1026
+                                  if ($rvalue) {
1027
+                                      if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
1028
+                                  }
1029
+                         }
1030
+                         if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
1031
+
1032
+                         if ($chck == 0) { 
1033
+                             $restrPhoneNmbrs[] = $rsvalue['phone_number']; 
1034
+                         } else {
1035
+                             $crphnmbr = explode(": ", $rsvalue['phone_number']);
1036
+                             if ($crphnmbr[0] == 'Tx') {
1037
+                                 $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1];
1038
+                             } elseif ($crphnmbr[0] == 'Pl') {
1039
+                                 $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1];
1040
+                             } elseif ($crphnmbr[0] == 'Tw') {
1041
+                                 $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1];
1042
+                             } elseif ($crphnmbr[0] == 'Fl') {
1043
+                                 $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1];
1044
+                             }
1045
+                         }
1046
+                }
1047
+
1048
+                $procalwdphnmbrs = implode(',', array_fill(0, count($allowedPhoneNmbrs), '?'));
1049
+                array_unshift($allowedPhoneNmbrs, $userId);
1050
+                $procalwduid = $allowedPhoneNmbrs;
1051
+
1052
+
1053
+	        $getrectable = $this->connection->prepare('
1054
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1055
+			FROM `*PREFIX*sms_relent_received`
1056
+			WHERE (`user_id` = ? OR `to` IN (' . $procalwdphnmbrs . '))');
1057
+	        $getrecmsgsres = $getrectable->execute($procalwduid);
1058
+
1059
+            } else {
1060
+
1061
+	        $getrectable = $this->connection->prepare('
1062
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1063
+			FROM `*PREFIX*sms_relent_received`
1064
+			WHERE `user_id` = ?');
1065
+	        $getrecmsgsres = $getrectable->execute([$userId]);
1066
+            }
1067
+        }
1068
+
1069
+        $recmsgs = [];
1070
+        while ($rcrowsfetch = $getrecmsgsres->fetch()) {
1071
+               $rcrowsfetch['deliveryreceipt'] = '';
1072
+               $rcrowsfetch['table'] = 'received';
1073
+               $recmsgs[] = $rcrowsfetch;
1074
+        }
1075
+	$getrecmsgsres->closeCursor();
1076
+
1077
+
1078
+        // Get sent messages
1079
+
1080
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
1081
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1082
+
1083
+            $getsentmsgs = $this->connection->prepare('
1084
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1085
+		       FROM  `*PREFIX*sms_relent_sent` 
1086
+                       WHERE `user_id` IN (' . $procardatagr . ')');
1087
+            $getsentmsgsres = $getsentmsgs->execute($allusruniquegr);
1088
+
1089
+        // If the user is an admin and he wants to see only his messages
1090
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
1091
+
1092
+            $getsentmsgs = $this->connection->prepare('
1093
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1094
+		       FROM  `*PREFIX*sms_relent_sent`
1095
+		       WHERE `user_id` = ?');
1096
+            $getsentmsgsres = $getsentmsgs->execute([$userId]);
1097
+
1098
+        // If the user is not an admin 
1099
+        } elseif (!$this->groupManager->isAdmin($userId)) {
1100
+
1101
+            $getsentmsgs = $this->connection->prepare('
1102
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1103
+		       FROM  `*PREFIX*sms_relent_sent`
1104
+		       WHERE `user_id` = ?');
1105
+            $getsentmsgsres = $getsentmsgs->execute([$userId]);
1106
+        }
1107
+
1108
+        $sentmsgs = [];
1109
+        while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
1110
+               $rowfetchedsmsg['table'] = 'sent';
1111
+               $sentmsgs[] = $rowfetchedsmsg;
1112
+        }
1113
+        $getsentmsgsres->closeCursor();
1114
+
1115
+        $groupedfromdb = array_merge($recmsgs, $sentmsgs);
1116
+
1117
+        if ($this->groupManager->isAdmin($userId)) {
1118
+
1119
+            return $groupedfromdb;
1120
+
1121
+        } else {
1122
+
1123
+            if ($restrdata) {
1124
+
1125
+                // Clean the phone numbers from tags
1126
+                $restrPhfin = [];
1127
+                foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
1128
+
1129
+                    $restrpharr = explode(": ", $phvalue);
1130
+                    $restrPhfin[] = $restrpharr[1];
1131
+                }
1132
+
1133
+                // Assemble the array of message rows that excludes the rows for the restricted phone numbers
1134
+                foreach ($groupedfromdb as $gmdkey => $gmdvalue) {
1135
+
1136
+                         if ($gmdvalue['table'] == 'sent') {
1137
+
1138
+                             if (str_contains($gmdvalue['from'], "+")) {
1139
+                                 $fromnmbrarr = explode("+", $gmdvalue['from']);
1140
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1141
+                                     unset($groupedfromdb[$gmdkey]);
1142
+                                 }
1143
+                             } else {
1144
+                                 $frmnmbrarr = explode(": ", $gmdvalue['from']);
1145
+                                 if (count($frmnmbrarr) == 2) {
1146
+                                     $nmbtbcmprd = $frmnmbrarr[1];
1147
+                                 } else { 
1148
+                                     $nmbtbcmprd = $frmnmbrarr[0];
1149
+                                 }
1150
+                                 if (in_array($nmbtbcmprd, $restrPhfin)) {
1151
+                                     unset($groupedfromdb[$gmdkey]);
1152
+                                 }
1153
+                             }
1154
+
1155
+                         } elseif ($gmdvalue['table'] == 'received') {
1156
+
1157
+                             if (str_contains($gmdvalue['to'], "+")) {
1158
+                                 $fromnmbrarr = explode("+", $gmdvalue['to']);
1159
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1160
+                                     unset($groupedfromdb[$gmdkey]);
1161
+                                 }
1162
+                             } else {
1163
+                                 $tonmbrarr = explode(": ", $gmdvalue['to']);
1164
+                                 if (count($tonmbrarr) == 2) {
1165
+                                     $tonmbrtbcmprd = $tonmbrarr[1];
1166
+                                 } else {
1167
+                                     $tonmbrtbcmprd = $tonmbrarr[0];
1168
+                                 }
1169
+                                 if (in_array($tonmbrtbcmprd, $restrPhfin)) {
1170
+                                     unset($groupedfromdb[$gmdkey]);
1171
+                                 }
1172
+                             }
1173
+                         }
1174
+
1175
+                }
1176
+
1177
+                $groupedfdbproc = array_values($groupedfromdb);
1178
+
1179
+                return $groupedfdbproc;
1180
+
1181
+            } else { return $groupedfromdb; }
1182
+        }
1183
+     }
1184
+
1185
+
1186
+     /**
1187
+      * @NoAdminRequired
1188
+      */
1189
+     public function getgroupedpernumber($userId, $phoneNumber) {
1190
+
1191
+        $phoneNumberpr = "%" . $phoneNumber;
1192
+
1193
+        // Get the user's preferences from the settings
1194
+        $getpref = $this->connection->prepare('
1195
+		       SELECT `user_id`, `show_all_messages`
1196
+		       FROM  `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
1197
+        $getprefres = $getpref->execute([$userId]);
1198
+        $getprefresdata = $getprefres->fetch();
1199
+        $crsampref = $getprefresdata['show_all_messages'];
1200
+        $getprefres->closeCursor();
1201
+
1202
+
1203
+        // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see
1204
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1205
+
1206
+            // Get the users that belong to the 'admin' group
1207
+            $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
1208
+            $getadmnres = $getadmn->execute(['admin']);
1209
+
1210
+            $usersadminsd = [];
1211
+            while ($getadmnusrs = $getadmnres->fetch()) {
1212
+                   $usersadminsd[] = $getadmnusrs['uid'];
1213
+            }
1214
+            $getadmnres->closeCursor();
1215
+
1216
+            // Get the groups and users that were allowed access to the API keys
1217
+            $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
1218
+                                                  `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
1219
+                                                   WHERE `user_id` = ?');
1220
+            $getgrpsres = $getgrps->execute([$userId]);
1221
+            $getgrpsusr = $getgrpsres->fetch();
1222
+            $getgrpsres->closeCursor();
1223
+
1224
+            if ($getgrpsusr) {
1225
+
1226
+                if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
1227
+                if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
1228
+                if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
1229
+                if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
1230
+
1231
+                $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers);
1232
+                $allwdusersunq = array_filter(array_unique($allwdusersarr));
1233
+
1234
+                if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
1235
+                if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
1236
+                if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
1237
+                if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
1238
+
1239
+                $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups);
1240
+                $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr));
1241
+
1242
+            } else {
1243
+                $allwdusersunq = [];
1244
+                $allwdgroupsunq = [];
1245
+            }
1246
+
1247
+            // Get the username for each Display Name of the allowed users
1248
+            $allwdusersfnl = [];
1249
+            foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
1250
+
1251
+                         $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
1252
+		         $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]);
1253
+		         $acdatausrname = $getacdatausrnmres->fetch();
1254
+                         if ($acdatausrname) {
1255
+                             $allwdusersfnl[] = $acdatausrname['uid'];
1256
+                         }
1257
+                         $getacdatausrnmres->closeCursor();
1258
+            }
1259
+
1260
+            // Get the users from all the allowed groups
1261
+            $allwdusersgrpmlt = [];
1262
+            foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
1263
+
1264
+                         // Get all the users that belong to the current group
1265
+                         $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
1266
+		         $getusringroupres = $getusringroup->execute([$prgrpvalue]);
1267
+
1268
+		         while ($getusrname = $getusringroupres->fetch()) {
1269
+
1270
+	                        // Ensure the current user is not an admin
1271
+                                if (!in_array($getusrname['uid'], $usersadminsd)) {
1272
+                                     $allwdusersgrpmlt[] = $getusrname['uid'];
1273
+                                }
1274
+                         }
1275
+		         $getusringroupres->closeCursor();
1276
+            }
1277
+            $allwdusersgrpfnl = array_unique($allwdusersgrpmlt);
1278
+            
1279
+            $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl);
1280
+            $allusruniquest = array_unique($allusr);
1281
+
1282
+            if ($allusruniquest) {
1283
+                array_unshift($allusruniquest, $userId);
1284
+                $allusruniquepn = $allusruniquest;
1285
+            } else { $allusruniquepn = [$userId]; }
1286
+
1287
+            $allusruniquepnst = $allusruniquepn;
1288
+
1289
+            $procardatapn = implode(',', array_fill(0, count($allusruniquepn), '?'));
1290
+
1291
+            array_unshift($allusruniquepn, $phoneNumber, $phoneNumberpr);
1292
+            $allusruniquead = $allusruniquepn;
1293
+
1294
+            array_unshift($allusruniquepnst, $phoneNumberpr, $phoneNumber);
1295
+            $allusruniqueadst = $allusruniquepnst;
1296
+        }
1297
+
1298
+
1299
+        // Get received messages
1300
+
1301
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
1302
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1303
+
1304
+            $getrecmsgs = $this->connection->prepare('
1305
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1306
+			FROM `*PREFIX*sms_relent_received` 
1307
+                        WHERE (`from` = ? OR `to` LIKE ?) AND `user_id` IN (' . $procardatapn . ')');
1308
+	    $getrecmsgsres = $getrecmsgs->execute($allusruniquead);
1309
+
1310
+        // If the user is an admin and he wants to see only his messages
1311
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
1312
+
1313
+            $getrecmsgs = $this->connection->prepare('
1314
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1315
+			FROM `*PREFIX*sms_relent_received` 
1316
+                        WHERE `user_id` = ? AND (`from` = ? OR `to` LIKE ?)');
1317
+	    $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNumber, $phoneNumberpr]);
1318
+
1319
+        // If the user is not an admin 
1320
+        } elseif (!$this->groupManager->isAdmin($userId)) {
1321
+
1322
+	    // Get the Display Name of the current user
1323
+	    $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
1324
+	    $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
1325
+	    $acdatausrdnadm = $getacdatadnres->fetch();
1326
+	    $cruserdname = $acdatausrdnadm['value'];
1327
+	    $getacdatadnres->closeCursor();
1328
+
1329
+            // Get the groups to which the current user belongs
1330
+            $getusrgrp = $this->connection->prepare('
1331
+	          SELECT `gid`, `uid`
1332
+	          FROM  `*PREFIX*group_user`
1333
+                  WHERE `uid` = ?');
1334
+            $getusrgrpres = $getusrgrp->execute([$userId]);
1335
+
1336
+            $usergrps = [];
1337
+            while ($fetchedgrps = $getusrgrpres->fetch()) {
1338
+                   $usergrps[] = $fetchedgrps['gid'];
1339
+            }
1340
+            $getusrgrpres->closeCursor();
1341
+
1342
+            // Get the restrictions from the 'sms_relent_restrict' table
1343
+            $getrestr = $this->connection->prepare('
1344
+		       SELECT `phone_number`, `groups`, `users`
1345
+		       FROM  `*PREFIX*sms_relent_restrict`');
1346
+            $getrestrres = $getrestr->execute();
1347
+
1348
+            $restrdata = [];
1349
+            while ($restrfetched = $getrestrres->fetch()) {
1350
+                   $restrdata[] = $restrfetched;
1351
+            }
1352
+            $getrestrres->closeCursor();
1353
+
1354
+            // Get the phone numbers that the user is allowed/not allowed to use
1355
+            if ($restrdata) {
1356
+
1357
+                $restrPhoneNmbrs = [];
1358
+                $allowedPhoneNmbrs = [];
1359
+                foreach ($restrdata as $rskey => $rsvalue) {
1360
+
1361
+                         $chck = 0;
1362
+                         $restrgrparr = explode("|", $rsvalue['groups']);
1363
+                         foreach ($restrgrparr as $rkey => $rvalue) {
1364
+                                  if ($rvalue) {
1365
+                                      if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
1366
+                                  }
1367
+                         }
1368
+                         if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
1369
+
1370
+                         if ($chck == 0) { 
1371
+                             $restrPhoneNmbrs[] = $rsvalue['phone_number']; 
1372
+                         } else {
1373
+                             $crphnmbr = explode(": ", $rsvalue['phone_number']);
1374
+                             if ($crphnmbr[0] == 'Tx') {
1375
+                                 $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1];
1376
+                             } elseif ($crphnmbr[0] == 'Pl') {
1377
+                                 $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1];
1378
+                             } elseif ($crphnmbr[0] == 'Tw') {
1379
+                                 $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1];
1380
+                             } elseif ($crphnmbr[0] == 'Fl') {
1381
+                                 $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1];
1382
+                             }
1383
+                         }
1384
+                }
1385
+
1386
+                $procalwdphnmbrs = implode(',', array_fill(0, count($allowedPhoneNmbrs), '?'));
1387
+                array_unshift($allowedPhoneNmbrs, $userId);
1388
+                array_push($allowedPhoneNmbrs, $phoneNumber, $phoneNumberpr);
1389
+                $procalwduid = $allowedPhoneNmbrs;
1390
+
1391
+	        $getrecmsgs = $this->connection->prepare('
1392
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1393
+			FROM `*PREFIX*sms_relent_received`
1394
+			WHERE (`user_id` = ? OR `to` IN (' . $procalwdphnmbrs . ')) AND (`from` = ? OR `to` LIKE ?)');
1395
+	        $getrecmsgsres = $getrecmsgs->execute($procalwduid);
1396
+
1397
+            } else {
1398
+
1399
+                $getrecmsgs = $this->connection->prepare('
1400
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1401
+			FROM `*PREFIX*sms_relent_received`
1402
+			WHERE `user_id` = ? AND (`from` = ? OR `to` LIKE ?)');
1403
+	        $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNumber, $phoneNumberpr]);
1404
+            }
1405
+        }
1406
+
1407
+
1408
+        $recmsgs = [];
1409
+        while ($rcrowsfetch = $getrecmsgsres->fetch()) {
1410
+               $rcrowsfetch['deliveryreceipt'] = '';
1411
+               $rcrowsfetch['table'] = 'received';
1412
+               $recmsgs[] = $rcrowsfetch;
1413
+        }
1414
+	$getrecmsgsres->closeCursor();
1415
+
1416
+
1417
+        // Get sent messages
1418
+
1419
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
1420
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1421
+
1422
+            $getsentmsgs = $this->connection->prepare('
1423
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1424
+		       FROM  `*PREFIX*sms_relent_sent` 
1425
+                       WHERE (`from` LIKE ? OR `to` = ?) AND `user_id` IN (' . $procardatapn . ')');
1426
+            $getsentmsgsres = $getsentmsgs->execute($allusruniqueadst);
1427
+
1428
+
1429
+        // If the user is an admin and he wants to see only his messages
1430
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
1431
+
1432
+            $getsentmsgs = $this->connection->prepare('
1433
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1434
+		       FROM  `*PREFIX*sms_relent_sent`
1435
+		       WHERE `user_id` = ? AND (`from` LIKE ? OR `to` = ?)');
1436
+            $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNumberpr, $phoneNumber]);
1437
+
1438
+        // If the user is not an admin 
1439
+        } elseif (!$this->groupManager->isAdmin($userId)) {
1440
+
1441
+            $getsentmsgs = $this->connection->prepare('
1442
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1443
+		       FROM  `*PREFIX*sms_relent_sent`
1444
+		       WHERE `user_id` = ? AND (`from` LIKE ? OR `to` = ?)');
1445
+            $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNumberpr, $phoneNumber]);
1446
+        }
1447
+
1448
+        $sentmsgs = [];
1449
+        while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
1450
+               $rowfetchedsmsg['table'] = 'sent';
1451
+               $sentmsgs[] = $rowfetchedsmsg;
1452
+        }
1453
+        $getsentmsgsres->closeCursor();
1454
+
1455
+        $groupedpernb = array_merge($recmsgs, $sentmsgs);
1456
+
1457
+        if ($this->groupManager->isAdmin($userId)) {
1458
+
1459
+            return $groupedpernb;
1460
+
1461
+        } else {
1462
+
1463
+            if ($restrdata) {
1464
+
1465
+                // Clean the phone numbers from tags
1466
+                $restrPhfin = [];
1467
+                foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
1468
+
1469
+                    $restrpharr = explode(": ", $phvalue);
1470
+                    $restrPhfin[] = $restrpharr[1];
1471
+                }
1472
+
1473
+                // Assemble the array of message rows that excludes the rows for the restricted phone numbers
1474
+                foreach ($groupedpernb as $gmdkey => $gmdvalue) {
1475
+
1476
+                         if ($gmdvalue['table'] == 'sent') {
1477
+
1478
+                             if (str_contains($gmdvalue['from'], "+")) {
1479
+                                 $fromnmbrarr = explode("+", $gmdvalue['from']);
1480
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1481
+                                     unset($groupedpernb[$gmdkey]);
1482
+                                 }
1483
+                             } else {
1484
+                                 $frmnmbrarr = explode(": ", $gmdvalue['from']);
1485
+                                 if (count($frmnmbrarr) == 2) {
1486
+                                     $nmbtbcmprd = $frmnmbrarr[1];
1487
+                                 } else { 
1488
+                                     $nmbtbcmprd = $frmnmbrarr[0];
1489
+                                 }
1490
+                                 if (in_array($nmbtbcmprd, $restrPhfin)) {
1491
+                                     unset($groupedpernb[$gmdkey]);
1492
+                                 }
1493
+                             }
1494
+
1495
+                         } elseif ($gmdvalue['table'] == 'received') {
1496
+
1497
+                             if (str_contains($gmdvalue['to'], "+")) {
1498
+                                 $fromnmbrarr = explode("+", $gmdvalue['to']);
1499
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1500
+                                     unset($groupedpernb[$gmdkey]);
1501
+                                 }
1502
+                             } else {
1503
+                                 $tonmbrarr = explode(": ", $gmdvalue['to']);
1504
+                                 if (count($tonmbrarr) == 2) {
1505
+                                     $tonmbrtbcmprd = $tonmbrarr[1];
1506
+                                 } else {
1507
+                                     $tonmbrtbcmprd = $tonmbrarr[0];
1508
+                                 }
1509
+                                 if (in_array($tonmbrtbcmprd, $restrPhfin)) {
1510
+                                     unset($groupedpernb[$gmdkey]);
1511
+                                 }
1512
+                             }
1513
+                         }
1514
+
1515
+                }
1516
+
1517
+                $groupedpernbprc = array_values($groupedpernb);
1518
+
1519
+                return $groupedpernbprc;
1520
+
1521
+            } else { return $groupedpernb; }
1522
+        }
1523
+     }
1524
+
1525
+
1526
+     /**
1527
+      * @NoAdminRequired
1528
+      */
1529
+     public function getgroupedforreply($userId, $phoneNmbrFrom, $phoneNmbrTo) {
1530
+
1531
+        $phoneNmbrFrompr = "%" . $phoneNmbrFrom;
1532
+        $phoneNmbrTopr = "%" . $phoneNmbrTo;
1533
+
1534
+        // Get the user's preferences from the settings
1535
+        $getpref = $this->connection->prepare('
1536
+		       SELECT `user_id`, `show_all_messages`
1537
+		       FROM  `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
1538
+        $getprefres = $getpref->execute([$userId]);
1539
+        $getprefresdata = $getprefres->fetch();
1540
+        $crsampref = $getprefresdata['show_all_messages'];
1541
+        $getprefres->closeCursor();
1542
+
1543
+
1544
+        // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see
1545
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1546
+
1547
+            // Get the users that belong to the 'admin' group
1548
+            $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
1549
+            $getadmnres = $getadmn->execute(['admin']);
1550
+
1551
+            $usersadminsd = [];
1552
+            while ($getadmnusrs = $getadmnres->fetch()) {
1553
+                   $usersadminsd[] = $getadmnusrs['uid'];
1554
+            }
1555
+            $getadmnres->closeCursor();
1556
+
1557
+            // Get the groups and users that were allowed access to the API keys
1558
+            $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
1559
+                                                  `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
1560
+                                                   WHERE `user_id` = ?');
1561
+            $getgrpsres = $getgrps->execute([$userId]);
1562
+            $getgrpsusr = $getgrpsres->fetch();
1563
+            $getgrpsres->closeCursor();
1564
+
1565
+            if ($getgrpsusr) {
1566
+
1567
+                if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
1568
+                if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
1569
+                if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
1570
+                if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
1571
+
1572
+                $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers);
1573
+                $allwdusersunq = array_filter(array_unique($allwdusersarr));
1574
+
1575
+                if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
1576
+                if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
1577
+                if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
1578
+                if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
1579
+
1580
+                $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups);
1581
+                $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr));
1582
+
1583
+            } else {
1584
+                $allwdusersunq = [];
1585
+                $allwdgroupsunq = [];
1586
+            }
1587
+
1588
+            // Get the username for each Display Name of the allowed users
1589
+            $allwdusersfnl = [];
1590
+            foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
1591
+
1592
+                         $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
1593
+		         $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]);
1594
+		         $acdatausrname = $getacdatausrnmres->fetch();
1595
+                         if ($acdatausrname) {
1596
+                             $allwdusersfnl[] = $acdatausrname['uid'];
1597
+                         }
1598
+                         $getacdatausrnmres->closeCursor();
1599
+            }
1600
+
1601
+            // Get the users from all the allowed groups
1602
+            $allwdusersgrpmlt = [];
1603
+            foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
1604
+
1605
+                         // Get all the users that belong to the current group
1606
+                         $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
1607
+		         $getusringroupres = $getusringroup->execute([$prgrpvalue]);
1608
+
1609
+		         while ($getusrname = $getusringroupres->fetch()) {
1610
+
1611
+	                        // Ensure the current user is not an admin
1612
+                                if (!in_array($getusrname['uid'], $usersadminsd)) {
1613
+                                     $allwdusersgrpmlt[] = $getusrname['uid'];
1614
+                                }
1615
+                         }
1616
+		         $getusringroupres->closeCursor();
1617
+            }
1618
+            $allwdusersgrpfnl = array_unique($allwdusersgrpmlt);
1619
+            
1620
+            $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl);
1621
+            $allusruniquest = array_unique($allusr);
1622
+
1623
+            if ($allusruniquest) {
1624
+                array_unshift($allusruniquest, $userId);
1625
+                $allusruniquerp = $allusruniquest;
1626
+            } else { $allusruniquerp = [$userId]; }
1627
+
1628
+            $allusruniquerpst = $allusruniquerp;
1629
+
1630
+            $procardatarp = implode(',', array_fill(0, count($allusruniquerp), '?'));
1631
+
1632
+            array_unshift($allusruniquerp, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr);
1633
+            $allusruniqueadrp = $allusruniquerp;
1634
+
1635
+            array_unshift($allusruniquerpst, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom);
1636
+            $allusruniqueadrpst = $allusruniquerpst;
1637
+        }
1638
+
1639
+
1640
+        // Get received messages
1641
+
1642
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
1643
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1644
+
1645
+            $getrecmsgs = $this->connection->prepare('
1646
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1647
+			FROM `*PREFIX*sms_relent_received` 
1648
+                        WHERE ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?)) AND `user_id` IN (' . $procardatarp . ')');
1649
+	    $getrecmsgsres = $getrecmsgs->execute($allusruniqueadrp);
1650
+
1651
+        // If the user is an admin and he wants to see only his messages
1652
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
1653
+
1654
+            $getrecmsgs = $this->connection->prepare('
1655
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1656
+			FROM  `*PREFIX*sms_relent_received`
1657
+			WHERE `user_id` = ? AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))');
1658
+	    $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr]);
1659
+
1660
+        // If the user is not an admin 
1661
+        } elseif (!$this->groupManager->isAdmin($userId)) {
1662
+
1663
+	    // Get the Display Name of the current user
1664
+	    $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
1665
+	    $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
1666
+	    $acdatausrdnadm = $getacdatadnres->fetch();
1667
+	    $cruserdname = $acdatausrdnadm['value'];
1668
+	    $getacdatadnres->closeCursor();
1669
+
1670
+            // Get the groups to which the current user belongs
1671
+            $getusrgrp = $this->connection->prepare('
1672
+	          SELECT `gid`, `uid`
1673
+	          FROM  `*PREFIX*group_user`
1674
+                  WHERE `uid` = ?');
1675
+            $getusrgrpres = $getusrgrp->execute([$userId]);
1676
+
1677
+            $usergrps = [];
1678
+            while ($fetchedgrps = $getusrgrpres->fetch()) {
1679
+                   $usergrps[] = $fetchedgrps['gid'];
1680
+            }
1681
+            $getusrgrpres->closeCursor();
1682
+
1683
+            // Get the restrictions from the 'sms_relent_restrict' table
1684
+            $getrestr = $this->connection->prepare('
1685
+		       SELECT `phone_number`, `groups`, `users`
1686
+		       FROM  `*PREFIX*sms_relent_restrict`');
1687
+            $getrestrres = $getrestr->execute();
1688
+
1689
+            $restrdata = [];
1690
+            while ($restrfetched = $getrestrres->fetch()) {
1691
+                   $restrdata[] = $restrfetched;
1692
+            }
1693
+            $getrestrres->closeCursor();
1694
+
1695
+            // Get the phone numbers that the user is allowed/not allowed to use
1696
+            if ($restrdata) {
1697
+
1698
+                $restrPhoneNmbrs = [];
1699
+                $allowedPhoneNmbrs = [];
1700
+                foreach ($restrdata as $rskey => $rsvalue) {
1701
+
1702
+                         $chck = 0;
1703
+                         $restrgrparr = explode("|", $rsvalue['groups']);
1704
+                         foreach ($restrgrparr as $rkey => $rvalue) {
1705
+                                  if ($rvalue) {
1706
+                                      if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
1707
+                                  }
1708
+                         }
1709
+                         if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
1710
+
1711
+                         if ($chck == 0) { 
1712
+                             $restrPhoneNmbrs[] = $rsvalue['phone_number']; 
1713
+                         } else {
1714
+                             $crphnmbr = explode(": ", $rsvalue['phone_number']);
1715
+                             if ($crphnmbr[0] == 'Tx') {
1716
+                                 $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1];
1717
+                             } elseif ($crphnmbr[0] == 'Pl') {
1718
+                                 $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1];
1719
+                             } elseif ($crphnmbr[0] == 'Tw') {
1720
+                                 $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1];
1721
+                             } elseif ($crphnmbr[0] == 'Fl') {
1722
+                                 $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1];
1723
+                             }
1724
+                         }
1725
+                }
1726
+
1727
+                $procalwdphnmbrs = implode(',', array_fill(0, count($allowedPhoneNmbrs), '?'));
1728
+                array_unshift($allowedPhoneNmbrs, $userId);
1729
+                array_push($allowedPhoneNmbrs, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr);
1730
+                $procalwduid = $allowedPhoneNmbrs;
1731
+
1732
+	        $getrecmsgs = $this->connection->prepare('
1733
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1734
+			FROM `*PREFIX*sms_relent_received`
1735
+			WHERE (`user_id` = ? OR `to` IN (' . $procalwdphnmbrs . ')) AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))');
1736
+	        $getrecmsgsres = $getrecmsgs->execute($procalwduid);
1737
+
1738
+            } else {
1739
+
1740
+                $getrecmsgs = $this->connection->prepare('
1741
+			SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname`
1742
+			FROM  `*PREFIX*sms_relent_received`
1743
+			WHERE `user_id` = ? AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))');
1744
+	        $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr]);
1745
+            }
1746
+        }
1747
+
1748
+        $recmsgs = [];
1749
+        while ($rcrowsfetch = $getrecmsgsres->fetch()) {
1750
+               $rcrowsfetch['deliveryreceipt'] = '';
1751
+               $rcrowsfetch['table'] = 'received';
1752
+               $recmsgs[] = $rcrowsfetch;
1753
+        }
1754
+	$getrecmsgsres->closeCursor();
1755
+
1756
+
1757
+        // Get sent messages
1758
+
1759
+        // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys
1760
+        if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
1761
+
1762
+            $getsentmsgs = $this->connection->prepare('
1763
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1764
+		       FROM  `*PREFIX*sms_relent_sent` 
1765
+                       WHERE ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?)) AND `user_id` IN (' . $procardatarp . ')');
1766
+            $getsentmsgsres = $getsentmsgs->execute($allusruniqueadrpst);
1767
+
1768
+        // If the user is an admin and he wants to see only his messages
1769
+        } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
1770
+
1771
+            $getsentmsgs = $this->connection->prepare('
1772
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1773
+		       FROM  `*PREFIX*sms_relent_sent`
1774
+		       WHERE `user_id` = ? AND ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?))');
1775
+            $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom]);
1776
+
1777
+        // If the user is not an admin 
1778
+        } elseif (!$this->groupManager->isAdmin($userId)) {
1779
+
1780
+            $getsentmsgs = $this->connection->prepare('
1781
+		       SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt`
1782
+		       FROM  `*PREFIX*sms_relent_sent`
1783
+		       WHERE `user_id` = ? AND ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?))');
1784
+            $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom]);
1785
+        }
1786
+
1787
+        $sentmsgs = [];
1788
+        while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
1789
+               $rowfetchedsmsg['table'] = 'sent';
1790
+               $sentmsgs[] = $rowfetchedsmsg;
1791
+        }
1792
+        $getsentmsgsres->closeCursor();
1793
+
1794
+        $groupedpernb = array_merge($recmsgs, $sentmsgs);
1795
+
1796
+        if ($this->groupManager->isAdmin($userId)) {
1797
+
1798
+            return $groupedpernb;
1799
+
1800
+        } else {
1801
+
1802
+            if ($restrdata) {
1803
+
1804
+                // Clean the phone numbers from tags
1805
+                $restrPhfin = [];
1806
+                foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
1807
+
1808
+                    $restrpharr = explode(": ", $phvalue);
1809
+                    $restrPhfin[] = $restrpharr[1];
1810
+                }
1811
+
1812
+                // Assemble the array of message rows that excludes the rows for the restricted phone numbers
1813
+                foreach ($groupedpernb as $gmdkey => $gmdvalue) {
1814
+
1815
+                         if ($gmdvalue['table'] == 'sent') {
1816
+
1817
+                             if (str_contains($gmdvalue['from'], "+")) {
1818
+                                 $fromnmbrarr = explode("+", $gmdvalue['from']);
1819
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1820
+                                     unset($groupedpernb[$gmdkey]);
1821
+                                 }
1822
+                             } else {
1823
+                                 $frmnmbrarr = explode(": ", $gmdvalue['from']);
1824
+                                 if (count($frmnmbrarr) == 2) {
1825
+                                     $nmbtbcmprd = $frmnmbrarr[1];
1826
+                                 } else { 
1827
+                                     $nmbtbcmprd = $frmnmbrarr[0];
1828
+                                 }
1829
+                                 if (in_array($nmbtbcmprd, $restrPhfin)) {
1830
+                                     unset($groupedpernb[$gmdkey]);
1831
+                                 }
1832
+                             }
1833
+
1834
+                         } elseif ($gmdvalue['table'] == 'received') {
1835
+
1836
+                             if (str_contains($gmdvalue['to'], "+")) {
1837
+                                 $fromnmbrarr = explode("+", $gmdvalue['to']);
1838
+                                 if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
1839
+                                     unset($groupedpernb[$gmdkey]);
1840
+                                 }
1841
+                             } else {
1842
+                                 $tonmbrarr = explode(": ", $gmdvalue['to']);
1843
+                                 if (count($tonmbrarr) == 2) {
1844
+                                     $tonmbrtbcmprd = $tonmbrarr[1];
1845
+                                 } else {
1846
+                                     $tonmbrtbcmprd = $tonmbrarr[0];
1847
+                                 }
1848
+                                 if (in_array($tonmbrtbcmprd, $restrPhfin)) {
1849
+                                     unset($groupedpernb[$gmdkey]);
1850
+                                 }
1851
+                             }
1852
+                         }
1853
+
1854
+                }
1855
+
1856
+                $groupedperconv = array_values($groupedpernb);
1857
+
1858
+                return $groupedperconv;
1859
+
1860
+            } else { return $groupedpernb; }
1861
+        }
1862
+     }
1863
+
1864
+
1865
+
1866
+     /**
1867
+      * @NoAdminRequired
1868
+      */
1869
+     public function savedisplayname($userId, $authorDisplayname, $from) {
1870
+
1871
+        if ($this->groupManager->isAdmin($userId)) {
1872
+
1873
+	    $updatedispnm = $this->connection->prepare('
1874
+			UPDATE `*PREFIX*sms_relent_received`
1875
+			SET `author_displayname` = ?
1876
+                        WHERE `from` = ?');
1877
+	    $updatedispnmres = $updatedispnm->execute([$authorDisplayname, $from]);
1878
+
1879
+            if ($updatedispnmres) {
1880
+                return $respupdname = "The new Display Name has been saved. If on the Settings page, the option 'Add the display name of the message author, before each message' is checked, when you refresh the page you will see the new Display Name before the messages.";
1881
+            } else {
1882
+                return $respupdname = "Error while trying to save the new Display Name to the database.";
1883
+            }
1884
+	    $updatedispnmres->closeCursor();
1885
+
1886
+        } else { return $respupdname = "Only admins can save Display Names for phone numbers that are not associated with Nextcloud users."; }
1887
+     }
1888
+
1889
+     /**
1890
+      * @NoAdminRequired
1891
+      */
1892
+     public function getmessagesperpage($userId) {
1893
+
1894
+        $sqlmpp = $this->connection->prepare('
1895
+	       SELECT `user_id`, `messagesperpage` 
1896
+               FROM `*PREFIX*sms_relent_settings`
1897
+               WHERE `user_id` = ?');
1898
+	$result = $sqlmpp->execute([$userId]);
1899
+        $mesppdata = $result->fetch();
1900
+        $result->closeCursor();
1901
+        if ($mesppdata) {
1902
+            $mesperpagedb = $mesppdata['messagesperpage'];
1903
+            return $mesperpagedb;
1904
+        }
1905
+     }
1906
+
1907
+
1908
+     /**
1909
+      * @NoAdminRequired
1910
+      */
1911
+     public function getsettings($userId) {
1912
+
1913
+        $getsettings = $this->connection->prepare('
1914
+                    SELECT `id`, `user_id`, `telapi_url_rec`, `telapi_url`, `nexapi_url_rec`, `nexapi_url`, `twilapi_url_rec`, `twilapi_url`, `flowapi_url_rec`, `flowapi_url`, 
1915
+                           `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`                           
1916
+		    FROM  `*PREFIX*sms_relent_settings`
1917
+		    WHERE `user_id` = ?');
1918
+        $resultsettings = $getsettings->execute([$userId]);
1919
+
1920
+        $settingsfromdb = $resultsettings->fetch();
1921
+
1922
+        $resultsettings->closeCursor();
1923
+
1924
+        if ($settingsfromdb) {
1925
+
1926
+            if ($this->groupManager->isAdmin($userId)) { $adminreguser = 'admin'; } else { $adminreguser = 'reguser'; }
1927
+            $settingsfromdb['adminornot'] = $adminreguser;
1928
+
1929
+            return $settingsfromdb;
1930
+        }
1931
+
1932
+     }
1933
+
1934
+
1935
+     public function updatenumberrestrictions($userId, $savedByDsplname, $phoneNumber, $groups, $users) {
1936
+
1937
+        if ($this->groupManager->isAdmin($userId)) {
1938
+
1939
+            $groupsproc = implode("|", $groups);
1940
+            $usersproc = implode("|", $users);
1941
+
1942
+            // Get the restrictions for the current number from the 'sms_relent_restrict' table
1943
+            $getrestr = $this->connection->prepare('SELECT `user_id`, `saved_by_dsplname`, `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict` WHERE
1944
+                                                   `phone_number` = ?');
1945
+            $getrestrresult = $getrestr->execute([$phoneNumber]);
1946
+            $crntrestr = $getrestrresult->fetch();
1947
+            $getrestrresult->closeCursor();
1948
+
1949
+            if ($getrestrresult && !$crntrestr) {
1950
+
1951
+	        $insertphrestr = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_restrict` (`user_id`, `saved_by_dsplname`, `phone_number`, `groups`, `users`) VALUES
1952
+                                                             (?, ?, ?, ?, ?)');
1953
+	        if ($insertphrestr->execute([$userId, $savedByDsplname, $phoneNumber, $groupsproc, $usersproc])) { $messagetosend = 'success'; } else { $messagetosend = 'failure'; }  
1954
+         
1955
+            } elseif ($getrestrresult && $crntrestr) {
1956
+
1957
+	        $updatephrestr = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_restrict` SET `user_id` = ?, `saved_by_dsplname` = ?, `groups` = ?, `users` = ? WHERE 
1958
+                                                            `phone_number` = ?');
1959
+	        if ($admupdatephonerestr = $updatephrestr->execute([$userId, $savedByDsplname, $groupsproc, $usersproc, $phoneNumber])) { 
1960
+                    $messagetosend = 'success';
1961
+                } else { 
1962
+                    $messagetosend = 'failure'; 
1963
+                }
1964
+
1965
+	        $admupdatephonerestr->closeCursor();
1966
+            }
1967
+            return $messagetosend;
1968
+        }
1969
+     }
1970
+
1971
+
1972
+     private function updateusercredentials($userId, $usersarr, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, $plivoapisecret, $plivosendernm, 
1973
+                                            $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret) {
1974
+
1975
+        $msgtosend = 'success';
1976
+
1977
+        foreach ($usersarr as $usrkey => $usrvalue) {
1978
+
1979
+            $getusrset = $this->connection->prepare('SELECT `user_id` FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
1980
+	    $getusrsetres = $getusrset->execute([$usrvalue]);
1981
+	    $getcrunmdata = $getusrsetres->fetch();
1982
+	    $getusrsetres->closeCursor();
1983
+
1984
+            if ($getcrunmdata) {
1985
+
1986
+                if ($provider == "tnx") {
1987
+
1988
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `telapi_key` = ?, `tel_pub_key` = ?, `messaging_profile_id` = ?,
1989
+                                                           `tel_sender_name` = ? WHERE `user_id` = ?');
1990
+                    if ($upusrsetres = $upusrset->execute([$telapiKey, $telpubKey, $telmsgprofid, $telsendername, $usrvalue])) {
1991
+                        $msgtosend = 'success';
1992
+                    } else { $msgtosend = 'failure'; }
1993
+                    $upusrsetres->closeCursor();
1994
+
1995
+                } elseif ($provider == "plv") {
1996
+
1997
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `nexapi_key` = ?, `nexapi_secret` = ?, `nex_sender_name` = ?
1998
+                                                            WHERE `user_id` = ?');
1999
+                    if ($upusrsetres = $upusrset->execute([$plivoapikey, $plivoapisecret, $plivosendernm, $usrvalue])) {
2000
+                        $msgtosend = 'success';
2001
+                    } else { $msgtosend = 'failure'; }
2002
+                    $upusrsetres->closeCursor();
2003
+
2004
+                } elseif ($provider == "twl") {
2005
+
2006
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `twilapi_key` = ?, `twilapi_secret` = ?, `twil_sender_name` = ?
2007
+                                                            WHERE `user_id` = ?');
2008
+                    if ($upusrsetres = $upusrset->execute([$twilapikey, $twilapisecret, $twilsendernm, $usrvalue])) {
2009
+                        $msgtosend = 'success';
2010
+                    } else { $msgtosend = 'failure'; }
2011
+                    $upusrsetres->closeCursor();
2012
+
2013
+                } elseif ($provider == "flr") {
2014
+
2015
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `flowapi_key` = ?, `flowapi_secret` = ? WHERE `user_id` = ?');
2016
+                    if ($upusrsetres = $upusrset->execute([$flowapikey, $flowapisecret, $usrvalue])) {
2017
+                        $msgtosend = 'success';
2018
+                    } else { $msgtosend = 'failure'; }
2019
+                    $upusrsetres->closeCursor();
2020
+                }
2021
+
2022
+            } else {
2023
+
2024
+                $emptfld = "";
2025
+
2026
+                if ($provider == "tnx") {
2027
+
2028
+                    $upusrset = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`,
2029
+                                                           `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, `twilapi_key`, `twilapi_secret`,
2030
+                                                           `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `tel_sender_name`) 
2031
+                                                            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
2032
+                    if ($upusrsetres = $upusrset->execute([$usrvalue, $telapiKey, $telpubKey, $emptfld, $emptfld, $telmsgprofid, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, 
2033
+                                                           $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $telsendername])) {
2034
+                        $msgtosend = 'success';
2035
+                    } else { $msgtosend = 'failure'; }
2036
+                    $upusrsetres->closeCursor();
2037
+
2038
+                } elseif ($provider == "plv") {
2039
+
2040
+                    $upusrset = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`,
2041
+                                                           `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, `twilapi_key`, `twilapi_secret`,
2042
+                                                           `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `nex_sender_name`)
2043
+                                                            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
2044
+                    if ($upusrsetres = $upusrset->execute([$usrvalue, $telapiKey, $telpubKey, $emptfld, $emptfld, $telmsgprofid, $plivoapikey, $plivoapisecret, $emptfld, $emptfld, 
2045
+                                                           $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $plivosendernm])) {
2046
+                        $msgtosend = 'success';
2047
+                    } else { $msgtosend = 'failure'; }
2048
+                    $upusrsetres->closeCursor();
2049
+
2050
+                } elseif ($provider == "twl") {
2051
+
2052
+                    $upusrset = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`,
2053
+                                                           `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, `twilapi_key`, `twilapi_secret`,
2054
+                                                           `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `twil_sender_name`)
2055
+                                                            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
2056
+                    if ($upusrsetres = $upusrset->execute([$usrvalue, $telapiKey, $telpubKey, $emptfld, $emptfld, $telmsgprofid, $plivoapikey, $plivoapisecret, $emptfld, $emptfld, 
2057
+                                                           $twilapikey, $twilapisecret, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $emptfld, $twilsendernm])) {
2058
+                        $msgtosend = 'success';
2059
+                    } else { $msgtosend = 'failure'; }
2060
+                    $upusrsetres->closeCursor();
2061
+
2062
+                } elseif ($provider == "flr") {
2063
+
2064
+                    $upusrset = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`,
2065
+                                                           `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, `twilapi_key`, `twilapi_secret`,
2066
+                                                           `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`)
2067
+                                                            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
2068
+                    if ($upusrsetres = $upusrset->execute([$usrvalue, $telapiKey, $telpubKey, $emptfld, $emptfld, $telmsgprofid, $plivoapikey, $plivoapisecret, $emptfld, $emptfld, 
2069
+                                                           $twilapikey, $twilapisecret, $emptfld, $emptfld, $flowapikey, $flowapisecret, $emptfld, $emptfld])) {
2070
+                        $msgtosend = 'success';
2071
+                    } else { $msgtosend = 'failure'; }
2072
+                    $upusrsetres->closeCursor();
2073
+                }
2074
+
2075
+            }                 
2076
+        }
2077
+
2078
+        return $msgtosend;
2079
+     }
2080
+
2081
+
2082
+     private function removeusercredentials($userId, $usersarr, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, $plivoapisecret, $plivosendernm, 
2083
+                                            $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret) {
2084
+
2085
+        $msgtosend = 'success';
2086
+
2087
+        foreach ($usersarr as $usrkey => $usrvalue) {
2088
+
2089
+                $emptyfld = "";
2090
+
2091
+                if ($provider == "tnx") {
2092
+
2093
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `telapi_key` = ?, `tel_pub_key` = ?, `messaging_profile_id` = ?,
2094
+                                                           `tel_sender_name` = ? WHERE `user_id` = ?');
2095
+                    if ($upusrsetres = $upusrset->execute([$emptyfld, $emptyfld, $emptyfld, $emptyfld, $usrvalue])) {
2096
+                        $msgtosend = 'success';
2097
+                    } else { $msgtosend = 'failure'; }
2098
+                    $upusrsetres->closeCursor();
2099
+
2100
+                } elseif ($provider == "plv") {
2101
+
2102
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `nexapi_key` = ?, `nexapi_secret` = ?, `nex_sender_name` = ?
2103
+                                                            WHERE `user_id` = ?');
2104
+                    if ($upusrsetres = $upusrset->execute([$emptyfld, $emptyfld, $emptyfld, $usrvalue])) {
2105
+                        $msgtosend = 'success';
2106
+                    } else { $msgtosend = 'failure'; }
2107
+                    $upusrsetres->closeCursor();
2108
+
2109
+                } elseif ($provider == "twl") {
2110
+
2111
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `twilapi_key` = ?, `twilapi_secret` = ?, `twil_sender_name` = ?
2112
+                                                            WHERE `user_id` = ?');
2113
+                    if ($upusrsetres = $upusrset->execute([$emptyfld, $emptyfld, $emptyfld, $usrvalue])) {
2114
+                        $msgtosend = 'success';
2115
+                    } else { $msgtosend = 'failure'; }
2116
+                    $upusrsetres->closeCursor();
2117
+
2118
+                } elseif ($provider == "flr") {
2119
+
2120
+                    $upusrset = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `flowapi_key` = ?, `flowapi_secret` = ? WHERE `user_id` = ?');
2121
+                    if ($upusrsetres = $upusrset->execute([$emptyfld, $emptyfld, $usrvalue])) {
2122
+                        $msgtosend = 'success';
2123
+                    } else { $msgtosend = 'failure'; }
2124
+                    $upusrsetres->closeCursor();
2125
+                }
2126
+        }
2127
+
2128
+        return $msgtosend;
2129
+     }
2130
+
2131
+
2132
+     public function updatekeysallowedusers($userId, $groups, $users, $provider) {
2133
+
2134
+       if ($this->groupManager->isAdmin($userId)) {
2135
+
2136
+          $msgtosend = 'success';
2137
+
2138
+          // Get the users that belong to the 'admin' group
2139
+          $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2140
+          $getadmnres = $getadmn->execute(['admin']);
2141
+
2142
+          $usersadmin = [];
2143
+          while ($getadmnusrs = $getadmnres->fetch()) {
2144
+                 $usersadmin[] = $getadmnusrs['uid'];
2145
+          }
2146
+          $getadmnres->closeCursor();
2147
+          
2148
+          // Get the API keys and alphanumeric sender IDs for the current admin, from the 'sms_relent_settings' table
2149
+          $getadmset = $this->connection->prepare('SELECT `user_id`, `telapi_key`, `tel_pub_key`, `messaging_profile_id`, `tel_sender_name`, `nexapi_key`, `nexapi_secret`,
2150
+                                                  `nex_sender_name`, `twilapi_key`, `twilapi_secret`, `twil_sender_name`, `flowapi_key`, `flowapi_secret` 
2151
+                                                   FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
2152
+	  $getadmsetres = $getadmset->execute([$userId]);
2153
+	  $getcradmdata = $getadmsetres->fetch();
2154
+          $telapiKey = $getcradmdata['telapi_key'];
2155
+          $telpubKey = $getcradmdata['tel_pub_key'];
2156
+          $telmsgprofid = $getcradmdata['messaging_profile_id'];
2157
+          $telsendername = $getcradmdata['tel_sender_name'];
2158
+          $plivoapikey = $getcradmdata['nexapi_key'];
2159
+          $plivoapisecret = $getcradmdata['nexapi_secret'];
2160
+          $plivosendernm = $getcradmdata['nex_sender_name'];
2161
+          $twilapikey = $getcradmdata['twilapi_key'];
2162
+          $twilapisecret = $getcradmdata['twilapi_secret'];
2163
+          $twilsendernm = $getcradmdata['twil_sender_name'];
2164
+          $flowapikey = $getcradmdata['flowapi_key'];
2165
+          $flowapisecret = $getcradmdata['flowapi_secret'];
2166
+	  $getadmsetres->closeCursor();
2167
+
2168
+          if ($getcradmdata) {
2169
+
2170
+            if ($provider == "tnx") {
2171
+
2172
+                $getalwd = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed` FROM `*PREFIX*sms_relent_subac`');
2173
+                $getalwdres = $getalwd->execute();
2174
+
2175
+                $upchck = 0;
2176
+                $seldataarr = [];
2177
+                $groupsPerProvider = '';
2178
+                $usersPerProvider = '';
2179
+                while ($crntrestr = $getalwdres->fetch()) {
2180
+                       if ($crntrestr['user_id'] != $userId) {
2181
+                           $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['tnx_groups_allowed'], 'usersallowed' => $crntrestr['tnx_users_allowed']];
2182
+                       } else {
2183
+                           $upchck++;
2184
+                           $groupsPerProvider = $crntrestr['tnx_groups_allowed'];
2185
+                           $usersPerProvider = $crntrestr['tnx_users_allowed'];
2186
+                       }
2187
+                }
2188
+                $getalwdres->closeCursor();
2189
+
2190
+
2191
+            } elseif ($provider == "plv") {
2192
+
2193
+                $getalwd = $this->connection->prepare('SELECT `user_id`, `plv_groups_allowed`, `plv_users_allowed` FROM `*PREFIX*sms_relent_subac`');
2194
+                $getalwdres = $getalwd->execute();
2195
+
2196
+                $upchck = 0;
2197
+                $seldataarr = [];
2198
+                $groupsPerProvider = '';
2199
+                $usersPerProvider = '';
2200
+                while ($crntrestr = $getalwdres->fetch()) {
2201
+                       if ($crntrestr['user_id'] != $userId) {
2202
+                           $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['plv_groups_allowed'], 'usersallowed' => $crntrestr['plv_users_allowed']];
2203
+                       } else {
2204
+                           $upchck++;
2205
+                           $groupsPerProvider = $crntrestr['plv_groups_allowed'];
2206
+                           $usersPerProvider = $crntrestr['plv_users_allowed'];
2207
+                       }
2208
+                }
2209
+                $getalwdres->closeCursor();
2210
+
2211
+            } elseif ($provider == "twl") {
2212
+
2213
+                $getalwd = $this->connection->prepare('SELECT `user_id`, `twl_groups_allowed`, `twl_users_allowed` FROM `*PREFIX*sms_relent_subac`');
2214
+                $getalwdres = $getalwd->execute();
2215
+
2216
+                $upchck = 0;
2217
+                $seldataarr = [];
2218
+                $groupsPerProvider = '';
2219
+                $usersPerProvider = '';
2220
+                while ($crntrestr = $getalwdres->fetch()) {
2221
+                       if ($crntrestr['user_id'] != $userId) {
2222
+                           $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['twl_groups_allowed'], 'usersallowed' => $crntrestr['twl_users_allowed']];
2223
+                       } else {
2224
+                           $upchck++;
2225
+                           $groupsPerProvider = $crntrestr['twl_groups_allowed'];
2226
+                           $usersPerProvider = $crntrestr['twl_users_allowed'];
2227
+                       }
2228
+                }
2229
+                $getalwdres->closeCursor();
2230
+
2231
+            } elseif ($provider == "flr") {
2232
+
2233
+                $getalwd = $this->connection->prepare('SELECT `user_id`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`');
2234
+                $getalwdres = $getalwd->execute();
2235
+
2236
+                $upchck = 0;
2237
+                $seldataarr = [];
2238
+                $groupsPerProvider = '';
2239
+                $usersPerProvider = '';
2240
+                while ($crntrestr = $getalwdres->fetch()) {
2241
+                       if ($crntrestr['user_id'] != $userId) {
2242
+                           $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['flr_groups_allowed'], 'usersallowed' => $crntrestr['flr_users_allowed']];
2243
+                       } else {
2244
+                           $upchck++;
2245
+                           $groupsPerProvider = $crntrestr['flr_groups_allowed'];
2246
+                           $usersPerProvider = $crntrestr['flr_users_allowed'];
2247
+                       }
2248
+                }
2249
+                $getalwdres->closeCursor();
2250
+
2251
+            }
2252
+
2253
+
2254
+            if ($seldataarr) {
2255
+
2256
+                // Check if any of the current users are among the already saved ones (for the same provider)
2257
+                $usrchck = 0;
2258
+                $usrmsgarr = [];
2259
+                foreach ($users as $ukey => $uvalue) {
2260
+                         if ($uvalue != '') {
2261
+                             for ($j = 0; $j < count($seldataarr); $j++) {
2262
+                                  if (str_contains($seldataarr[$j]['usersallowed'], $uvalue)) {
2263
+                                      $usrchck++;
2264
+                                      $usrmsgarr[] = "The admin " . $seldataarr[$j]['userid'] . " has already allowed the user " . $uvalue . " to access his API keys for this provider.";
2265
+                                  }
2266
+                             }
2267
+                         }
2268
+                }
2269
+
2270
+                // Check if any of the current groups are among the already saved ones (for the same provider)
2271
+                $grchck = 0;
2272
+                $grmsgarr = [];
2273
+                foreach ($groups as $gkey => $gvalue) {
2274
+                         if ($gvalue != '') {
2275
+                             for ($k = 0; $k < count($seldataarr); $k++) {
2276
+                                  if (str_contains($seldataarr[$k]['groupsallowed'], $gvalue)) {
2277
+                                      $grchck++;
2278
+                                      $grmsgarr[] = "The admin " . $seldataarr[$k]['userid'] . " has already allowed the group " . $gvalue . " to access his API keys for this provider.";
2279
+                                  }
2280
+                             }
2281
+                         }
2282
+                }
2283
+
2284
+                if ($usrchck == 0 && $grchck == 0) {
2285
+
2286
+
2287
+                    // Remove the previously saved API keys for each user in the specified groups, for the current provider
2288
+                    if ($groupsPerProvider != '') {
2289
+
2290
+                        $groupsPerProvarr = explode("|", $groupsPerProvider);
2291
+                        foreach ($groupsPerProvarr as $prgrkey => $prgrvalue) {
2292
+
2293
+                                 if ($prgrvalue != "admin" && $prgrvalue != '') {
2294
+
2295
+                                     // Get all the users that belong to the group
2296
+	                             $getusringrp = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2297
+			             $getusringrpres = $getusringrp->execute([$prgrvalue]);
2298
+
2299
+                                     $usersingroup = [];
2300
+			             while ($getusrnm = $getusringrpres->fetch()) {
2301
+                                            if ($getusrnm['uid'] != $userId) {
2302
+
2303
+		                                // Ensure the current user is not an admin
2304
+                                                if (!in_array($getusrnm['uid'], $usersadmin)) {
2305
+                                                     $usersingroup[] = $getusrnm['uid'];
2306
+                                                }
2307
+                                            }
2308
+                                     }
2309
+			             $getusringrpres->closeCursor();
2310
+
2311
+                                     if ($usersingroup) {
2312
+                                         $msgtosend = $this->removeusercredentials($userId, $usersingroup, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2313
+                                                                               $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2314
+                                     }
2315
+                                 }
2316
+
2317
+                        }
2318
+                    }
2319
+
2320
+
2321
+                    // Remove the previously saved API keys for each user, for the current provider
2322
+                    if ($usersPerProvider != '') {
2323
+
2324
+                        $usersPerProvarr = explode("|", $usersPerProvider);
2325
+                        if ($usersPerProvarr) {
2326
+
2327
+                            $ctusernamearrpr = [];
2328
+                            foreach ($usersPerProvarr as $usrKeypr => $usrValuepr) {
2329
+
2330
+		                 // Get the username for this Display Name
2331
+		                 $getacdataunmpr = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
2332
+		                 $getacdataunmprres = $getacdataunmpr->execute(['displayname', $usrValuepr]);
2333
+		                 $acdatausrnamepr = $getacdataunmprres->fetch();
2334
+                                 if ($acdatausrnamepr['uid'] != $userId) {
2335
+
2336
+		                     // Ensure the current user is not an admin
2337
+                                     if (!in_array($acdatausrnamepr['uid'], $usersadmin)) {
2338
+                                          $ctusernamearrpr[] = $acdatausrnamepr['uid'];
2339
+                                     }
2340
+
2341
+                                 }
2342
+		                 $getacdataunmprres->closeCursor();
2343
+                            }
2344
+
2345
+                            $msgtosend = $this->removeusercredentials($userId, $ctusernamearrpr, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey,
2346
+                                                                      $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2347
+                        }
2348
+                    }
2349
+
2350
+
2351
+                    // Insert the provider's API keys for the allowed users
2352
+                    if ($users) {
2353
+
2354
+                        $ctusernamearruid = [];
2355
+                        $ctusernamearr = [];
2356
+                        foreach ($users as $usrKey => $usrValue) {
2357
+                             if ($usrValue != '') {
2358
+		                 // Get the username for this Display Name
2359
+		                 $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
2360
+		                 $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]);
2361
+		                 $acdatausrname = $getacdataunmres->fetch();
2362
+                                 if ($acdatausrname['uid'] != $userId) {
2363
+
2364
+		                     // Ensure the current user is not an admin
2365
+                                     if (!in_array($acdatausrname['uid'], $usersadmin)) {
2366
+                                         $ctusernamearruid[] = $acdatausrname['uid'];
2367
+                                         $ctusernamearr[] = $usrValue;
2368
+                                     }
2369
+
2370
+                                 }
2371
+		                 $getacdataunmres->closeCursor();
2372
+                             }
2373
+                        }
2374
+
2375
+
2376
+                        // Insert/update the allowed users in the 'sms_relent_subac' table
2377
+                        $usersalwdrs = implode("|", $ctusernamearr);
2378
+
2379
+                        if ($upchck == 0) {
2380
+
2381
+		            if ($provider == "tnx") {
2382
+
2383
+	                        $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_users_allowed`) VALUES (?, ?)');
2384
+	                        if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2385
+                                $upchck++;
2386
+
2387
+		            } elseif ($provider == "plv") {
2388
+
2389
+	                        $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_users_allowed`) VALUES (?, ?)');
2390
+	                        if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2391
+                                $upchck++;
2392
+
2393
+		            } elseif ($provider == "twl") {
2394
+
2395
+	                        $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_users_allowed`) VALUES (?, ?)');
2396
+	                        if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2397
+                                $upchck++;
2398
+
2399
+		            } elseif ($provider == "flr") {
2400
+
2401
+	                        $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_users_allowed`) VALUES (?, ?)');
2402
+	                        if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2403
+                                $upchck++;
2404
+		            }
2405
+
2406
+                        } else {
2407
+
2408
+		            if ($provider == "tnx") {
2409
+
2410
+	                        $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_users_allowed` = ? WHERE `user_id` = ?');
2411
+	                        if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2412
+
2413
+		            } elseif ($provider == "plv") {
2414
+
2415
+	                        $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_users_allowed` = ? WHERE `user_id` = ?');
2416
+	                        if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2417
+
2418
+		            } elseif ($provider == "twl") {
2419
+
2420
+	                        $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_users_allowed` = ? WHERE `user_id` = ?');
2421
+	                        if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2422
+
2423
+		            } elseif ($provider == "flr") {
2424
+
2425
+	                        $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_users_allowed` = ? WHERE `user_id` = ?');
2426
+	                        if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2427
+		            }
2428
+                        }
2429
+
2430
+                        $datalwdres->closeCursor();
2431
+
2432
+
2433
+                        // Insert/update the credentials in the 'sms_relent_settings' table, for each allowed user
2434
+                        $msgtosend = $this->updateusercredentials($userId, $ctusernamearruid, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2435
+                                                                  $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2436
+                    }
2437
+
2438
+                    // Insert the provider's API keys for the allowed groups
2439
+                    if ($groups) {
2440
+
2441
+                        $allwdgrps = [];
2442
+                        foreach ($groups as $groupkey => $groupvalue) {
2443
+
2444
+                                 if ($groupvalue != "admin" && $groupvalue != '') {
2445
+
2446
+                                     $allwdgrps[] = $groupvalue;
2447
+
2448
+                                     // Get all the users that belong to the group
2449
+			             $getacdusr = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2450
+			             $getacdusrres = $getacdusr->execute([$groupvalue]);
2451
+
2452
+                                     $usersingrp = [];
2453
+			             while ($getacdusrnm = $getacdusrres->fetch()) {
2454
+                                            if ($getacdusrnm['uid'] != $userId) {
2455
+
2456
+		                                // Ensure the current user is not an admin
2457
+                                                if (!in_array($getacdusrnm['uid'], $usersadmin)) {
2458
+                                                     $usersingrp[] = $getacdusrnm['uid'];
2459
+                                                }
2460
+                                            }
2461
+                                     }
2462
+			             $getacdusrres->closeCursor();
2463
+
2464
+                                     // Insert the provider's API keys for each user of the allowed groups
2465
+                                     if ($usersingrp) {
2466
+                                         $msgtosend = $this->updateusercredentials($userId, $usersingrp, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2467
+                                                             $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2468
+                                     }
2469
+                                 }
2470
+
2471
+
2472
+		                // Insert/update the allowed groups in the 'sms_relent_subac' table
2473
+		                $groupsalwdrs = implode("|", $allwdgrps);
2474
+
2475
+		                if ($upchck == 0) {
2476
+
2477
+				    if ($provider == "tnx") {
2478
+
2479
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_groups_allowed`) VALUES (?, ?)');
2480
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2481
+                                        $upchck++;
2482
+
2483
+				    } elseif ($provider == "plv") {
2484
+
2485
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_groups_allowed`) VALUES (?, ?)');
2486
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2487
+                                        $upchck++;
2488
+
2489
+				    } elseif ($provider == "twl") {
2490
+
2491
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_groups_allowed`) VALUES (?, ?)');
2492
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2493
+                                        $upchck++;
2494
+
2495
+				    } elseif ($provider == "flr") {
2496
+
2497
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_groups_allowed`) VALUES (?, ?)');
2498
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2499
+                                        $upchck++;
2500
+				    }
2501
+
2502
+		                } else {
2503
+
2504
+				    if ($provider == "tnx") {
2505
+
2506
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ? WHERE `user_id` = ?');
2507
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2508
+
2509
+				    } elseif ($provider == "plv") {
2510
+
2511
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ? WHERE `user_id` = ?');
2512
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2513
+
2514
+				    } elseif ($provider == "twl") {
2515
+
2516
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ? WHERE `user_id` = ?');
2517
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2518
+
2519
+				    } elseif ($provider == "flr") {
2520
+
2521
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ? WHERE `user_id` = ?');
2522
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2523
+				    }
2524
+		                }
2525
+
2526
+		                $datalwdres->closeCursor();
2527
+                        }
2528
+
2529
+                    }
2530
+
2531
+                } else {
2532
+
2533
+                        if ($grmsgarr) {
2534
+                            $grppart = implode(" ", $grmsgarr) . " A group cannot be allowed access to 2 different sets of API keys for the same SMS provider.";
2535
+                        } else { $grppart = ''; }
2536
+
2537
+                        if ($usrmsgarr) {
2538
+                            $usrpart = implode(" ", $usrmsgarr) . " A user cannot be allowed access to 2 different sets of API keys for the same SMS provider.";
2539
+                        } else { $usrpart = ''; }
2540
+
2541
+                    $msgtosend = $grppart . $usrpart;
2542
+                }
2543
+
2544
+
2545
+            } else {
2546
+
2547
+                if ($upchck == 0) {
2548
+
2549
+                    // Insert the provider's API keys for the allowed users
2550
+                    if ($users) {
2551
+
2552
+                        $ctusernamearruid = [];
2553
+                        $ctusernamearr = [];
2554
+                        foreach ($users as $usrKey => $usrValue) {
2555
+                             if ($usrValue != '') {
2556
+		                 // Get the username for this Display Name
2557
+		                 $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
2558
+		                 $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]);
2559
+		                 $acdatausrname = $getacdataunmres->fetch();
2560
+                                 if ($acdatausrname['uid'] != $userId) {
2561
+
2562
+		                     // Ensure the current user is not an admin
2563
+                                     if (!in_array($acdatausrname['uid'], $usersadmin)) {
2564
+                                         $ctusernamearruid[] = $acdatausrname['uid'];
2565
+                                         $ctusernamearr[] = $usrValue;
2566
+                                     }
2567
+
2568
+                                 }
2569
+		                 $getacdataunmres->closeCursor();
2570
+                             }
2571
+                        }
2572
+
2573
+
2574
+                        // Insert the allowed users into the 'sms_relent_subac' table
2575
+                        $usersalwdrs = implode("|", $ctusernamearr);
2576
+
2577
+		        if ($provider == "tnx") {
2578
+
2579
+	                    $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_users_allowed`) VALUES (?, ?)');
2580
+	                    if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2581
+                            $upchck++;
2582
+
2583
+		        } elseif ($provider == "plv") {
2584
+
2585
+	                    $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_users_allowed`) VALUES (?, ?)');
2586
+	                    if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2587
+                            $upchck++;
2588
+
2589
+		        } elseif ($provider == "twl") {
2590
+
2591
+	                    $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_users_allowed`) VALUES (?, ?)');
2592
+	                    if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2593
+                            $upchck++;
2594
+
2595
+		        } elseif ($provider == "flr") {
2596
+
2597
+	                    $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_users_allowed`) VALUES (?, ?)');
2598
+	                    if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2599
+                            $upchck++;
2600
+		        }
2601
+
2602
+                        $datalwdres->closeCursor();
2603
+
2604
+
2605
+                        // Insert/update the credentials in the 'sms_relent_settings' table, for each allowed user
2606
+                        $msgtosend = $this->updateusercredentials($userId, $ctusernamearruid, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2607
+                                                                  $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2608
+                    }
2609
+
2610
+                    // Insert the provider's API keys for the allowed groups
2611
+                    if ($groups) {
2612
+
2613
+                        $allwdgrps = [];
2614
+                        foreach ($groups as $groupkey => $groupvalue) {
2615
+
2616
+                                 if ($groupvalue != "admin" && $groupvalue != '') {
2617
+
2618
+                                     $allwdgrps[] = $groupvalue;
2619
+
2620
+                                     // Get all the users that belong to the group
2621
+			             $getacdusr = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2622
+			             $getacdusrres = $getacdusr->execute([$groupvalue]);
2623
+
2624
+                                     $usersingrp = [];
2625
+			             while ($getacdusrnm = $getacdusrres->fetch()) {
2626
+                                            if ($getacdusrnm['uid'] != $userId) {
2627
+
2628
+		                                // Ensure the current user is not an admin
2629
+                                                if (!in_array($getacdusrnm['uid'], $usersadmin)) {
2630
+                                                     $usersingrp[] = $getacdusrnm['uid'];
2631
+                                                }
2632
+                                            }
2633
+                                     }
2634
+			             $getacdusrres->closeCursor();
2635
+
2636
+                                     // Insert the provider's API keys for each user of the allowed groups
2637
+                                     if ($usersingrp) {
2638
+                                         $msgtosend = $this->updateusercredentials($userId, $usersingrp, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2639
+                                                             $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2640
+                                     }
2641
+                                 }
2642
+
2643
+
2644
+		                // Insert the allowed groups into the 'sms_relent_subac' table
2645
+		                $groupsalwdrs = implode("|", $allwdgrps);
2646
+
2647
+                                if ($upchck == 0) {
2648
+
2649
+				    if ($provider == "tnx") {
2650
+
2651
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_groups_allowed`) VALUES (?, ?)');
2652
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2653
+
2654
+				    } elseif ($provider == "plv") {
2655
+
2656
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_groups_allowed`) VALUES (?, ?)');
2657
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2658
+
2659
+				    } elseif ($provider == "twl") {
2660
+
2661
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_groups_allowed`) VALUES (?, ?)');
2662
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2663
+
2664
+				    } elseif ($provider == "flr") {
2665
+
2666
+			                $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_groups_allowed`) VALUES (?, ?)');
2667
+			                if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; } 
2668
+				    }
2669
+
2670
+                                } else {
2671
+
2672
+				    if ($provider == "tnx") {
2673
+
2674
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ? WHERE `user_id` = ?');
2675
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2676
+
2677
+				    } elseif ($provider == "plv") {
2678
+
2679
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ? WHERE `user_id` = ?');
2680
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2681
+
2682
+				    } elseif ($provider == "twl") {
2683
+
2684
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ? WHERE `user_id` = ?');
2685
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2686
+
2687
+				    } elseif ($provider == "flr") {
2688
+
2689
+			                $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ? WHERE `user_id` = ?');
2690
+			                if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2691
+				    }
2692
+
2693
+                                }
2694
+
2695
+		                $datalwdres->closeCursor();
2696
+                        }
2697
+
2698
+                    }
2699
+
2700
+                } else {
2701
+
2702
+                    // Remove the previously saved API keys for each user in the specified groups, for the current provider
2703
+                    if ($groupsPerProvider != '') {
2704
+
2705
+                        $groupsPerProvarr = explode("|", $groupsPerProvider);
2706
+                        foreach ($groupsPerProvarr as $prgrkey => $prgrvalue) {
2707
+
2708
+                                 if ($prgrvalue != "admin" && $prgrvalue != '') {
2709
+
2710
+                                     // Get all the users that belong to the group
2711
+	                             $getusringrp = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2712
+			             $getusringrpres = $getusringrp->execute([$prgrvalue]);
2713
+
2714
+                                     $usersingroup = [];
2715
+			             while ($getusrnm = $getusringrpres->fetch()) {
2716
+                                            if ($getusrnm['uid'] != $userId) {
2717
+
2718
+		                                // Ensure the current user is not an admin
2719
+                                                if (!in_array($getusrnm['uid'], $usersadmin)) {
2720
+                                                     $usersingroup[] = $getusrnm['uid'];
2721
+                                                }
2722
+                                            }
2723
+                                     }
2724
+			             $getusringrpres->closeCursor();
2725
+
2726
+                                     if ($usersingroup) {
2727
+                                         $msgtosend = $this->removeusercredentials($userId, $usersingroup, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2728
+                                                             $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2729
+                                     }
2730
+                                 }
2731
+
2732
+                        }
2733
+                    }
2734
+
2735
+
2736
+                    // Remove the previously saved API keys for each user, for the current provider
2737
+                    if ($usersPerProvider != '') {
2738
+
2739
+                        $usersPerProvarr = explode("|", $usersPerProvider);
2740
+                        if ($usersPerProvarr) {
2741
+
2742
+                            $ctusernamearrpr = [];
2743
+                            foreach ($usersPerProvarr as $usrKeypr => $usrValuepr) {
2744
+
2745
+		                 // Get the username for this Display Name
2746
+		                 $getacdataunmpr = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
2747
+		                 $getacdataunmprres = $getacdataunmpr->execute(['displayname', $usrValuepr]);
2748
+		                 $acdatausrnamepr = $getacdataunmprres->fetch();
2749
+                                 if ($acdatausrnamepr['uid'] != $userId) {
2750
+
2751
+		                     // Ensure the current user is not an admin
2752
+                                     if (!in_array($acdatausrnamepr['uid'], $usersadmin)) {
2753
+                                          $ctusernamearrpr[] = $acdatausrnamepr['uid'];
2754
+                                     }
2755
+
2756
+                                 }
2757
+		                 $getacdataunmprres->closeCursor();
2758
+                            }
2759
+
2760
+                            $msgtosend = $this->removeusercredentials($userId, $ctusernamearrpr, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey,
2761
+                                                                      $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2762
+                        }
2763
+                    }
2764
+
2765
+
2766
+
2767
+                    // Insert the provider's API keys for the allowed users
2768
+                    if ($users) {
2769
+
2770
+                        $ctusernamearruid = [];
2771
+                        $ctusernamearr = [];
2772
+                        foreach ($users as $usrKey => $usrValue) {
2773
+                             if ($usrValue != '') {
2774
+		                 // Get the username for this Display Name
2775
+		                 $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
2776
+		                 $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]);
2777
+		                 $acdatausrname = $getacdataunmres->fetch();
2778
+                                 if ($acdatausrname['uid'] != $userId) {
2779
+
2780
+		                     // Ensure the current user is not an admin
2781
+                                     if (!in_array($acdatausrname['uid'], $usersadmin)) {
2782
+                                         $ctusernamearruid[] = $acdatausrname['uid'];
2783
+                                         $ctusernamearr[] = $usrValue;
2784
+
2785
+                                     }
2786
+
2787
+                                 }
2788
+		                 $getacdataunmres->closeCursor();
2789
+                             }
2790
+                        }
2791
+
2792
+
2793
+                        // Update the allowed users in the 'sms_relent_subac' table
2794
+                        $usersalwdrs = implode("|", $ctusernamearr);
2795
+
2796
+		        if ($provider == "tnx") {
2797
+
2798
+	                    $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_users_allowed` = ? WHERE `user_id` = ?');
2799
+	                    if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2800
+
2801
+		        } elseif ($provider == "plv") {
2802
+
2803
+	                    $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_users_allowed` = ? WHERE `user_id` = ?');
2804
+	                    if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2805
+
2806
+		        } elseif ($provider == "twl") {
2807
+
2808
+	                    $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_users_allowed` = ? WHERE `user_id` = ?');
2809
+	                    if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2810
+
2811
+		        } elseif ($provider == "flr") {
2812
+
2813
+	                    $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_users_allowed` = ? WHERE `user_id` = ?');
2814
+	                    if ($datalwdres = $updatealwd->execute([$usersalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2815
+		        }
2816
+
2817
+                        $datalwdres->closeCursor();
2818
+
2819
+
2820
+                        // Insert/update the credentials in the 'sms_relent_settings' table, for each allowed user
2821
+                        $msgtosend = $this->updateusercredentials($userId, $ctusernamearruid, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2822
+                                                                  $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2823
+                    }
2824
+
2825
+                    // Insert the provider's API keys for the allowed groups
2826
+                    if ($groups) {
2827
+
2828
+                        $allwdgrps = [];
2829
+                        foreach ($groups as $groupkey => $groupvalue) {
2830
+
2831
+                                 if ($groupvalue != "admin" && $groupvalue != '') {
2832
+
2833
+                                     $allwdgrps[] = $groupvalue;
2834
+
2835
+                                     // Get all the users that belong to the group
2836
+			             $getacdusr = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
2837
+			             $getacdusrres = $getacdusr->execute([$groupvalue]);
2838
+
2839
+                                     $usersingrp = [];
2840
+			             while ($getacdusrnm = $getacdusrres->fetch()) {
2841
+                                            if ($getacdusrnm['uid'] != $userId) {
2842
+
2843
+		                                // Ensure the current user is not an admin
2844
+                                                if (!in_array($getacdusrnm['uid'], $usersadmin)) {
2845
+                                                     $usersingrp[] = $getacdusrnm['uid'];
2846
+                                                }
2847
+                                            }
2848
+                                     }
2849
+			             $getacdusrres->closeCursor();
2850
+
2851
+                                     // Insert the provider's API keys for each user of the allowed groups
2852
+                                     if ($usersingrp) {
2853
+                                         $msgtosend = $this->updateusercredentials($userId, $usersingrp, $provider, $telapiKey, $telpubKey, $telmsgprofid, $telsendername, $plivoapikey, 
2854
+                                                             $plivoapisecret, $plivosendernm, $twilapikey, $twilapisecret, $twilsendernm, $flowapikey, $flowapisecret);
2855
+                                     }
2856
+                                 }
2857
+
2858
+
2859
+		                 // Update the allowed groups in the 'sms_relent_subac' table
2860
+		                 $groupsalwdrs = implode("|", $allwdgrps);
2861
+
2862
+				 if ($provider == "tnx") {
2863
+
2864
+			             $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ? WHERE `user_id` = ?');
2865
+			             if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2866
+
2867
+				 } elseif ($provider == "plv") {
2868
+
2869
+			             $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ? WHERE `user_id` = ?');
2870
+			             if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2871
+
2872
+				 } elseif ($provider == "twl") {
2873
+
2874
+			             $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ? WHERE `user_id` = ?');
2875
+			             if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2876
+
2877
+				 } elseif ($provider == "flr") {
2878
+
2879
+			             $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ? WHERE `user_id` = ?');
2880
+			             if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
2881
+				 }
2882
+
2883
+		                 $datalwdres->closeCursor();
2884
+                        }
2885
+
2886
+                    }
2887
+
2888
+                }
2889
+
2890
+            }
2891
+
2892
+          } else { $msgtosend = "You have to save your credentials first, by clicking the 'Save' button at the bottom of this page, and then share your API keys with other users."; }
2893
+
2894
+          return $msgtosend;
2895
+       }
2896
+     }
2897
+
2898
+
2899
+     public function removenumberrestrictions($userId, $phoneNumber) {
2900
+
2901
+        if ($this->groupManager->isAdmin($userId)) {
2902
+
2903
+                // Remove the restrictions for the given phone number
2904
+		$delrstr = $this->connection->prepare('
2905
+		       DELETE FROM `*PREFIX*sms_relent_restrict`
2906
+		       WHERE `phone_number` = ?');
2907
+                if ($delrstrres = $delrstr->execute([$phoneNumber])) { $delresult = "success"; } else { $delresult = "failure"; }
2908
+		$delrstrres->closeCursor();
2909
+
2910
+	        $updateind = $this->connection->prepare('
2911
+                       SET @resetrec = 0;
2912
+		       UPDATE `*PREFIX*sms_relent_restrict`
2913
+		       SET `id` = @resetrec := @resetrec + 1;
2914
+                       ALTER TABLE `*PREFIX*sms_relent_restrict` auto_increment=1;');
2915
+	        $updateindres = $updateind->execute();
2916
+	        $updateindres->closeCursor();
2917
+
2918
+                return $delresult;
2919
+        }
2920
+     }
2921
+
2922
+
2923
+    /**
2924
+     * @NoAdminRequired
2925
+     */
2926
+    public function updateautoreplies($userId, $savedByDsplname, $phoneNumber, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText) {
2927
+
2928
+        // Get the auto-reply for the current number from the 'sms_relent_autorply' table
2929
+        $getarpl = $this->connection->prepare('SELECT `user_id`, `saved_by_dsplname`, `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`,
2930
+                                              `vacation_end`, `message_text` FROM `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?');
2931
+        $getarplresult = $getarpl->execute([$phoneNumber]);
2932
+        $crntarpl = $getarplresult->fetch();
2933
+        $getarplresult->closeCursor();
2934
+
2935
+        if ($getarplresult && !$crntarpl) {
2936
+
2937
+	    $insertpharpl = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_autorply` (`user_id`, `saved_by_dsplname`, `phone_number`, `days_of_week`, 
2938
+                                                       `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text`) VALUES
2939
+                                                        (?, ?, ?, ?, ?, ?, ?, ?, ?)');
2940
+	    if ($insertpharpl->execute([$userId, $savedByDsplname, $phoneNumber, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText])) { 
2941
+                $messagetosend = 'success'; 
2942
+            } else { 
2943
+                $messagetosend = 'failure'; 
2944
+            }
2945
+         
2946
+        } elseif ($getarplresult && $crntarpl) {
2947
+
2948
+            if ($this->groupManager->isAdmin($userId)) {
2949
+
2950
+                $updatepharpl = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_autorply` SET `user_id` = ?, `saved_by_dsplname` = ?, `days_of_week` = ?, `daily_start` = ?,
2951
+                                                           `daily_end` = ?, `vacation_start` = ?, `vacation_end` = ?, `message_text` = ?  WHERE `phone_number` = ?');
2952
+	        if ($updatephnmbrarpl = $updatepharpl->execute([$userId, $savedByDsplname, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText,
2953
+                                                                $phoneNumber])) { 
2954
+                    $messagetosend = 'success';
2955
+                } else { 
2956
+                    $messagetosend = 'failure'; 
2957
+                }
2958
+	        $updatephnmbrarpl->closeCursor();
2959
+
2960
+            } else {
2961
+
2962
+                // Check if the current user is the author of the existing version of the auto-reply
2963
+                if ($userId == $crntarpl['user_id']) {
2964
+
2965
+                    $updatepharpl = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_autorply` SET `user_id` = ?, `saved_by_dsplname` = ?, `days_of_week` = ?, `daily_start` = ?,
2966
+                                                               `daily_end` = ?, `vacation_start` = ?, `vacation_end` = ?, `message_text` = ?  WHERE `phone_number` = ?');
2967
+	            if ($updatephnmbrarpl = $updatepharpl->execute([$userId, $savedByDsplname, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText,
2968
+                                                                    $phoneNumber])) { 
2969
+                        $messagetosend = 'success';
2970
+                    } else { 
2971
+                        $messagetosend = 'failure'; 
2972
+                    }
2973
+	            $updatephnmbrarpl->closeCursor();
2974
+
2975
+                } else { $messagetosend = 'not allowed'; }
2976
+            }
2977
+        }
2978
+
2979
+        return $messagetosend;
2980
+    }
2981
+
2982
+
2983
+    /**
2984
+     * @NoAdminRequired
2985
+     */
2986
+    public function removeautoreplies($userId, $phoneNumber) {
2987
+
2988
+        if ($this->groupManager->isAdmin($userId)) {
2989
+
2990
+                // Remove the auto-reply for the given phone number
2991
+		$delarpl = $this->connection->prepare('
2992
+		       DELETE FROM `*PREFIX*sms_relent_autorply`
2993
+		       WHERE `phone_number` = ?');
2994
+                if ($delarplres = $delarpl->execute([$phoneNumber])) { $delarplresult = "success"; } else { $delarplresult = "failure"; }
2995
+		$delarplres->closeCursor();
2996
+
2997
+	        $updateindarpl = $this->connection->prepare('
2998
+                       SET @resetarpl = 0;
2999
+		       UPDATE `*PREFIX*sms_relent_autorply`
3000
+		       SET `id` = @resetarpl := @resetarpl + 1;
3001
+                       ALTER TABLE `*PREFIX*sms_relent_autorply` auto_increment=1;');
3002
+	        $updateindarplres = $updateindarpl->execute();
3003
+	        $updateindarplres->closeCursor();
3004
+
3005
+                return $delarplresult;
3006
+
3007
+        } else {
3008
+                // Get the author of the auto-reply for the given phone number
3009
+		$getarplusr = $this->connection->prepare('SELECT `user_id`, `phone_number` FROM `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?');
3010
+		$getarplusrres = $getarplusr->execute([$phoneNumber]);
3011
+		$crntarpldata = $getarplusrres->fetch();
3012
+                $crntarpluser = $crntarpldata['user_id'];
3013
+		$getarplusrres->closeCursor();
3014
+
3015
+                // If the author of the auto-reply is the current user, allow the removal
3016
+                if ($crntarpluser == $userId) {
3017
+
3018
+                    // Remove the auto-reply for the given phone number
3019
+		    $delarpl = $this->connection->prepare('
3020
+		           DELETE FROM `*PREFIX*sms_relent_autorply`
3021
+		           WHERE `phone_number` = ?');
3022
+                    if ($delarplres = $delarpl->execute([$phoneNumber])) { $delarplresult = "success"; } else { $delarplresult = "failure"; }
3023
+		    $delarplres->closeCursor();
3024
+
3025
+	            $updateindarpl = $this->connection->prepare('
3026
+                           SET @resetarpl = 0;
3027
+		           UPDATE `*PREFIX*sms_relent_autorply`
3028
+		           SET `id` = @resetarpl := @resetarpl + 1;
3029
+                           ALTER TABLE `*PREFIX*sms_relent_autorply` auto_increment=1;');
3030
+	            $updateindarplres = $updateindarpl->execute();
3031
+	            $updateindarplres->closeCursor();
3032
+
3033
+                    return $delarplresult;
3034
+
3035
+                } else { 
3036
+                    return $delarplresult = 'not allowed';
3037
+                }
3038
+        }
3039
+    }
3040
+
3041
+
3042
+    public function getadminsettings($userId) {
3043
+
3044
+        if ($this->groupManager->isAdmin($userId)) {
3045
+
3046
+
3047
+	    $getsettings = $this->connection->prepare('
3048
+                            SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`,
3049
+                                   `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, 
3050
+                                   `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, 
3051
+                                   `show_all_messages`
3052
+			    FROM  `*PREFIX*sms_relent_settings`
3053
+			    WHERE `user_id` = ?');
3054
+
3055
+	    $resultsettings = $getsettings->execute([$userId]);
3056
+
3057
+            $settingsadm = $resultsettings->fetch();
3058
+
3059
+	    $resultsettings->closeCursor();
3060
+
3061
+	    if ($settingsadm) {
3062
+
3063
+		    if ($settingsadm['telapi_key'] != '') {
3064
+
3065
+		        // Send a placeholder to the browser, instead of the real API key
3066
+		        $settingsadm['telapi_key'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20";
3067
+		    }
3068
+		    if ($settingsadm['tel_pub_key'] != '') {
3069
+		        $settingsadm['tel_pub_key'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20";
3070
+		    }
3071
+		    if ($settingsadm['messaging_profile_id'] != '') {
3072
+		        $settingsadm['messaging_profile_id'] = "%20%20%20%20%20%20%20%20%20%20%20%20";
3073
+		    }
3074
+		    if ($settingsadm['nexapi_key'] != '') {
3075
+		        $settingsadm['nexapi_key'] = "%20%20%20%20%20%20%20%20%20";
3076
+		    }
3077
+		    if ($settingsadm['nexapi_secret'] != '') {
3078
+		        $settingsadm['nexapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20";
3079
+		    }
3080
+		    if ($settingsadm['twilapi_key'] != '') {
3081
+		        $settingsadm['twilapi_key'] = "%20%20%20%20%20%20%20%20%20";
3082
+		    }
3083
+		    if ($settingsadm['twilapi_secret'] != '') {
3084
+		        $settingsadm['twilapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20";
3085
+		    }
3086
+		    if ($settingsadm['flowapi_key'] != '') {
3087
+		        $settingsadm['flowapi_key'] = "%20%20%20%20%20%20%20%20%20";
3088
+		    }
3089
+		    if ($settingsadm['flowapi_secret'] != '') {
3090
+		        $settingsadm['flowapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20";
3091
+		    }
3092
+
3093
+
3094
+		    // Get the Display Name of the current admin
3095
+		    $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
3096
+		    $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']);
3097
+		    $acdatausrdnadm = $getacdatadnres->fetch();
3098
+		    $cruserdname = $acdatausrdnadm['value'];
3099
+		    $getacdatadnres->closeCursor();
3100
+
3101
+		    // Get all the restrictions on phone numbers
3102
+		    $getrestr = $this->connection->prepare('SELECT `saved_by_dsplname`, `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict`');
3103
+		    $getrestres = $getrestr->execute();
3104
+
3105
+		    $restrictedArr = [];
3106
+		    while ($restrfetched = $getrestres->fetch()) {
3107
+		           $restrictedArr[] = $restrfetched;
3108
+		    }
3109
+		    $getrestres->closeCursor();
3110
+
3111
+		    if ($restrictedArr) { $restrictedUsers = $restrictedArr; } else { $restrictedUsers = ''; }
3112
+
3113
+
3114
+		    // Get the name of all the groups
3115
+		    $getgroups = $this->connection->prepare('SELECT `gid`, `displayname` FROM `*PREFIX*groups`');
3116
+		    $getgroupsres = $getgroups->execute();
3117
+
3118
+		    $groupsArr = [];
3119
+                    $allgroupswadmarr = [];
3120
+		    while ($groupsfetched = $getgroupsres->fetch()) {
3121
+
3122
+		           $groupsArr[] = $groupsfetched['gid'];
3123
+                           if ($groupsfetched['gid'] != 'admin') { $allgroupswadmarr[] = $groupsfetched['gid']; }
3124
+		    }
3125
+		    $getgroupsres->closeCursor();
3126
+
3127
+		    if ($groupsArr) { $allgroups = $groupsArr; } else { $allgroups = ''; }
3128
+                    if ($allgroupswadmarr) { $allgroupswadm = $allgroupswadmarr; } else { $allgroupswadm = ''; }
3129
+
3130
+		    // Get the users that belong to the 'admin' group
3131
+		    $getadmnsc = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
3132
+		    $getadmnscres = $getadmnsc->execute(['admin']);
3133
+
3134
+		    $usersadminsc = [];
3135
+		    while ($getadmnusrsc = $getadmnscres->fetch()) {
3136
+		           $usersadminsc[] = $getadmnusrsc['uid'];
3137
+		    }
3138
+		    $getadmnscres->closeCursor();
3139
+
3140
+
3141
+		    // Get the display name of all the users
3142
+		    $getusers = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ?');
3143
+		    $getusersres = $getusers->execute(['displayname']);
3144
+
3145
+		    $usersArr = [];
3146
+                    $alluserswadmarr = [];
3147
+		    while ($usersfetched = $getusersres->fetch()) {
3148
+
3149
+		           $usersArr[] = $usersfetched['value'];
3150
+                           if (!in_array($usersfetched['uid'], $usersadminsc)) { $alluserswadmarr[] = $usersfetched['value']; }
3151
+		    }
3152
+		    $getusersres->closeCursor();
3153
+
3154
+		    if ($usersArr) { $allusers = $usersArr; } else { $allusers = ''; }
3155
+                    if ($alluserswadmarr) { $alluserswadm = $alluserswadmarr; } else { $alluserswadm = ''; }
3156
+
3157
+                    // Get the groups and users that are allowed to use the API Keys, for each provider
3158
+                    $getalwdall = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
3159
+                                                             `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`
3160
+                                                              WHERE `user_id` = ?');
3161
+                    $getalwdallres = $getalwdall->execute([$userId]);
3162
+                    $crtdtrow = $getalwdallres->fetch();
3163
+                    if ($crtdtrow) {
3164
+                        $allowedgrps = ['tnx_groups_allowed' => $crtdtrow['tnx_groups_allowed'], 'tnx_users_allowed' => $crtdtrow['tnx_users_allowed'], 
3165
+                                        'plv_groups_allowed' => $crtdtrow['plv_groups_allowed'], 'plv_users_allowed' => $crtdtrow['plv_users_allowed'],
3166
+                                        'twl_groups_allowed' => $crtdtrow['twl_groups_allowed'], 'twl_users_allowed' => $crtdtrow['twl_users_allowed'],
3167
+                                        'flr_groups_allowed' => $crtdtrow['flr_groups_allowed'], 'flr_users_allowed' => $crtdtrow['flr_users_allowed']];
3168
+                        $getalwdallres->closeCursor();
3169
+                    } else { $allowedgrps = []; }
3170
+
3171
+
3172
+                    $settingsadm['admdisplayname'] = $cruserdname;
3173
+                    $settingsadm['restrictions'] = $restrictedUsers;
3174
+                    $settingsadm['allgroups'] = $allgroups;
3175
+                    $settingsadm['allusers'] = $allusers;
3176
+                    $settingsadm['allgroupswadm'] = $allgroupswadm;
3177
+                    $settingsadm['alluserswadm'] = $alluserswadm;  
3178
+                    $settingsadm['allowedkeysuse'] = $allowedgrps;
3179
+
3180
+		    return $settingsadm;
3181
+	    }
3182
+        }
3183
+     }
3184
+
3185
+
3186
+     /**
3187
+      * @NoAdminRequired
3188
+      *
3189
+      */
3190
+     public function updatesettings($userId, $telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, 
3191
+                                    $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames) {
3192
+        $upsettings = $this->connection->prepare('
3193
+                        SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`,
3194
+                           `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, 
3195
+                           `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, 
3196
+                           `show_all_messages`, `show_display_names`
3197
+		        FROM  `*PREFIX*sms_relent_settings`
3198
+		        WHERE `user_id` = ?');
3199
+
3200
+        $resultstng = $upsettings->execute([$userId]);
3201
+
3202
+        $rowup = $resultstng->fetch();
3203
+
3204
+        $resultstng->closeCursor();
3205
+
3206
+        if ($resultstng && !$rowup) {
3207
+
3208
+	    $sql = $this->connection->prepare('
3209
+				INSERT INTO `*PREFIX*sms_relent_settings`
3210
+					(`user_id`, `telapi_url_rec`, `telapi_url`, `nexapi_url_rec`, `nexapi_url`, `twilapi_url_rec`, `twilapi_url`, `flowapi_url_rec`, `flowapi_url`, 
3211
+                                         `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`)
3212
+				VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3213
+			');
3214
+	    $sql->execute([$userId, $telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, $getNotify, 
3215
+                           $notificationEmail, $getsmsinemail, $showDisplayNames]);
3216
+
3217
+        } elseif ($resultstng && $rowup) {
3218
+
3219
+	    $sqlupdatedb = $this->connection->prepare('
3220
+			UPDATE `*PREFIX*sms_relent_settings`
3221
+			SET `telapi_url_rec` = ?, `telapi_url` = ?, `nexapi_url_rec` = ?, `nexapi_url` = ?, `twilapi_url_rec` = ?, `twilapi_url` = ?, `flowapi_url_rec` = ?, 
3222
+                            `flowapi_url` = ?, `messagesperpage` = ?, `get_notify` = ?, `notification_email` = ?, `getsmsinemail` = ?, `show_display_names` = ?
3223
+	                WHERE `user_id` = ?');
3224
+	    $updateRes = $sqlupdatedb->execute([$telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, 
3225
+                                                $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $userId]);
3226
+	    $updateRes->closeCursor();
3227
+
3228
+	}
3229
+     }
3230
+
3231
+
3232
+     public function updateadminsettings($userId, $telapiKey, $telPubKey, $telapiUrlRec, $telapiUrl, $messagingProfileId, $nexapiKey, $nexapiSecret, $nexapiUrlRec, $nexapiUrl,
3233
+                                         $telSenderName, $nexSenderName, $twilapiKey, $twilapiSecret,
3234
+                                         $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapiKey, $flowapiSecret, $flowapiUrlRec, $flowapiUrl, $showAllMessages) {
3235
+
3236
+        if ($this->groupManager->isAdmin($userId)) {
3237
+
3238
+            $upsettings = $this->connection->prepare('
3239
+                        SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`,
3240
+                           `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, 
3241
+                           `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, 
3242
+                           `show_all_messages`, `show_display_names`
3243
+		        FROM  `*PREFIX*sms_relent_settings`
3244
+		        WHERE `user_id` = ?');
3245
+
3246
+            $resultstng = $upsettings->execute([$userId]);
3247
+
3248
+            $rowup = $resultstng->fetch();
3249
+
3250
+            $resultstng->closeCursor();
3251
+
3252
+            if ($resultstng && !$rowup) {
3253
+
3254
+	        if ($telapiKey != '') {
3255
+	            $telapikeystrenc = $this->crypto->encrypt($telapiKey);             
3256
+	        } else { $telapikeystrenc = ''; }
3257
+
3258
+	        if ($telPubKey != '') {
3259
+	            $telpubkeystrenc =  $this->crypto->encrypt($telPubKey);             
3260
+	        } else { $telpubkeystrenc = ''; }
3261
+
3262
+	        if ($messagingProfileId != '') {
3263
+	            $messagingprofenc = $this->crypto->encrypt($messagingProfileId);             
3264
+	        } else { $messagingprofenc = ''; }
3265
+
3266
+	        if ($nexapiKey != '') {
3267
+	            $nexapikeystrenc = $this->crypto->encrypt($nexapiKey);             
3268
+	        } else { $nexapikeystrenc = ''; }
3269
+
3270
+	        if ($nexapiSecret != '') {
3271
+	            $nexapisecretstrenc = $this->crypto->encrypt($nexapiSecret);             
3272
+	        } else { $nexapisecretstrenc = ''; }
3273
+
3274
+	        if ($twilapiKey != '') {
3275
+	            $twilapikeystrenc = $this->crypto->encrypt($twilapiKey);             
3276
+	        } else { $twilapikeystrenc = ''; }
3277
+
3278
+	        if ($twilapiSecret != '') {
3279
+	            $twilapisecretstrenc = $this->crypto->encrypt($twilapiSecret);             
3280
+	        } else { $twilapisecretstrenc = ''; }
3281
+
3282
+	        if ($flowapiKey != '') {
3283
+	            $flowapikeystrenc = $this->crypto->encrypt($flowapiKey);             
3284
+	        } else { $flowapikeystrenc = ''; }
3285
+
3286
+	        if ($flowapiSecret != '') {
3287
+	            $flowapisecretstrenc = $this->crypto->encrypt($flowapiSecret);             
3288
+	        } else { $flowapisecretstrenc = ''; }
3289
+
3290
+
3291
+	        $sql = $this->connection->prepare('
3292
+				INSERT INTO `*PREFIX*sms_relent_settings`
3293
+					(`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, 
3294
+	                                 `nexapi_url`, `tel_sender_name`, `nex_sender_name`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `twil_sender_name`, 
3295
+                                         `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `show_all_messages`)
3296
+				VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
3297
+			');
3298
+	        $sql->execute([$userId, $telapikeystrenc, $telpubkeystrenc, $telapiUrlRec, $telapiUrl, $messagingprofenc, $nexapikeystrenc, $nexapisecretstrenc, $nexapiUrlRec, 
3299
+                               $nexapiUrl, $telSenderName, $nexSenderName, $twilapikeystrenc, $twilapisecretstrenc, $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapikeystrenc, 
3300
+                               $flowapisecretstrenc, $flowapiUrlRec, $flowapiUrl, $showAllMessages]);
3301
+
3302
+            } elseif ($resultstng && $rowup) {
3303
+
3304
+	        // Check if the value of the field is the placeholder or an empty string
3305
+	        if ($telapiKey != '' && $telapiKey != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3306
+	            $telapikeystrenc = $this->crypto->encrypt($telapiKey);                
3307
+	        } elseif ($telapiKey == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3308
+	            $telapikeystrenc = $rowup['telapi_key'];
3309
+	        } elseif ($telapiKey == '') {
3310
+	            $telapikeystrenc = '';
3311
+	        }
3312
+
3313
+	        if ($telPubKey != '' && $telPubKey != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3314
+	            $telpubkeystrenc = $this->crypto->encrypt($telPubKey);                
3315
+	        } elseif ($telPubKey == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3316
+	            $telpubkeystrenc = $rowup['tel_pub_key'];
3317
+	        } elseif ($telPubKey == '') {
3318
+	            $telpubkeystrenc = '';
3319
+	        }
3320
+
3321
+	        if ($messagingProfileId != '' && $messagingProfileId != "%20%20%20%20%20%20%20%20%20%20%20%20") {
3322
+	            $messagingprofenc = $this->crypto->encrypt($messagingProfileId);                
3323
+	        } elseif ($messagingProfileId == "%20%20%20%20%20%20%20%20%20%20%20%20") {
3324
+	            $messagingprofenc = $rowup['messaging_profile_id'];
3325
+	        } elseif ($messagingProfileId == '') {
3326
+	            $messagingprofenc = '';
3327
+	        }
3328
+
3329
+	        if ($nexapiKey != '' && $nexapiKey != "%20%20%20%20%20%20%20%20%20") {
3330
+	            $nexapikeystrenc = $this->crypto->encrypt($nexapiKey);                
3331
+	        } elseif ($nexapiKey == "%20%20%20%20%20%20%20%20%20") {
3332
+	            $nexapikeystrenc = $rowup['nexapi_key'];
3333
+	        } elseif ($nexapiKey == '') {
3334
+	            $nexapikeystrenc = '';
3335
+	        }
3336
+
3337
+	        if ($twilapiKey != '' && $twilapiKey != "%20%20%20%20%20%20%20%20%20") {
3338
+	            $twilapikeystrenc = $this->crypto->encrypt($twilapiKey);                
3339
+	        } elseif ($twilapiKey == "%20%20%20%20%20%20%20%20%20") {
3340
+	            $twilapikeystrenc = $rowup['twilapi_key'];
3341
+	        } elseif ($twilapiKey == '') {
3342
+	            $twilapikeystrenc = '';
3343
+	        }
3344
+
3345
+	        if ($flowapiKey != '' && $flowapiKey != "%20%20%20%20%20%20%20%20%20") {
3346
+	            $flowapikeystrenc = $this->crypto->encrypt($flowapiKey);                
3347
+	        } elseif ($flowapiKey == "%20%20%20%20%20%20%20%20%20") {
3348
+	            $flowapikeystrenc = $rowup['flowapi_key'];
3349
+	        } elseif ($flowapiKey == '') {
3350
+	            $flowapikeystrenc = '';
3351
+	        }
3352
+
3353
+	        if ($nexapiSecret != '' && $nexapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3354
+	            $nexapisecretstrenc = $this->crypto->encrypt($nexapiSecret);                
3355
+	        } elseif ($nexapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3356
+	            $nexapisecretstrenc = $rowup['nexapi_secret'];
3357
+	        } elseif ($nexapiSecret == '') {
3358
+	            $nexapisecretstrenc = '';
3359
+	        }
3360
+
3361
+	        if ($twilapiSecret != '' && $twilapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3362
+	            $twilapisecretstrenc = $this->crypto->encrypt($twilapiSecret);                
3363
+	        } elseif ($twilapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3364
+	            $twilapisecretstrenc = $rowup['twilapi_secret'];
3365
+	        } elseif ($twilapiSecret == '') {
3366
+	            $twilapisecretstrenc = '';
3367
+	        }
3368
+
3369
+	        if ($flowapiSecret != '' && $flowapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3370
+	            $flowapisecretstrenc = $this->crypto->encrypt($flowapiSecret);                
3371
+	        } elseif ($flowapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
3372
+	            $flowapisecretstrenc = $rowup['flowapi_secret'];
3373
+	        } elseif ($flowapiSecret == '') {
3374
+	            $flowapisecretstrenc = '';
3375
+	        }
3376
+
3377
+	        $sqlupdatedb = $this->connection->prepare('
3378
+			UPDATE `*PREFIX*sms_relent_settings`
3379
+			SET `telapi_key` = ?, `tel_pub_key` = ?, `telapi_url_rec` = ?, `telapi_url` = ?, `messaging_profile_id` = ?, `nexapi_key` = ?, `nexapi_secret` = ?,
3380
+	                    `nexapi_url_rec` = ?, `nexapi_url` = ?, `tel_sender_name` = ?, `nex_sender_name` = ?, `twilapi_key` = ?, `twilapi_secret` = ?, `twilapi_url_rec` = ?, `twilapi_url` = ?, `twil_sender_name` = ?, `flowapi_key` = ?, 
3381
+	                    `flowapi_secret` = ?, `flowapi_url_rec` = ?, `flowapi_url` = ?, `show_all_messages` = ?
3382
+	                WHERE `user_id` = ?');
3383
+	        $updateRes = $sqlupdatedb->execute([$telapikeystrenc, $telpubkeystrenc, $telapiUrlRec, $telapiUrl, $messagingprofenc, $nexapikeystrenc, $nexapisecretstrenc, 
3384
+                                                    $nexapiUrlRec, $nexapiUrl, $telSenderName, $nexSenderName, $twilapikeystrenc, $twilapisecretstrenc, $twilapiUrlRec, $twilapiUrl, 
3385
+                                                    $twilSenderName, $flowapikeystrenc, $flowapisecretstrenc, $flowapiUrlRec, $flowapiUrl, $showAllMessages, $userId]);
3386
+	        $updateRes->closeCursor();
3387
+
3388
+	    }
3389
+        }
3390
+     }
3391
+
3392
+
3393
+     public function updatepersadmnsettings($userId, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames) {
3394
+
3395
+        if ($this->groupManager->isAdmin($userId)) {
3396
+
3397
+            $upsettings = $this->connection->prepare('
3398
+                        SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`,
3399
+                           `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, 
3400
+                           `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, 
3401
+                           `show_all_messages`, `show_display_names`
3402
+		        FROM  `*PREFIX*sms_relent_settings`
3403
+		        WHERE `user_id` = ?');
3404
+
3405
+            $resultstng = $upsettings->execute([$userId]);
3406
+
3407
+            $rowup = $resultstng->fetch();
3408
+
3409
+            $resultstng->closeCursor();
3410
+
3411
+            if ($resultstng && !$rowup) {
3412
+
3413
+	        $sql = $this->connection->prepare('
3414
+				INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`)
3415
+				VALUES (?, ?, ?, ?, ?, ?)');
3416
+	        $sql->execute([$userId, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames]);
3417
+
3418
+            } elseif ($resultstng && $rowup) {
3419
+
3420
+	        $sqlupdatedb = $this->connection->prepare('
3421
+			UPDATE `*PREFIX*sms_relent_settings`
3422
+			SET `messagesperpage` = ?, `get_notify` = ?, `notification_email` = ?, `getsmsinemail` = ?, `show_display_names` = ?
3423
+	                WHERE `user_id` = ?');
3424
+	        $updateRes = $sqlupdatedb->execute([$messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $userId]);
3425
+	        $updateRes->closeCursor();
3426
+            }
3427
+        }
3428
+     }
3429
+
3430
+
3431
+     /**
3432
+      * @NoAdminRequired
3433
+      */
3434
+     public function getapicredentials($userId) {
3435
+
3436
+        $sqlcr = $this->connection->prepare('
3437
+              SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`,
3438
+                     `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, 
3439
+                     `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url` FROM `*PREFIX*sms_relent_settings`
3440
+	      WHERE `user_id` = ?');
3441
+	$resultcr = $sqlcr->execute([$userId]);
3442
+        $settingsfrdb = $resultcr->fetch();
3443
+        $resultcr->closeCursor();
3444
+
3445
+        if (($settingsfrdb['telapi_key'] != '') && ($settingsfrdb['telapi_key'] != 'undefined') && ($settingsfrdb['telapi_key'] != null)) { 
3446
+             $telapikeystrdec = $this->crypto->decrypt($settingsfrdb['telapi_key']); 
3447
+        } else { $telapikeystrdec = ''; }
3448
+
3449
+        if (($settingsfrdb['tel_pub_key'] != '') && ($settingsfrdb['tel_pub_key'] != 'undefined') && ($settingsfrdb['tel_pub_key'] != null)) {
3450
+             $telpubkeystrdec = $this->crypto->decrypt($settingsfrdb['tel_pub_key']); 
3451
+        } else { $telpubkeystrdec = ''; }
3452
+
3453
+        $telapiurlrec = $settingsfrdb['telapi_url_rec'];
3454
+        $telapiurlstr = $settingsfrdb['telapi_url'];
3455
+
3456
+        if (($settingsfrdb['messaging_profile_id'] != '') && ($settingsfrdb['messaging_profile_id'] != 'undefined') && ($settingsfrdb['messaging_profile_id'] != null)) {
3457
+             $messagingprofid = $this->crypto->decrypt($settingsfrdb['messaging_profile_id']); 
3458
+        } else { $messagingprofid = ''; }
3459
+
3460
+        if (($settingsfrdb['nexapi_key'] != '') && ($settingsfrdb['nexapi_key'] != 'undefined') && ($settingsfrdb['nexapi_key'] != null)) { 
3461
+             $nexapikeystr = $this->crypto->decrypt($settingsfrdb['nexapi_key']); 
3462
+        } else { $nexapikeystr = ''; }
3463
+
3464
+        if (($settingsfrdb['nexapi_secret'] != '') && ($settingsfrdb['nexapi_secret'] != 'undefined') && ($settingsfrdb['nexapi_secret'] != null)) { 
3465
+             $nexapisecretstr = $this->crypto->decrypt($settingsfrdb['nexapi_secret']); 
3466
+        } else { $nexapisecretstr = ''; }
3467
+
3468
+        if (($settingsfrdb['twilapi_key'] != '') && ($settingsfrdb['twilapi_key'] != 'undefined') && ($settingsfrdb['twilapi_key'] != null)) { 
3469
+             $twilapikeystr = $this->crypto->decrypt($settingsfrdb['twilapi_key']); 
3470
+        } else { $twilapikeystr = ''; }
3471
+
3472
+        if (($settingsfrdb['twilapi_secret'] != '') && ($settingsfrdb['twilapi_secret'] != 'undefined') && ($settingsfrdb['twilapi_secret'] != null)) { 
3473
+             $twilapisecretstr = $this->crypto->decrypt($settingsfrdb['twilapi_secret']); 
3474
+        } else { $twilapisecretstr = ''; }
3475
+
3476
+        if (($settingsfrdb['flowapi_key'] != '') && ($settingsfrdb['flowapi_key'] != 'undefined') && ($settingsfrdb['flowapi_key'] != null)) { 
3477
+             $flowapikeystr = $this->crypto->decrypt($settingsfrdb['flowapi_key']); 
3478
+        } else { $flowapikeystr = ''; }
3479
+
3480
+        if (($settingsfrdb['flowapi_secret'] != '') && ($settingsfrdb['flowapi_secret'] != 'undefined') && ($settingsfrdb['flowapi_secret'] != null)) { 
3481
+             $flowapisecretstr = $this->crypto->decrypt($settingsfrdb['flowapi_secret']); 
3482
+        } else { $flowapisecretstr = ''; }
3483
+
3484
+        $nexapiurlrecsms = $settingsfrdb['nexapi_url_rec'];
3485
+        $nexapiurldelrcpt = $settingsfrdb['nexapi_url'];
3486
+        $twilapiurlrecsms = $settingsfrdb['twilapi_url_rec'];
3487
+        $twilapiurldelrcpt = $settingsfrdb['twilapi_url'];
3488
+        $flowapiurlrecsms = $settingsfrdb['flowapi_url_rec'];
3489
+        $flowapiurldelrcpt = $settingsfrdb['flowapi_url'];
3490
+        $gettelsendername = $settingsfrdb['tel_sender_name'];
3491
+        $getnexsendername = $settingsfrdb['nex_sender_name'];
3492
+        $gettwilsendername = $settingsfrdb['twil_sender_name'];
3493
+        $getmessagesperpage = $settingsfrdb['messagesperpage'];
3494
+        $getnotification = $settingsfrdb['get_notify'];
3495
+        $notifyemail = $settingsfrdb['notification_email'];
3496
+        $includesmsinemail = $settingsfrdb['getsmsinemail'];
3497
+
3498
+        return [$telapikeystrdec, $telpubkeystrdec, $telapiurlrec, $telapiurlstr, $messagingprofid, $nexapikeystr, $nexapisecretstr, $nexapiurlrecsms, $nexapiurldelrcpt,
3499
+                $gettelsendername, $getnexsendername, $getmessagesperpage, $getnotification, $notifyemail, $includesmsinemail, $twilapikeystr, $twilapisecretstr, $twilapiurlrecsms, 
3500
+                $twilapiurldelrcpt, $gettwilsendername,  $flowapikeystr, $flowapisecretstr, $flowapiurlrecsms, $flowapiurldelrcpt];
3501
+     }
3502
+
3503
+     /**
3504
+      * @NoAdminRequired
3505
+      */
3506
+     public function getuserbytelrecwhurl($recsmswebhookurl) {
3507
+
3508
+        $sqlrec = $this->connection->prepare('SELECT `user_id`, `telapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `telapi_url_rec` = ?');
3509
+	$result = $sqlrec->execute([$recsmswebhookurl]);
3510
+        $datafromdb = $result->fetch();
3511
+        $result->closeCursor();
3512
+        $ncusertelrec = $datafromdb['user_id'];
3513
+
3514
+        return $ncusertelrec;
3515
+     }
3516
+
3517
+     /**
3518
+      * @NoAdminRequired
3519
+      */
3520
+     public function getuserbyteldelrwhurl($delsmswebhookurl) {
3521
+
3522
+        $sqldel = $this->connection->prepare('SELECT `user_id`, `telapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `telapi_url` = ?');
3523
+	$ressqldel = $sqldel->execute([$delsmswebhookurl]);
3524
+        $datafromdbdel = $ressqldel->fetch();
3525
+        $ressqldel->closeCursor();
3526
+        $ncuserteldel = $datafromdbdel['user_id'];
3527
+
3528
+        return $ncuserteldel;
3529
+     }
3530
+
3531
+     /**
3532
+      * @NoAdminRequired
3533
+      */
3534
+     public function getuserbyplivorecwhurl($plivorecurl) {
3535
+
3536
+        $sqlrecpl = $this->connection->prepare('SELECT `user_id`, `nexapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `nexapi_url_rec` = ?');
3537
+	$plresrecsql = $sqlrecpl->execute([$plivorecurl]);
3538
+        $pldatafromdb = $plresrecsql->fetch();
3539
+        $plresrecsql->closeCursor();
3540
+        $ncuserplrec = $pldatafromdb['user_id'];
3541
+
3542
+        return $ncuserplrec;
3543
+     }
3544
+
3545
+     /**
3546
+      * @NoAdminRequired
3547
+      */
3548
+     public function getuserbyplivodelrwhurl($plivodrurl) {
3549
+
3550
+        $sqldrpl = $this->connection->prepare('SELECT `user_id`, `nexapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `nexapi_url` = ?');
3551
+	$ressqldelrec = $sqldrpl->execute([$plivodrurl]);
3552
+        $datafromdbdr = $ressqldelrec->fetch();
3553
+        $ressqldelrec->closeCursor();
3554
+        $ncuserplivodel = $datafromdbdr['user_id'];
3555
+
3556
+        return $ncuserplivodel;
3557
+     }
3558
+
3559
+     /**
3560
+      * @NoAdminRequired
3561
+      */
3562
+     public function getuserbytwilrecwhurl($twilrecurl) {
3563
+
3564
+        $sqlrectw = $this->connection->prepare('SELECT `user_id`, `twilapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `twilapi_url_rec` = ?');
3565
+	$twresrecsql = $sqlrectw->execute([$twilrecurl]);
3566
+        $twdatafromdb = $twresrecsql->fetch();
3567
+        $twresrecsql->closeCursor();
3568
+        $ncusertwrec = $twdatafromdb['user_id'];
3569
+
3570
+        return $ncusertwrec;
3571
+     }
3572
+
3573
+     /**
3574
+      * @NoAdminRequired
3575
+      */
3576
+     public function getuserbytwildelrwhurl($twildrurl) {
3577
+
3578
+        $sqldrtw = $this->connection->prepare('SELECT `user_id`, `twilapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `twilapi_url` = ?');
3579
+	$ressqldelrectw = $sqldrtw->execute([$twildrurl]);
3580
+        $datafromdbdrtw = $ressqldelrectw->fetch();
3581
+        $ressqldelrectw->closeCursor();
3582
+        $ncusertwildel = $datafromdbdrtw['user_id'];
3583
+
3584
+        return $ncusertwildel;
3585
+     }
3586
+
3587
+     /**
3588
+      * @NoAdminRequired
3589
+      */
3590
+     public function getuserbyflowrecwhurl($flowrecurl) {
3591
+
3592
+        $sqlrecfl = $this->connection->prepare('SELECT `user_id`, `flowapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `flowapi_url_rec` = ?');
3593
+	$flresrecsql = $sqlrecfl->execute([$flowrecurl]);
3594
+        $fldatafromdb = $flresrecsql->fetch();
3595
+        $flresrecsql->closeCursor();
3596
+        $ncuserflrec = $fldatafromdb['user_id'];
3597
+
3598
+        return $ncuserflrec;
3599
+     }
3600
+
3601
+     /**
3602
+      * @NoAdminRequired
3603
+      */
3604
+     public function getuserbyflowdelrwhurl($flowdrurl) {
3605
+
3606
+        $sqldrfl = $this->connection->prepare('SELECT `user_id`, `flowapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `flowapi_url` = ?');
3607
+	$ressqldelrecfl = $sqldrfl->execute([$flowdrurl]);
3608
+        $datafromdbdrfl = $ressqldelrecfl->fetch();
3609
+        $ressqldelrecfl->closeCursor();
3610
+        $ncuserflowdel = $datafromdbdrfl['user_id'];
3611
+
3612
+        return $ncuserflowdel;
3613
+     }
3614
+}