{"FileModelVersion":{"Major":1,"Minor":0},"ItemDictionary":{"0":"aea2161d-ff43-4b10-ac0e-933fb5809faa","1":"9d2ff3d6-abc2-4378-b47c-cad42d4af1bc","2":"df687d3b-ad26-49bb-86be-ed694e880252","3":"77642c0c-277f-4a7d-9d08-f3f161d8e69c","4":"6ae7c977-3f62-414e-98aa-5dc0da89b376","5":"87c616fa-b498-4858-8439-68411a0a62e3","6":"6d26fe2d-c9ce-4d86-b26f-78afbd22b5b6","7":"f3a1dc17-764c-4435-a83b-17914d5dac6b","8":"2c557c38-4136-436a-bae2-c5cd1102690c","9":"00d31a4d-d523-43f1-b5c2-f96b33a69a99","10":"cb04f082-b5d9-411c-86da-010123dfb5bf","11":"edd65760-896f-4f6a-ba8c-eb2b072635f4","12":"2b0444a1-9ec4-4c01-804e-a6cf07cb176d","13":"8ccc8d39-5a97-4cb2-b708-d3ffefd5dc19","14":"f29b1372-f4f3-4305-aa85-5fe214361fb7","15":"26a604f0-071c-49ca-8a0e-e1d9c959b1c5","16":"23b1fef3-0556-4a51-88fc-d4a223c3e934","17":"7aacb57c-355d-4345-9d35-b34850058753","18":"c68d0ed7-66d1-42cd-974e-01aa0f36c847","19":"0d1d97b5-3c99-45bf-8a5d-e7a624b3ddb6","20":"62e2b663-c26f-461e-ae26-43068010f993","21":"052432ff-4709-4cfc-b3b6-82a34f6757ca","22":"ddee4f0c-e9de-4a73-b87f-c34d674450cb","23":"fa3b5219-d4bf-401a-a105-c0332d8496d2","24":"930ab796-f1c7-47f0-bf04-0ef6ae44006b","25":"3ed4d2a4-62ce-4807-b516-6da685804e1e","26":"5292dcab-a674-467a-a21a-702d2c2a152b","27":"60c591be-98fa-4844-b55b-6d55bc16493e","28":"f003eae6-6818-4da9-a1d0-6e4f1677d49f","29":"a745d992-b62f-4014-a524-9e5953ccffd3","30":"1bb2d71d-cd5f-4a23-844b-8005dec7bd5c","31":"cdabf95e-e712-4a93-8214-79d2d9a809a6","32":"ef545d00-c22d-4eed-bd76-74d6432e2974","33":"742c7d8c-d03a-49d8-bc71-46f5f828bf72","34":"1725c9ed-29fd-438d-97f6-8f645a1865d4","35":"c2dfcb78-dd5b-4406-8c95-0f884c4d89e1","36":"e00c4398-a6e7-4330-813a-b3c3ac8da3d8","37":"42033da8-485e-43be-99db-ffe2492767b4","38":"10a165d1-1333-4c57-a942-b857542c4b45","39":"ccb4fd67-d791-4b1f-80cb-42346313254e","40":"a6edccd7-3ec8-419c-9405-703e8b4bdc8b","41":"f8594608-c8c2-4544-94cb-8c0c78fbb4b0","42":"16052cd0-6fb9-4c1f-bfcb-2574d21434f0","43":"3e0a0bd7-7805-4e8f-836e-0cbcfee512af","44":"956b9974-b044-494e-b5e4-d1cdbc5d5327","45":"3deb411a-953b-45a7-955a-35a96ef4e86b","46":"f6d7596c-e800-41e3-9076-077fda224aa1","47":"9de26959-6d51-4a6e-b575-ec47e6bdafaf","48":"8e9327fb-66d3-45ea-af24-d5f9d60e2cdc","49":"e6bb2b09-daee-432d-9aff-45fc63d24fca","50":"4b334c3f-aafd-440c-9c1f-02a98fd18ab5","51":"a56e0dcf-94e4-48a0-b8b9-5e33e0ab69cf","52":"75a78e48-0848-45ee-9df2-e2b328c1933d","53":"275b820d-dd55-49aa-9b09-48b58e8ab5da","54":"c4e23d98-fbde-449e-823f-872004cadc7a","55":"862712ab-6534-45e2-ad89-1d8eb0fd26de","56":"6f0efd3e-c241-437c-b25f-92dc1e83332c","57":"564a75cd-8d7c-469b-a4b3-053d772b7d9d","58":"4576e3fe-8eda-4e24-9823-eb68e4a9c953","59":"d15a334b-d951-4991-89f0-cdf2599a9699","60":"7fea28f0-eb30-4700-a592-c3eb1ffc7b0e","61":"2a508eb8-cc74-43bb-9643-afd0c518d09f","62":"0d466e68-7a97-4e27-a73c-6bda4010f7e7","63":"7475c363-fa60-4348-a2e9-f3e2329fc20a","64":"ad965629-9b13-448b-ab7a-7e69afad2fb4","65":"02ea8321-aaff-4d03-8c50-20c241a82632","66":"0083a83e-a716-4c67-aa49-d14fbcd00248","67":"b74c27c0-081a-45b7-8e81-cdd84ff33490","68":"50626002-c1bc-41a3-ade6-ee83ba4c548a","69":"2718d6ad-07a2-4d98-bd7e-9cdb2b3f70db","70":"1d206e3b-4641-4002-9d3d-940036154408","71":"fdab4d92-8519-4090-b7e1-b794953b44e4","72":"8e2cb19b-db70-41f4-b398-62c38fd22d2d","73":"b9fabb99-ff73-4018-8521-08441d2f18cf","74":"b50989c9-03d4-4201-a8d4-459dcea86b05","75":"a70f015e-a9fe-45f1-958c-fc501ec7e2ea","76":"89c3beb4-0fa3-4c3f-a065-7e53497cbe64","77":"59e0ca88-f390-48d0-ade1-0c08f629c4f2","78":"e3d22373-253f-4f48-9638-77d756473c6b","79":"c5bb6398-319b-47c1-a5ef-c6ce9af4e9a6","80":"261a60dd-5a01-4e6f-b7e8-a56bb21e2ad9","81":"12e26b7f-d42f-4af0-b134-129f8aed8a90","82":"ad3867b5-6146-44b8-a539-6ab08311e5fe","83":"f18d051c-2aad-4287-823e-997499716da1","84":"4b4bdd8a-e01c-4d77-8228-e19e241ad623","85":"03d79bec-7af0-44e7-a012-f2e2dcacff30","86":"4934fff3-aca3-4fb3-b242-60afbe8d4439","87":"f3f7620a-f281-4a3a-a75e-0106ef9c4eb8","88":"4363ead8-3cdd-4d95-b461-193dc928790d","89":"c384fa33-67c3-4915-a878-4245f4cdcecc","90":"a4fdfea1-1254-4f7b-9346-124dddb595bd","91":"478efa9f-5743-4238-ad2e-750770d7da11","92":"d22f3d7d-7507-4d30-b884-9bfdc68d59be","93":"85cd3795-9fb0-43ce-87dc-ff07f2844dd3","94":"2f87caef-8e9d-468f-925e-b0bf98e071f3","95":"c624a6cd-31dc-49d3-a1e9-5482d06acbc6","96":"09d28633-cff1-4cc4-9e11-161f350dbf60","97":"228e59f1-b3de-471a-931f-45735ae6ba7e","98":"dc8f69fe-f97c-404f-996c-1b934afa17b5","99":"b3ea8191-f5c9-42f7-b301-fc3144c8d2a5","100":"7836f02d-9d50-476c-8701-d0e4eda43de3","101":"66e3efae-4d73-4f4e-adbd-85e2573580e4","102":"3b67ec16-9ccd-47de-8753-53617df90c61","103":"c3f26ef6-22f2-4a04-bb49-aa66cc949188","104":"462f80ed-2611-4cf8-a204-c7a66ea241da","105":"2a8501f7-2463-441c-901a-57d1a6573fe6","106":"efb55635-4841-42b3-98f0-9aed90b2e826","107":"649fc6c3-2f0c-4197-8777-e44e86696d60","108":"c107f90f-68bb-4f16-b023-960e72e1fa3a","109":"d13556da-e6dc-4c49-a9ec-b47517709da5","110":"7b672666-b275-454f-968f-506e93987800","111":"0a1aa046-e841-4813-907e-6567e596a079","112":"d7d56a2b-bc35-4c89-87de-38c99e7d1c2f","113":"04d60765-2c11-48eb-b9fa-c3eb847b91d5","114":"23453c1f-3946-4db0-a75e-f8b6dab12569","115":"86a9327f-50c1-44d9-aa06-08dc3f25b433","116":"1dd8c1cf-ce0b-469d-9924-455dae4958f5","117":"832b5533-fa5d-45ec-ba4f-2dca1e8f0bba","118":"08d6ef2c-d97e-4b40-a5e3-0485b945f88b","119":"74f9b43b-14d2-433c-acc0-8f0322427daa","120":"e8ae14ad-159f-4d33-86f3-408e01aa4fdd","121":"011e4de9-c66c-4ce6-ad22-2fd6ac9df2a6","122":"00b9dfc4-ac8f-4fee-bbe0-a76aeeb75627","123":"9e8fd38f-a406-4d87-8186-de37979d4d20","124":"6785811b-60fb-48f2-ac17-642ab69d1dde","125":"703d6094-850b-45fc-a01c-25ceddd49dcb","126":"3d6d4fca-b7a9-44f3-a888-d3e43a79331a","127":"52ff74a3-3d0f-4b2f-bfe3-23ff12f74354","128":"b2a95e90-cfad-4f43-9860-513d31f47374","129":"62fc0360-f8ff-4ee7-90f2-92da6a26640c","130":"ed9c1986-99f7-4c15-af23-d735442a286b","131":"3d8c87b7-2488-4982-860b-e7eda8d5d590","132":"02666d0e-e9a9-4c9c-854b-a35972a3be64","133":"413da151-24e7-4e94-b5c7-ce7994252586","134":"f49d4249-2995-4a81-b67c-6abbce092b8f","135":"3108f579-7c8e-44e5-8cd8-2fe107afb3ea","136":"24fc1a2c-66aa-4152-a0d8-7d0dd5645151","137":"9233e3ff-3040-45d3-a2de-873e41a1df76","138":"24e5e3f7-ad7a-4083-abff-0a262f541dd9","139":"6ad7cafc-e88c-4722-88c0-f5acba190527","140":"5bd210b0-2377-45c8-9287-ec607acbbe60","141":"faa18ecd-0edf-4167-8c30-8cf2b95f42e1","142":"fd4946a4-1633-4627-9728-c1b5dd276ddb","143":"e0f5e9a7-a384-48f9-9ec5-fe6aac81c440","144":"acb4bf6e-b10e-4a6f-b9dc-b22be888c096","145":"575c59bf-c5be-4558-8ab7-7bb672f62ffb","146":"ef753ff4-2d7e-411c-880c-08222dd6a4c5","147":"e9444d6d-714b-4cd7-aa9d-9527f425fdd7","148":"ecbcd3ac-9937-4351-abd8-a727c0d0ad77","149":"ae863b85-af05-40ee-a092-c97eb733d6fc","150":"565faf2e-346d-4ba5-b9d3-99601ad33c74","151":"375f4305-47bc-4abd-8c68-b67cb50e7036","152":"f45bd228-43c8-482c-824c-71e48e8ef27a","153":"7676bdb0-2cc4-4966-8d71-b1025244d911","154":"120b90ce-8434-4e44-a32f-7e5da874eaf7","155":"1cbba583-ef54-4de9-9364-4e7371bf4ac3","156":"973c1ee1-2dc4-4cd7-be7c-32a37cb405de","157":"d2cccaa0-415a-413a-964e-ff747f20b964","158":"74c982f4-305f-411e-a8b4-d193315ab3bc","159":"9d4fa368-3e44-4262-a213-4157a14d3677","160":"05537cc1-9df6-4395-a3d4-1db6226c62b5","161":"7161f887-4de6-4b5e-9066-f39d6cad9f16","162":"382a7650-2231-4867-96e4-8d97242a4741","163":"788700be-1e74-46d7-9e34-1a5ec2747548","164":"cdca5dec-eeee-4849-9b2e-73b23e216465","165":"cb5bfa64-c3fd-435c-b0da-3891a86b20d2","166":"2e86af10-00e0-4dad-9cac-3b87ca9e468d","167":"d83e6a25-e6c3-49df-9d0b-de3c5edb579b","168":"6ebdb4c7-5626-4051-a91f-21fe6e636263","169":"107478fd-2a4d-4fb0-81b9-1a448d3ba987","170":"2c56eeab-7432-4c31-b413-68b0ee7e2d7c","171":"8f461b33-37cf-4049-b04c-4aa0d2292e2d","172":"c310aa38-b723-4a66-8700-47cffe7647f4","173":"b7c60d19-d652-4fcc-af1a-85409c9c131f","174":"c5cec892-2e43-4905-9d28-44fc8ecb5cc7","175":"213026bc-fd7a-44e6-b543-a31c219aaef0","176":"e63040c9-0027-4fd3-be30-67fe3e950140","177":"2ae437c8-afe6-4d6d-9562-0423227878b2","178":"b20baa46-0a1c-482b-a3f9-bbb8c14520e2","179":"19945f75-8353-45e1-938f-a548fa05e05e","180":"543fd6c7-fcf3-4df0-a4b2-891a8574b434","181":"ce494e45-5ff6-48a7-8936-30163c58ed99","182":"bc292fe3-2330-4a01-8615-412a19fd7f6d","183":"87142f81-71ce-4d60-9b81-4fe5674112db","184":"a97e03b0-e8da-49e2-9913-ad8c1826d869","185":"a5872d78-28e7-48a3-b452-ceb29de035cc","186":"379c94e6-7f27-42ab-ab45-66e3533ecde8","187":"ec49b6a2-244f-4cfa-b49e-8dd19213b280","188":"9a3f63f4-48b6-4fe0-9f59-9fac3d073750","189":"645a71be-2a80-4228-b036-9de863576708","190":"8d70c55b-d200-4f56-a159-28646427d4b1","191":"d2550253-f55a-48e2-8f57-c3931c0359da","192":"47c8ddc8-9dca-4363-a39e-95dd28008e30","193":"1b672c70-b108-4ec9-b6f6-9f817adf7250","194":"4bd38234-b485-4a94-bc2d-d3fc80d89955","195":"9ebc44a7-5c1c-484e-8b06-ae390a48db17","196":"f9f91495-3c3b-48e2-9f4c-a53b01c47f6c","197":"54836777-b634-4a21-ab1e-2b0e426b640f","198":"e34ec225-dda1-47fc-b56a-746da1965349","199":"9aa55699-b91d-4e4a-921a-4b60569824bf","200":"64109192-fd8e-422b-a9e8-74295d3d74ea","201":"1aa62ea2-cb83-4778-86f0-4bd96332842c","202":"75ffb576-34c6-4dae-87a6-0f45d6482070","203":"6c37df0b-7eaf-48d4-85d8-2453014d8edf","204":"8d948200-242c-47c3-b46a-ecdf40f7b39b","205":"c0afc8a9-5c49-4f15-8834-6e39ff144da3","206":"f71f9cfc-a107-4404-bb2c-7dc30e10e8da","207":"9d43ff24-4165-4c48-bc5d-ccb89b0667bd","208":"e3bffdbf-01eb-4309-bdb5-4358662eaac4","209":"b06788d5-4715-4168-8f7d-d6380f73fe54","210":"9a0d25cc-f5c2-4780-b674-38fe17e73f8e","211":"1576f21e-9ca2-4f29-8b14-53ce98205a5b","212":"78514976-87cf-4d89-85cd-9d0df590a317","213":"d7e6366f-3f5c-4dbc-a1fc-b63de74ed7eb","214":"76dfe171-525a-48ea-8652-b7537aa06572","215":"edb1b2eb-dac7-4c4f-8967-35f61c75fd93","216":"da80769e-0a55-4e05-bf58-1541842f4e82","217":"b9457302-db10-49ad-98e2-1c44cdca24b9","218":"ea3d81c0-c862-4e06-90aa-63f746e5ce6f","219":"552785c2-43cd-41e6-a13a-818388b93968","220":"eadfab64-b2a7-4704-8241-37ae3b42f705","221":"fc4f02ab-2e74-4deb-8d83-ca3da65c99ff","222":"edf0442a-4976-43f4-9a9c-66e43f0353ff","223":"197f8869-1891-4e7d-9465-97b9183aed22","224":"1af0aadf-7edc-401a-9750-0074b8b46b6a","225":"51cfbd8b-5223-4101-b4f3-f62872a82b58","226":"83e8cf5c-ad5a-4cfd-a0d0-eb4ca9f48127","227":"dfb470c9-e7f2-4530-9b5b-3de8214501da","228":"3bff8428-7481-4847-b00e-f0e49233b86d","229":"819ef76e-1023-4f06-bfb1-96cd3e58ba88","230":"94c39cef-53e1-41b2-bbc6-94a869d79c64","231":"267248a3-baaa-4653-83b3-ce478d600b17","232":"043e9b00-4a2f-41b8-bf2f-4aaa4442f138","233":"d5016f16-6431-4e8f-b0cc-5f0f400b151a","234":"01a87958-93cf-4efa-857f-10913b0573d9","235":"515ee20d-20d8-4195-bea5-213e6f1fd929","236":"ac5dda48-2bbf-453b-a4d5-517ae78499a1","237":"4c24445d-a29b-446e-b03f-29e570e9d47d","238":"91d167b1-652f-4ac8-adc4-973b548ccd5d","239":"f94702c9-cb55-49e3-8cc4-138288fa1f13","240":"4b2109f7-abfc-46b7-b752-f9423b6f2e35","241":"6ebe5e2b-ef9a-4849-b234-131b25579adf","242":"33b65ccc-58a0-487d-8b68-a997a71b0bfe","243":"25575b2b-223c-48f3-ab6f-7133d26e86e8","244":"99a71734-3128-4535-bb9c-f69de5277f49","245":"2d546425-921e-4900-b249-fa5a1c7d5513","246":"da59d582-9254-4091-988e-b670dcabe84a","247":"a160804b-15cc-46e2-8ffb-401c2aa01de6","248":"c27e460b-f3c3-4716-b20a-69f766d27f34","249":"6d0d9986-5871-4e5c-a415-6457552595eb","250":"663d3348-9700-487e-a30e-f472d933e859","251":"47da23fc-17bb-4a66-9c6d-fb66fddb3be6","252":"e0f9e669-4748-4cde-be95-58e47e094253","253":"6209370e-abeb-4ec1-b523-dc21ea33fe0c","254":"91cca4a9-a40f-43eb-9ba5-34c738b03d1f","255":"542cacd4-c366-4a76-8d01-4ace6c5ce619","256":"fb1fb4c7-78e8-47e7-8ff1-34a4afcd10c7","257":"b6ac5f2e-907e-4926-88c0-355d30c6b7a5","258":"8acc506a-41cf-4b62-ab1f-e6f523baf75b","259":"7dc67bed-fd0f-4145-9525-5840bbcc4822","260":"9c09eee2-e4bd-42ea-aaec-43a6d1451db3","261":"db2a5655-6b32-4877-8285-40c6ddc9ba3c","262":"d73b886e-2498-4c17-9346-a85f77d4a454","263":"9385face-922e-4158-9632-7ab9fcb00166","264":"464187d2-ff5c-4d42-9937-0206cffbd883","265":"ef2e81c1-d06d-474f-b12c-14de1702db1b","266":"57c4c674-9c66-4ab7-9067-81477824785d","267":"31047680-b58e-407a-9f39-1b59fd656e13","268":"8996b3c3-2569-473e-9d28-2b2cb17bc7a3","269":"139d4b6a-2b6b-4bfa-8d00-1bc8e69923fd","270":"c0542188-97dc-4cd5-a275-ede25d9797ba","271":"5031a9db-aa48-4903-9b16-75a54f5959ce","272":"f1746662-adec-4054-98bd-94b553bc6c6d","273":"3d82f1a3-ad2a-4e81-a4e3-cb88c968f6e9","274":"3c3d8cda-b79d-47a5-9bc4-378daf3d4358","275":"48678652-cad7-40ae-918f-af432b37fdf9","276":"1ab5006c-9156-4605-a670-68e1c2eb2e9a","277":"b799b159-3bab-45f8-92e4-3107bca46513","278":"e581b7dc-da92-421d-9262-a5781c287728","279":"ad861a50-c881-4aa2-839b-d1248a810c77","280":"172c1b1f-9dc0-41c8-885c-aba814e4fe08","281":"c51bd0a9-99a7-463a-b20a-fe2e484ab26e","282":"d7e26b38-f5a3-4ae3-9486-66d63222b336","283":"45ce64f5-86ca-425a-8074-7603cdfc1d4a","284":"a3d914e9-697d-425f-abda-a6b21b4de952","285":"d4806e59-5ebe-40b1-b223-c8232691396d","286":"2e715d3f-349f-41e1-bd89-7f685939d5aa","287":"46fc87ec-0f7f-4c55-a5d3-721365c5f364","288":"6a04c57e-0076-4f30-9f99-f92eba7fcd53","289":"1240b6db-1f41-442a-88ce-5ab0944d804b","290":"e961fe5b-cce0-4a1e-8742-936ab8088636","291":"7e9abf0f-84a7-44e6-b4c3-e3da6f942072","292":"d24cdfe7-bb26-403d-a854-dfa77506e5fb","293":"5b609887-c1dd-407b-b3b6-b1eb35d1e818","294":"20100af6-ccd1-41ff-b7b0-5d2f6bb99f85","295":"6a7c1ad1-21e5-4b2e-bf04-cc08d639313c","296":"7cd6a310-cf17-4f6d-a818-8f29d029778f","297":"d3924bae-be5a-43a0-be19-64fc7c8d6059","298":"01e5ced6-4813-4a22-a709-f68689c494c1","299":"f817665f-e59a-43a0-9c86-0d39f64b594a","300":"ceed114a-ddb5-47d4-9b7a-ef1ce9398e09","301":"ad96a3cc-119e-4842-86cd-c633b1c702bb","302":"bf0db0d2-8582-41d2-bcfe-5299bec3d06b","303":"0b59767f-dcf2-43f3-895b-d876afed0063","304":"3af29052-8fa5-4998-a0e0-b3ea188d8860","305":"7d005e15-c63a-44f0-b12e-b8599a9f0424","306":"f7042d78-d7ae-4a0b-b273-197813c61648","307":"936f57b0-0376-411e-a9c2-776681111efc","308":"042cfada-38db-4af5-a1c8-13ddce0da29c","309":"5ea1b039-9f46-45ac-b8d3-ba837f10f069","310":"58e7abb1-de9f-47f9-864b-d5c8218f1769","311":"9a564782-3a07-472b-ae06-5a7dfd123e7d","312":"06484d1a-d956-49a4-b9de-e779696d001c","313":"4c352619-ef4f-4919-b64c-ef11d4435754","314":"ae2bb239-d304-4037-b35d-eb7d3ded91bf","315":"d43b5a55-9e60-48f9-9e77-ac1cfa97dafa","316":"2ed46940-a47c-4283-bf5d-6b52132da9b4","317":"8f6dd44e-9191-4d5c-b5d3-75a6c027b360","318":"22c7914a-d836-4b41-93e7-7de9e3b9b11e","319":"154e5001-729c-4a9f-983b-342d3092a0f3","320":"310a7a9a-8d4e-4365-a877-1a8e2bac2a81","321":"86a6eb4b-cb64-4451-9dc5-94efff6b8ed6","322":"b1ef236a-9ecb-406c-b4f0-6ef0fbb50bd1","323":"e1ec6e9b-6bfb-47ec-97b9-7b2048ae8233","324":"079eb934-2fe8-4078-80c0-a4e8e60d9465","325":"ac6af740-b19c-4326-8b39-40e302789849","326":"4aa8cfcb-7aeb-430b-9726-f8bb8d8f4124","327":"6222ad4d-f6d8-48c0-9f27-10e2b64d7481","328":"bfb82ee6-345a-44a4-84e1-d6706cc8b29d","329":"dc17bd30-20ac-47c3-9c42-af6b3cdebf6e","330":"72091a02-bab4-40a7-9ee0-4c180ee24f99","331":"2be9c88d-be24-4880-aa12-ea8dc685a726","332":"c743b888-a53c-42b8-b4f0-3afc6d763617","333":"d30acc39-3742-47bd-82de-f5e1b9af565d","334":"b0c166d0-c6dd-4328-97a9-335c25fff2fb","335":"79eaae57-56e1-4bb5-a573-bb9c829e8c8e","336":"b7b36555-0ab1-4a64-ba01-3017e4809cf6","337":"1980c435-9871-470c-973e-9253f8a3b122","338":"e4dabc7e-9566-4e7d-8d28-cbec2f811798","339":"23696e3e-a6c7-4ac3-8ba8-884718dd688c","340":"9d5fa98d-ce5c-4e7a-8041-2fee8d28fe35","341":"078b7202-f156-4936-8ca3-860055a20f1c","342":"536fa669-d522-465a-a67a-589a07aa09ad","343":"30e8ed70-1885-444a-9697-a89d5c524690","344":"490e286d-0367-40f2-8ed6-60d70a60bdfd","345":"31277649-04ec-45db-adfc-4a7d0a73686a","346":"82b2446e-c12e-436a-8340-76d38372ead1","347":"b665e908-9db0-4c06-a209-1a7e9f41f283","348":"8600329a-4b2b-44c7-8e66-634b0d81ce3d","349":"38e9a85a-ac7d-4cb0-bd43-a5ae2099640c","350":"56c27d46-39b3-4ac1-b4f7-71c118d8dde9","351":"ee47622e-4eb6-4fd0-81f7-97b33adde8d2","352":"56450137-c20f-4793-972c-fb3fe56ae8d5","353":"a0a6c5da-d68a-48dd-864f-e7632f8f6fde","354":"ce79f42d-107f-4483-91c4-f5520c1d79e6","355":"4270e6e1-4d30-416b-9ed3-5bc64d574148","356":"c8fe583a-357b-4fa6-86f1-fc2de639c909","357":"cf1cffd2-27e9-45b7-9720-0025e890f99b","358":"f05191b9-468c-407b-9601-453a46fbaf1a","359":"56b29112-55f3-4e0a-9279-f6437adb2847","360":"1327d1ea-c923-44cf-85b0-eb9e1e272167","361":"6bcaa132-06af-423a-9998-8f73161a2f73","362":"9f97c3df-a0a3-4fa4-8570-094a2e65d8aa","363":"4d9a507f-84a3-456a-8b60-6d1bf48816ca","364":"5d8870cd-d401-4b52-a3dc-641c02b3b31f","365":"4f87eff7-616b-4663-8f11-cd7a7ddd3649","366":"d661f0e7-7f81-4227-80dd-f93aed873630","367":"9413049d-a4f7-4c1c-8b8a-d2f1f4c18e53","368":"79015536-c137-4c87-a337-99dcf3deff81","369":"1ddd4971-348f-4e3b-bac7-23b3082792c4","370":"45886651-bb90-4ae9-9a8b-ad6658514f37","371":"8cf1190e-6967-47cc-81c7-7258ec75d70e","372":"adb6b43b-06df-4daa-b8e6-bfaae277d6dd","373":"52e52d0c-02d7-4965-a46e-93462e083659","374":"071de01c-2838-485b-bbae-9b3acfdbcdd9","375":"8951fabe-dbbf-4b32-82e2-e36da0b92fdb","376":"4ac57cbd-c325-4d49-9e92-71ae3b6a65c6","377":"abb3675f-8a83-4f48-8bfb-3703a961c205","378":"a7ac32e0-c6ad-4663-a543-c9d3a9f2d0ec","379":"f6ab96bf-1d6b-499b-be62-21dd8962d37d","380":"ca9ca28a-3488-405f-8d74-8a609440ee95","381":"b63b85fc-685e-454f-8f93-31db02b95a05","382":"d405df88-2c4d-4b33-a051-583defdf72d8","383":"0eda844f-466e-4855-8f35-bcede968cdf9","384":"949d3fba-3b60-49ed-a83b-7180822d6bc0","385":"8fd543c2-5d64-415f-befb-acb627cc1be3","386":"063eb06e-57e0-43dd-b85e-90baed4f025c","387":"e8d04f75-a134-452e-a04a-af5172d65040","388":"344a6bb2-dada-45f3-ba66-6fdbbb57f394","389":"1c146ed1-3b8d-4171-ab72-42668e6827be","390":"8078b4a3-f928-41de-be6e-79ea410e8091","391":"a76daffa-ba3f-4c09-a947-5b694aca4448","392":"2a488683-f25b-4ecb-aea6-9a1c96d1e372","393":"8746f5b3-e2a6-4067-95bc-9da3900690f8","394":"9b8657b9-c820-43a0-ad19-25ea45a100f1","395":"58305289-16ea-43cf-9144-2f23b383da81","396":"5cf2b4da-c1b8-4005-930b-73cc39ac9d28","397":"c0e407e9-fc15-43fa-9a61-4c79a3acb6a9","398":"c94e1719-bcc7-4c6a-8563-505fad2f9db9","399":"b44be747-32cb-41b7-9e1e-21472534b4b8","400":"811379b2-2e27-4268-b821-940766960802","401":"76fb5718-e965-46ab-9f0c-c82baf648abf","402":"0e11729e-09d9-4a3c-83dd-1ee16ed4f2f8","403":"4d7a6918-e6ed-4328-a7b6-1f5e874618d5","404":"a3114f91-5182-4803-9ec6-fc1e6a7f9a87","405":"57d0b848-3bf5-45db-bfe2-447933aee7fd","406":"a91233a6-a786-4ca8-b50f-9faca5cb3733","407":"1c4e94a1-c36a-4b8f-86be-a9b2ae736a71","408":"dbd44b5e-acc7-4797-9c06-a07b19f03bdd","409":"25ae7b90-4e78-49c3-8bd5-59712fc87b77","410":"fd0d5e77-2074-4c3e-b708-4a2c0cc6f7a4","411":"1bc2df6d-f59e-40f4-ade3-83a357676123","412":"3cdfdc8b-a6ec-4aa9-bd10-0aab93237825","413":"267adeca-82e1-4578-8d3f-85608cd0aa87","414":"737a55bf-3ab9-472d-ac49-61309a13ef57","415":"c5555c97-f068-435d-8e2a-635bbc184c16","416":"bdfe2fc5-2d18-4c27-a2fe-c1a83f962730","417":"31d3adbb-83ec-47aa-b2fa-7c874d710459","418":"03fc3659-217c-4189-9da1-1d9ae8b29f2a","419":"d3f65018-2833-4746-9425-dd78590f4f26","420":"cd90265f-4593-446b-9153-623c2f339dc0","421":"cd4d4ab6-0652-46dd-b887-71714317f470","422":"62ecbf4b-19da-481e-8910-6201521c4bd9","423":"b82023a0-5f10-4648-8230-74b159f6b185","424":"ce84541b-a7f2-4d49-9074-040217580385","425":"c40ae12e-bf54-40ad-aa30-2278d78f86bc","426":"afbc81cf-82bc-4f9b-a96d-079f5cd12130","427":"094e242e-85be-433b-b64a-1c951695568f","428":"4e4e3ca6-b90d-484d-80e4-6fe6b0261532","429":"c11040bb-b868-4ab9-91c6-6a3924cd5c19","430":"a054889a-5380-4361-95e0-4482cf8bbe9f","431":"7ebdfa78-1942-457e-8f30-f178525bb5f1","432":"0e25d9c8-9b52-40db-9979-3d1492d9ffeb","433":"9e41c3e8-db93-41db-9ce3-95b248af6c68","434":"abd1afe4-2fb2-4f91-94aa-39d56f94ca05","435":"7d016aa1-e2b3-4fb0-a51e-8e01df77c6c5","436":"9f96d700-d8bc-4aa1-bce8-f284a9117bc7","437":"5ed70947-70c6-4e1d-9241-7d670874a07f","438":"caeab2bf-c814-43f2-a220-e13b6d557034","439":"d34728c0-95de-49fd-a23d-735c7084556f","440":"10c9e65e-ea35-47c9-a8a7-4de86c6438b8","441":"0639fbba-70be-4398-857c-6786dab39bea","442":"2588c8c7-5347-4d68-b9a0-c794e5fdf408","443":"33d7dc96-ff04-4178-8f67-9c380d26f168","444":"b6904047-0232-442f-b444-d99a440edf2f","445":"10e8b2e3-2a00-46e8-94d5-44c0403df6bf","446":"2d519ca8-1f12-4a8e-9340-aa6648b5e799","447":"0c03433e-8947-4e7d-9dec-793526fe06d1","448":"f5d2db25-114e-473a-8313-96831ccd011e","449":"e71e6f97-fbe8-4bf5-9645-d15179ba0c17","450":"288e3778-900b-4bfd-a455-e94ed75c6ec2","451":"3cc75979-18ac-46c4-9a5b-25b327d99410","452":"ab699540-efc8-4592-bc97-204f6a874b3a","453":"6c0bab88-aa88-4825-9cf5-55df36aa12b8","454":"c7a19161-b361-4074-8c51-2398a0a70d1b","455":"710ee212-563b-42f8-acd1-57515479524d","456":"d51549fd-2e38-4271-b85a-afded45400df","457":"9a0ae372-beb4-4009-b14e-36ed0715af73","458":"f72b5a6e-081e-4889-b041-a90b2ca7ae4e","459":"24f6df16-98dc-4176-93cf-456a5e4d7ab8","460":"0a8d8d02-5d03-4488-8431-e75602fea1e4","461":"c6497cec-51b5-4d94-940e-107990a25afd","462":"d6c8b7aa-bdcd-459a-a2ec-fbbba09cffcf","463":"8331c71c-5725-472d-ad2e-65e4110982b7","464":"3a59c6f8-59dc-4a12-8fd3-c509a9d84906","465":"a8dcd83f-ec5f-40fc-901e-0bf45a8e551b","466":"2078227e-d38c-4f58-abd0-6f4878806a9f","467":"9710b923-9e8c-4762-aa74-bffefb263a7e","468":"576e79a6-07e1-4485-903d-e5929d512c08","469":"953f1c50-c18f-43f4-815a-c19e5aff7af7","470":"ba1d3193-abc5-4b8c-a512-e8fffe95ad99","471":"968caa09-3778-40bd-97f9-0efffa676803","472":"48122725-f6bd-45e5-a6a4-40fa2ffee1d4","473":"b1ec687f-252d-4b35-b57f-a0cf0bb72212","474":"8ca7ff43-d384-4588-a069-48ec57765db0","475":"5c76e88d-29e4-4078-aed2-7686d5b1eec7","476":"362cf2d2-533d-4622-b2c1-490843662d97","477":"fbf439af-f29a-43ac-ab5c-b6608bac3933","478":"37bdb55d-7df3-4fe1-9368-0f6b4984efc4","479":"4ff9cbaf-1c15-4f02-b5af-1f2cc409e52f","480":"9d9e187c-1a60-4f91-b0e2-986eb0743262","481":"a6ae94db-ecaf-4fc9-ac0e-c5b72a7a95ec","482":"87a14a81-8fe9-409c-91d3-895c6dbe4782","483":"2d43ca1f-3b8b-4afa-8e5b-6aff25bab3a0","484":"c34cf6d8-e1be-4463-9ac7-13f6048ea708","485":"dd5186fb-4307-4484-9899-472edbf46343","486":"e421db99-97a7-470f-a058-9387731815ea","487":"88b62167-63ae-45aa-8c8d-fb496b7c13e5","488":"28e3bb10-95af-4c63-934b-880f03d52be0","489":"cd06f23c-9a61-448a-864e-529298e5bbd1","490":"933a73ef-fb60-429f-9126-4f7d2a01605f","491":"3d540639-ac08-4e71-a233-3b483f594c1b","492":"c2dd399b-3563-496c-a7f3-5cc9984e2bd7","493":"279f21cf-ea0b-4e4d-9b89-cff016a72e24","494":"8f9dbf41-6c2d-4e7b-855d-b2432c6942a2","495":"649f2aec-6f59-4157-ac01-0122ce2e6dad","496":"9411e401-27da-4546-b805-3334f200f055","497":"9af822b3-80d9-46bd-9ce0-e6e5c2e61da4","498":"b5d46bb7-d49e-42f6-817b-323fbf6d62b0","499":"911fe222-f9b2-4892-9cd6-8b154d55b2aa","500":"c6176cb5-0a32-4d68-a749-8ee33b2230c1","501":"2a3905ff-2030-421d-a2bf-90fba71c1c5e","502":"a3ea61a8-018c-4277-afd9-ac0a34faa759","503":"62f61c31-a453-44ce-87a2-b5ce142fb052","504":"95a626e6-f1b8-491a-aa31-8de5a2beb513","505":"51b37dbf-2beb-425b-a817-89434838c857","506":"8c2aaf82-442e-46a7-9ea5-1b7862cacb87","507":"ba5c8d03-9093-47a9-a8cd-b721ceeee1dd","508":"967f98c3-d708-4602-9c71-0f34562cdfca","509":"2cdbdb66-132e-4202-90c6-e0a2d8022cc6","510":"afb33fc2-3071-408a-b312-da22478c0a14","511":"f2df1943-1ebf-47c6-9b81-ad613b7c5d5b","512":"272f0dea-8aac-4ca9-98e6-79897e7df0f9","513":"7dd4933f-8a0d-478e-b0a2-1e2c2f1c6957","514":"1e5247be-25c1-45bc-92a6-e2ab1bfaaa8c","515":"d7b990f8-86fc-476c-bc8d-44ba9ecd1c05","516":"7530d72e-1b5b-408c-9abc-59957a90970f","517":"902446c4-ff32-4118-83ac-1f4bf89c56d1","518":"29c40e04-59fb-45dc-a80b-31ee1c4f82ac","519":"a4b0d100-c480-4697-b606-489d80a6d376","520":"90c9965a-1dcc-4786-a2d2-6299fed7260f","521":"b2ca635d-350c-4977-b8d4-2b2dd28cd2d7","522":"a6cfd078-bc39-4ad8-a47f-49097913a27b","523":"ad3e7665-cf63-4135-835f-2f743c69bb36","524":"27692d7a-c05f-4ac4-ac98-f25e359faebc","525":"8aceae65-2dce-44b7-94b1-b4bd34d287a5","526":"2b1b3011-0b81-472e-aa42-26383f453268","527":"f1a3f1bd-b5f7-43bf-9b72-c7a060c24f73","528":"efb3284f-bedc-453f-9519-043f77f2e85d","529":"0d915e65-114c-4945-9585-ac58ad90223f","530":"791dfc7d-24d9-4e87-b639-d19561b6cb26","531":"aa355fd9-295c-43f3-9f11-7a781a9808b0","532":"049b9d0c-1cb3-4511-be7f-9fad6e0a607e","533":"395179c1-37a0-4250-851b-5bc19fd601b6","534":"35abb89b-33b8-4cb4-b3d0-ee132247de8d","535":"0c64d302-c6df-42eb-a0ff-7c90f867ba4b","536":"174b5b41-b70e-485d-b00a-a61cc9826b2c","537":"69feebc3-e241-4dff-a000-736def80c851","538":"c4ef6072-822a-4fa5-b618-e7fc0508c499","539":"b148f5b4-e237-41a0-a1a3-30c455321149","540":"729b7ea3-59d5-4182-9177-684da6fbe0a9","541":"e42929f1-ccd0-4fff-8413-6cb94cf08405","542":"bb0337d9-69f7-48f1-9c12-2de83ceff42d","543":"c34145c5-bc8c-48c3-bafb-ebda44f1e300","544":"04993e98-6b77-46d3-ad80-5278550e9b65","545":"5e73653e-519c-4f13-9f69-1d80c19151d8","546":"217d4bdc-4b0d-4986-be2c-de98efd00f62","547":"7434948c-1b56-4dd0-bb0c-a3d291653f09","548":"d3a729d9-c25f-419c-ba7e-63cd2cac1a4d","549":"09957acb-9916-41ea-8799-66b0359ccb31","550":"84cf449c-e1ae-49a4-a170-c63464106cfe","551":"13d4b7b9-897b-4c71-be66-13aba3c3310b","552":"699ccf4d-45a4-4635-ba4d-850a40ba6e0a","553":"0bc8fd97-b7ae-4a59-98b8-2f60fe4cf874","554":"87103032-b0e5-47c4-a632-ba33da2cbe1b","555":"585d7b93-955d-4099-b9f5-2ea41797f419","556":"0375d846-a203-4813-a330-0d8fd1e6586e","557":"3f349a8a-e5a1-4f43-9cc4-cea2f0f5b623","558":"ea84e01f-5fac-4269-9754-c2c934e4b7d6","559":"48360916-a894-4bd8-b8b5-4595bb7ccf2e","560":"787524d3-1b60-44d8-bef2-d42156c55446","561":"d9952f54-1e40-4e5e-87af-b1011ca18b83","562":"2e691f79-065c-42bb-879a-a91a3cda67e9","563":"37999ce4-4189-4d46-bd77-4b7b5ec4be62","564":"573f6de1-1379-49f8-8342-588bd81a50b7","565":"a2922c8c-4da3-433a-a6b9-85ee0620d876","566":"f163ed91-e4c2-40f0-bb83-0540f4dc9706","567":"6bc790f3-c15a-4aa4-adb1-a1f9c8265b4b","568":"ec907a52-f1aa-40df-8d63-cf1911a42abc","569":"867cea4e-6ea4-4fe2-a4a1-b6230308f8f1","570":"242e07fa-399f-4caa-bfc2-1b77bd2bd538","571":"49714981-369a-4158-aff6-e562ee5f98d5","572":"6e5c9f1d-160b-49b1-9b74-606d2f695c7e","573":"c61c1c19-cc53-49a2-b207-9de6b9ce328a","574":"78b81c0a-44df-4c24-b2a5-5d273737da60","575":"525d85fc-f4d4-49ea-bebd-dc51bc562adf","576":"98467918-ec0c-47e1-8ce6-55949326eb4f","577":"983ebe9d-535e-4bdb-a37f-6b681a96f5a3","578":"1a48f832-e111-430b-9639-38bb63ec749e","579":"5f579567-d069-4a88-b866-d9ef5d85c8c5","580":"1fcaab1e-18b8-4eb0-a36b-0451b58cf403","581":"882c8ced-9183-4fa2-9661-2b150e3bf769","582":"29506948-3688-4a66-999b-05b8aca583f3","583":"4de90e1c-b6e4-48e6-8304-f624123ea33b","584":"75941ed5-78d5-41e9-8dca-e3fd9a5ce9ab","585":"6de2590c-63bc-4f65-bc4d-edaa7b79a342","586":"e5e9f07e-d956-495c-bd47-8749b51916ac","587":"c9ec7ef3-0fe9-4e52-8e92-d6259775b38e","588":"ecfa83b1-fe79-414d-a529-cb72c18e1806","589":"3f6eb436-9c32-4e9a-8dc2-cef5acc17478","590":"73141f86-d17d-4362-91a5-a885fbb815d7","591":"d3e683bf-14e4-482c-90da-d2220018517e","592":"a2b2dfdc-d014-466b-8d45-9432c9866f6a","593":"21de9d6e-f13f-4c1d-862e-17a1428a0c50","594":"b9948d0c-d9da-4c22-adb3-ed3fd8509806","595":"e1bb3954-5a2f-4039-bb6c-3b6489cc007c","596":"49be6be8-e17b-4bc6-b206-3aece5fb3708","597":"503161e4-286e-48d3-bcab-61b8769c806e","598":"bb9ea0e4-c446-49bc-b4f1-3d2daec6c9f0","599":"d557b2d6-4e84-49fc-ba75-35f6c87036c2","600":"ca49a92a-1ae1-45c6-9b8f-aad28d9859c1","601":"a8aebdd1-1479-4b00-8415-8f6da2018dc6","602":"a0945b5c-2f1e-45ce-95fb-721e5657afa7","603":"4fa0ea70-46da-4fed-bde1-01dea3f3056b","604":"9435a1c1-00a3-4a9c-9aa5-05713a221bc5","605":"2a22f176-01c2-42f2-a7d2-2c7054504aa9","606":"46f54639-5f91-4731-93eb-e5c0a7460538","607":"a7f5d8de-4882-4111-9d01-436493e5b2d8","608":"0d554a9d-7d06-48b3-8aea-ffaeaa30380a","609":"e5d065f6-907b-450d-b998-213cdc54eec1","610":"5548037e-8428-43f8-bcb6-d730dbcd0a79","611":"8477bbec-974c-45bf-a1ce-49a48d5b5307","612":"db9ed060-d556-435b-945c-19c923e233d3","613":"a09be1c6-93fd-4b54-b9ca-62e60efbc818","614":"de50f4f6-3d7e-4d6b-ae34-e6a34b24b104","615":"442f3ea3-c7cd-4759-84ee-a0d2fac5a711","616":"b9d21957-633f-4926-9562-4cfab38badee","617":"91183077-8eac-4e29-a197-9190429ef0ba","618":"ac09f902-8921-4a58-aad5-c679706697f6","619":"2ddec223-13c2-4bf9-ba05-66338c51bd45","620":"098917ec-d86a-4cee-9c65-7997295bc248","621":"5f07c608-acf2-4cc5-97d0-1a0a96acb9e3","622":"2f5f91c0-bebf-4de2-bf70-8d9bc1816997","623":"f6f120ee-fbc3-49f8-a2a3-a49e8674b8c8","624":"d09c2121-c7e4-4d99-9556-02b92d17a652","625":"ca924c87-8012-448a-a6c7-a7ff91b0e801","626":"225daaae-6f35-4489-aeb5-73e66e0664a4","627":"b183f553-ce82-47c5-a4ed-6470b83b0d45","628":"6f820954-63e4-4bc9-a299-8266e712d838","629":"686e9438-d86e-4504-b9f6-7029b264924e","630":"bcaf33a4-98c3-41d7-b416-438670e97d53","631":"40659614-1b34-497a-b745-78497e4b2025","632":"6641c0af-44e6-4f6c-8558-f5cdf3c3feee","633":"52a61c5e-07be-4bb9-9649-d3375c66e97e","634":"ee18a848-1319-4ff9-b5e5-3f3710635dbf","635":"a30c0bb3-3f38-46da-8cd3-a813aabaccc9","636":"d48733e2-f003-4643-86a2-cb350fd0dc04","637":"369eefd9-0c39-412e-a294-d0bb2251c509","638":"ea2f8200-a920-40fc-9715-d0f66ae5f492","639":"f07f759c-41d1-4095-8054-dc471687884b","640":"5c51a13b-a083-43dd-80ea-f340e6ef88f8","641":"1278df17-e3e8-4d29-aa8d-0f779cb60b1d","642":"de36c624-8c78-4b52-8d86-431cec16a306","643":"39553630-8281-40e4-96fb-b01c1f3537e6","644":"05475442-0e52-4e0b-9fbb-2715f0e54f97","645":"2ee817c1-f2a3-407a-847d-b97ffb844e45","646":"d077c2a4-4578-4965-9318-c14bb7ac1bd6","647":"5631c137-ebe8-463b-880b-f7a6992d84d9","648":"e4786dcc-b1d5-4380-a0b9-c55d32ae6d82","649":"7854121c-adb3-4615-9646-25ed8bd13b53","650":"26d9ad5a-baf7-473d-a43a-dcc6e6d7ebf6","651":"26e35912-060b-4a13-a299-a2b0019ab6bc","652":"e5d3c632-b2dc-4be7-a5bc-623415f76d28","653":"4927aa86-8882-4b04-8ca7-44052bd00aa9","654":"ee5463c9-b9f8-4438-bb79-7f2364f69b61","655":"2db5d925-700e-4375-abcd-f79bb17a1855","656":"5a2c1219-d4e6-4bf4-a67d-c2b6478dc1e0","657":"b335e984-7bc1-4bb7-a3a6-44139d991f63","658":"1e311aa8-7a58-4ed9-a62e-bf236cf32982","659":"bdafa446-f615-49cb-94f3-d7652dde6cec","660":"b88679fb-0325-4c85-942f-ad9c6ed6545b","661":"3296c67d-6ace-44dd-8e86-335b9a90ad80","662":"caec26b3-847c-4876-80e1-e6206003ecb5","663":"c545a97c-6ac6-4181-a704-28031244aeb1","664":"17575457-18fa-43e0-a8cb-1331efc1c77e","665":"90ca403c-ddb5-4a55-ac6f-2ca2c970d6ad","666":"cefc210e-a06a-4e34-ace5-d24e5a525592","667":"ba05b02a-f2b2-4c5e-ba73-00a519535763","668":"6cc4ec54-404c-4989-9f85-9b59824faf96","669":"6c6cbf7a-6133-425b-8b29-41471889a67e","670":"fe628646-64da-462c-ac5c-1d4f976a129a","671":"9c0d97cf-0c99-4565-a931-b1c5bdf8fc1b","672":"c7b07df3-6afe-4616-9dd4-64f7687e98e9","673":"63fd0968-5f9e-4afd-bde5-0a7f36645ce5","674":"27e60f25-016f-49ca-a7f2-8b1e194f1d78","675":"d61cc329-1652-4b93-9756-ac4380e5bd04","676":"7d55bbc8-8692-40ee-944b-6b172680075a","677":"f878fa09-cb47-4e1c-8f1e-df2544a6882a","678":"12bfb5a0-772e-4d14-bb1a-00077211f70b","679":"1ae7e9fe-c0c4-4bb4-a0d6-28e21789a66c","680":"dee106ea-3e91-4b03-92ef-33038c5681a0","681":"93cbaa78-9185-424f-814b-b568c3358316","682":"ae98ddb2-901d-402b-8ab0-149b778acdb8","683":"6448ddc8-a3df-465f-b819-52f1cf347983","684":"92159a6b-a1b6-4f8b-9c08-503f2cbbd572","685":"1e8bb65d-51b6-42bb-813c-1fba696454e8","686":"e2ea58d4-ee32-432b-8086-29bf5675e5f7","687":"0b73f42f-ff32-4654-8857-aa13413bff33","688":"0cc588ec-037a-4eb1-b498-9f49a0669a36","689":"c82449ab-668c-4720-a641-381877751984","690":"2daf5d7e-b7bc-4017-bc0d-6fe32a676fa0"},"Name":"Lotan - Torpedo Sub","Version":23,"Blueprint":{"CSI":[4.0,27.0,-1.0,0.0,0.0,0.0,-1.0,7199.932,0.000113834729,0.0,0.0,0.0,0.0,100000.0,-1.0,-1.0,-1.0,-1.0,1.0,20.9421768,0.0,-1.0,0.0,100000.0,-1.0,-1.0,-1.0,-1.0,-1.0,0.0,3658.31152,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,200.0051,5000.0,47074.625,50000.0,-1.0,-1.0,-1.0,-1.0,0.0,0.0,1948.0,129000.0,129000.0,-1.0,10.0,-1.0,8824.5,-1.0,0.0,0.0,-1.0,-1.0,-1.0],"COL":["0,0,0,0","1,0,0,0.5","0,1,0,0.5","0,0,1,0.5","0.1,0.1,0.1,0.5","0.3,0.3,0.3,0.5","0.5,0.5,0.5,0.5","1,1,1,0.1","1,1,1,0.5","1,1,1,0.99","1,0.9215686,0.01568628,0.99","0,1,0.8,0.25","1,0,1,0.99","0.2239932,0.4256263,0.2157812,0.1842953","0.6309878,0.9270554,0.03148651,0.5276617","0.5051382,0.9558125,0.5698033,0.04089036","0.1841067,0.8401897,0.01852608,0.4576047","0.7172728,0.4789807,0.04207635,0.1445927","0.4799359,0.1412239,0.8272045,0.7244512","0.58029,0.0926013,0.1673915,0.8628673","0.005241036,0.07672453,0.3154928,0.4898823","0.8856266,0.7568706,0.01284623,0.1406047","0.9518496,0.8617725,0.7916226,0.3836132","0.9074792,0.2581318,0.759176,0.3438646","0.1195486,0.1099133,0.5218214,0.6592691","0.3394925,0.5845998,0.2247062,0.5321366","0.5142308,0.5642034,0.6530515,0.5303521","0,0,0,0","0,0,0,0","0,0,0,0.6","0.1,0,0,0.66","0,0,0,0.7"],"SCs":[],"BLP":["0,0,0","-1,0,0","1,0,0","-2,0,0","2,0,0","-2,0,-4","2,0,-4","-1,0,-4","1,0,-4","0,0,-4","0,0,-11","-1,0,-11","1,0,-11","-2,0,-11","2,0,-11","2,1,0","2,1,-2","2,1,-5","2,1,-7","2,1,-10","2,1,-11","2,2,0","2,2,-2","2,2,-3","2,2,-5","2,2,-7","2,2,-8","2,2,-10","2,2,-11","2,3,0","2,3,-1","2,3,-3","2,3,-4","2,3,-5","2,3,-6","2,3,-8","2,3,-9","2,3,-11","2,4,0","2,4,-2","2,4,-3","2,4,-5","2,4,-7","2,4,-8","2,4,-10","2,4,-11","2,5,0","2,5,-2","2,5,-5","2,5,-7","2,5,-10","1,1,0","1,1,-2","1,1,-3","1,1,-5","1,1,-7","1,1,-8","1,1,-10","1,1,-11","1,2,0","1,2,-1","1,2,-2","1,2,-3","1,2,-4","1,2,-5","1,2,-6","1,2,-7","1,2,-8","1,2,-9","1,2,-10","1,2,-11","1,3,0","1,3,-1","1,3,-2","1,3,-3","1,3,-4","1,3,-5","1,3,-6","1,3,-7","1,3,-8","1,3,-9","1,3,-10","1,4,0","1,4,-1","1,4,-2","1,4,-3","1,4,-4","1,4,-5","1,4,-6","1,4,-7","1,4,-8","1,4,-9","1,4,-10","1,4,-11","1,5,0","1,5,-2","1,5,-3","1,5,-5","1,5,-7","1,5,-8","1,5,-10","1,5,-11","0,1,0","0,1,-1","0,1,-2","0,1,-3","0,1,-4","0,1,-5","0,1,-6","0,1,-7","0,1,-8","0,1,-9","0,1,-10","0,1,-11","0,2,0","0,2,-1","0,2,-2","0,2,-3","0,2,-4","0,2,-5","0,2,-6","0,2,-7","0,2,-8","0,2,-9","0,2,-10","0,2,-11","0,3,0","0,3,-1","0,3,-2","0,3,-3","0,3,-4","0,3,-5","0,3,-6","0,3,-7","0,3,-8","0,3,-9","0,3,-10","0,3,-11","0,4,0","0,4,-1","0,4,-2","0,4,-3","0,4,-4","0,4,-5","0,4,-6","0,4,-7","0,4,-8","0,4,-9","0,4,-10","0,5,0","0,5,-1","0,5,-2","0,5,-3","0,5,-4","0,5,-5","0,5,-6","0,5,-7","0,5,-8","0,5,-9","0,5,-10","-1,1,0","-1,1,-2","-1,1,-3","-1,1,-5","-1,1,-7","-1,1,-8","-1,1,-10","-1,2,0","-1,2,-1","-1,2,-2","-1,2,-3","-1,2,-4","-1,2,-5","-1,2,-6","-1,2,-7","-1,2,-8","-1,2,-9","-1,2,-10","-1,2,-11","-1,3,0","-1,3,-1","-1,3,-2","-1,3,-3","-1,3,-4","-1,3,-5","-1,3,-6","-1,3,-7","-1,3,-8","-1,3,-9","-1,3,-10","-1,4,0","-1,4,-1","-1,4,-2","-1,4,-3","-1,4,-4","-1,4,-5","-1,4,-6","-1,4,-7","-1,4,-8","-1,4,-9","-1,4,-10","-1,4,-11","-1,5,0","-1,5,-2","-1,5,-3","-1,5,-5","-1,5,-7","-1,5,-8","-1,5,-10","-1,5,-11","-2,1,0","-2,1,-2","-2,1,-5","-2,1,-7","-2,1,-11","-2,2,0","-2,2,-2","-2,2,-3","-2,2,-5","-2,2,-7","-2,2,-8","-2,2,-10","-2,2,-11","-2,3,0","-2,3,-1","-2,3,-3","-2,3,-4","-2,3,-5","-2,3,-6","-2,3,-8","-2,3,-9","-2,4,0","-2,4,-2","-2,4,-3","-2,4,-5","-2,4,-7","-2,4,-8","-2,4,-10","-2,4,-11","-2,5,0","-2,5,-2","-2,5,-3","-2,5,-4","-2,5,-5","-2,5,-7","-2,5,-8","-2,5,-9","-2,5,-10","-2,1,-9","2,1,-9","-2,1,-4","2,1,-4","-2,1,-6","2,1,-6","-2,1,-1","2,1,-1","2,3,-7","-2,3,-7","2,3,-2","-2,3,-2","-2,5,-6","2,5,-6","-2,5,-1","2,5,-1","-2,3,-11","2,5,-4","2,5,-9","0,0,4","1,0,4","-1,0,4","0,4,1","1,4,1","-1,4,1","2,4,1","-2,4,1","0,5,-12","-1,5,-12","1,5,-12","-2,5,-12","2,5,-12","2,1,-12","-2,1,-12","-2,0,-12","2,0,-12","-2,5,-13","2,5,-13","-1,5,-13","1,5,-13","2,1,-13","2,0,-13","-2,0,-13","-2,0,-18","-2,0,-14","-2,1,-18","-2,5,-18","-2,5,-17","-2,5,-16","-2,5,-15","-2,5,-14","-1,0,-18","-1,0,-17","-1,1,-18","-1,1,-17","-1,1,-16","-1,1,-15","-1,2,-17","-1,2,-16","-1,2,-15","-1,3,-17","-1,3,-16","-1,3,-15","-1,4,-17","-1,4,-16","-1,4,-15","-1,4,-14","-1,5,-18","-1,5,-17","0,0,-17","0,1,-17","0,1,-16","0,1,-15","0,2,-17","0,2,-16","0,2,-15","0,3,-17","0,3,-16","0,3,-15","0,4,-17","0,4,-16","0,4,-15","0,4,-14","0,5,-18","0,5,-17","1,0,-17","1,1,-17","1,1,-16","1,1,-15","1,2,-17","1,2,-16","1,2,-15","1,3,-17","1,3,-16","1,3,-15","1,4,-17","1,4,-16","1,4,-15","1,4,-14","1,5,-18","1,5,-17","2,0,-18","2,0,-14","2,1,-18","2,5,-18","2,5,-17","2,5,-16","2,5,-15","2,5,-14","0,2,-13","0,3,-13","0,4,-13","0,5,-13","-2,5,-11","2,5,-11","-1,1,2","1,1,2","-1,3,2","1,3,2","0,3,2","0,1,2","-2,1,4","2,1,4","-1,1,4","1,1,4","0,1,4","2,3,4","-2,3,4","1,3,4","-1,3,4","0,3,4","-2,1,5","-1,1,5","1,1,5","0,1,5","2,1,5","0,5,1","-1,5,1","1,5,1","-2,5,1","2,5,1","0,0,8","1,0,8","-1,0,8","0,2,7","0,2,8","0,2,9","1,2,9","-1,2,9","2,2,9","-2,2,9","3,2,9","-3,2,9","4,2,9","-4,2,9","5,2,9","-5,2,9","4,3,9","-4,3,9","4,1,9","-4,1,9","4,2,10","-4,2,10","4,2,8","-4,2,8","4,2,7","-4,2,7","4,2,6","-4,2,6","4,2,-5","-4,2,-5","4,2,-6","-4,2,-6","4,2,-7","-4,2,-7","4,2,-8","-4,2,-8","4,2,-9","-4,2,-9","4,1,-5","-4,1,-5","4,1,-6","-4,1,-6","4,1,-7","-4,1,-7","4,1,-8","-4,1,-8","4,1,-9","-4,1,-9","4,3,-5","-4,3,-5","4,3,-6","-4,3,-6","4,3,-7","-4,3,-7","4,3,-8","-4,3,-8","4,3,-9","-4,3,-9","5,2,-5","-5,2,-5","5,2,-6","-5,2,-6","5,2,-7","-5,2,-7","5,2,-8","-5,2,-8","5,2,-9","-5,2,-9","3,2,-9","-3,2,-9","3,2,-8","-3,2,-8","3,2,-7","-3,2,-7","3,2,-6","-3,2,-6","3,2,-5","-3,2,-5","4,2,5","-4,2,5","4,2,3","-4,2,3","4,2,2","-4,2,2","4,2,1","-4,2,1","4,2,0","-4,2,0","4,2,-1","-4,2,-1","4,2,-2","-4,2,-2","4,2,-3","-4,2,-3","4,2,-4","-4,2,-4","4,2,-10","-4,2,-10","4,2,-11","-4,2,-11","4,2,-12","-4,2,-12","4,2,-13","-4,2,-13","4,2,-14","-4,2,-14","4,1,-10","-4,1,-10","4,1,-11","-4,1,-11","4,1,-12","-4,1,-12","4,1,-13","-4,1,-13","4,1,-14","-4,1,-14","4,3,-14","-4,3,-14","4,3,-13","-4,3,-13","4,3,-12","-4,3,-12","4,3,-11","-4,3,-11","4,3,-10","-4,3,-10","5,2,-10","-5,2,-10","5,2,-11","-5,2,-11","5,2,-12","-5,2,-12","5,2,-13","-5,2,-13","5,2,-14","-5,2,-14","3,2,-14","-3,2,-14","3,2,-13","-3,2,-13","3,2,-12","-3,2,-12","3,2,-11","-3,2,-11","3,2,-10","-3,2,-10","4,2,-15","-4,2,-15","4,2,-16","-4,2,-16","4,2,-17","-4,2,-17","4,2,-18","-4,2,-18","4,2,-19","-4,2,-19","3,2,-15","-3,2,-15","3,2,-16","-3,2,-16","3,2,-17","-3,2,-17","3,2,-18","-3,2,-18","3,2,-19","-3,2,-19","0,2,6","4,2,4","-4,2,4","3,0,5","-3,0,5","3,0,4","-3,0,4","3,0,3","-3,0,3","3,0,2","-3,0,2","3,0,1","-3,0,1","3,0,0","-3,0,0","3,0,-1","-3,0,-1","3,0,-2","-3,0,-2","3,0,-3","-3,0,-3","3,0,-4","-3,0,-4","3,0,-5","-3,0,-5","3,1,-4","-3,1,-4","3,1,-3","-3,1,-3","3,1,-2","-3,1,-2","3,1,-1","-3,1,-1","3,1,0","-3,1,0","3,1,1","-3,1,1","3,1,2","-3,1,2","3,1,3","-3,1,3","3,1,4","-3,1,4","3,1,5","-3,1,5","3,2,5","-3,2,5","3,2,4","-3,2,4","3,2,3","-3,2,3","3,2,2","-3,2,2","3,2,1","-3,2,1","3,2,0","-3,2,0","3,2,-1","-3,2,-1","3,2,-2","-3,2,-2","3,2,-3","-3,2,-3","3,2,-4","-3,2,-4","3,3,-4","-3,3,-4","3,3,-3","-3,3,-3","3,3,-2","-3,3,-2","3,3,-1","-3,3,-1","3,3,0","-3,3,0","3,3,1","-3,3,1","3,3,2","-3,3,2","3,3,3","-3,3,3","3,3,4","-3,3,4","3,3,5","-3,3,5","3,4,5","-3,4,5","3,4,4","-3,4,4","3,4,3","-3,4,3","3,4,2","-3,4,2","3,4,1","-3,4,1","3,4,0","-3,4,0","3,4,-1","-3,4,-1","3,4,-2","-3,4,-2","3,4,-3","-3,4,-3","3,4,-4","-3,4,-4","3,5,-4","-3,5,-4","3,5,-3","-3,5,-3","3,5,-2","-3,5,-2","3,5,-1","-3,5,-1","3,5,0","-3,5,0","3,5,1","-3,5,1","3,5,2","-3,5,2","3,5,3","-3,5,3","3,5,4","-3,5,4","3,5,5","-3,5,5","3,6,5","-3,6,5","3,6,4","-3,6,4","3,6,3","-3,6,3","3,6,2","-3,6,2","3,6,1","-3,6,1","3,6,0","-3,6,0","3,6,-1","-3,6,-1","3,6,-2","-3,6,-2","3,6,-3","-3,6,-3","3,6,-4","-3,6,-4","3,7,-4","-3,7,-4","3,7,-3","-3,7,-3","3,7,-2","-3,7,-2","3,7,-1","-3,7,-1","3,7,0","-3,7,0","3,7,1","-3,7,1","3,7,2","-3,7,2","3,7,3","-3,7,3","3,7,4","-3,7,4","3,7,5","-3,7,5","3,8,5","-3,8,5","3,8,4","-3,8,4","3,8,3","-3,8,3","3,8,2","-3,8,2","3,8,1","-3,8,1","3,8,0","-3,8,0","3,8,-1","-3,8,-1","3,8,-2","-3,8,-2","3,8,-3","-3,8,-3","3,8,-4","-3,8,-4","-4,1,5","4,1,5","-4,1,4","4,1,4","-4,1,3","4,1,3","-4,1,2","4,1,2","-4,1,1","4,1,1","-4,1,0","4,1,0","-4,1,-1","4,1,-1","-4,1,-2","4,1,-2","-4,1,-3","4,1,-3","-4,1,-4","4,1,-4","-3,0,8","3,0,8","-3,0,-7","3,0,-7","-3,0,-8","3,0,-8","-3,0,-9","3,0,-9","-3,0,-16","3,0,-16","2,1,8","-2,1,8","0,1,9","0,3,9","0,4,9","1,5,5","-1,5,5","2,5,5","-2,5,5","0,5,5","0,5,6","3,1,9","-3,1,9","3,3,9","-3,3,9","3,4,9","-3,4,9","6,4,8","-6,4,8","6,4,7","-6,4,7","0,4,10","1,4,10","-1,4,10","2,4,10","-2,4,10","3,4,10","-3,4,10","0,4,11","1,4,11","-1,4,11","2,4,14","-2,4,14","2,3,14","-2,3,14","2,2,14","-2,2,14","2,1,14","-2,1,14","2,5,14","-2,5,14","1,5,14","-1,5,14","0,5,14","0,1,15","1,1,15","-1,1,15","0,5,15","1,5,15","-1,5,15","2,5,15","-2,5,15","2,1,15","-2,1,15","2,5,10","-2,5,10","1,5,10","-1,5,10","1,5,9","-1,5,9","2,5,9","-2,5,9","0,2,13","0,3,13","0,3,12","0,2,12","0,2,14","0,3,14","0,4,14","0,4,12","1,3,12","1,2,12","-1,3,12","-1,2,12","-1,2,13","1,2,13","-1,3,13","1,3,13","0,4,13","1,4,13","-1,4,13","-1,4,12","-1,4,14","1,4,14","-1,3,14","1,3,14","-4,6,5","4,6,5","-4,6,4","4,6,4","-4,6,3","4,6,3","-4,6,2","4,6,2","-4,6,1","4,6,1","-4,6,0","4,6,0","-4,6,-1","4,6,-1","-4,6,-2","4,6,-2","-4,6,-3","4,6,-3","-4,6,-4","4,6,-4","-3,7,-5","3,7,-5","-4,5,9","4,5,9","-4,6,9","4,6,9","-3,7,-6","3,7,-6","-3,7,-7","3,7,-7","-3,7,-8","3,7,-8","-3,7,-9","3,7,-9","-3,7,-10","3,7,-10","-3,7,-11","3,7,-11","-3,7,-12","3,7,-12","-3,7,-13","3,7,-13","-3,7,-14","3,7,-14","-3,7,-15","3,7,-15","-3,7,-16","3,7,-16","-3,7,-17","3,7,-17","-3,7,-18","3,7,-18","-3,4,11","3,4,11","-3,4,12","3,4,12","-3,4,13","3,4,13","-3,4,14","3,4,14","-3,4,15","3,4,15","4,4,10","-4,4,10","4,3,10","-4,3,10","4,1,10","-4,1,10","5,4,10","-5,4,10","5,4,9","-5,4,9","5,1,9","-5,1,9","6,1,8","-6,1,8","6,1,7","-6,1,7","6,1,6","-6,1,6","5,2,5","-5,2,5","5,2,1","-5,2,1","5,1,5","-5,1,5","5,1,1","-5,1,1","4,0,5","-4,0,5","4,0,1","-4,0,1","4,0,9","-4,0,9","5,0,9","-5,0,9","5,3,5","-5,3,5","5,3,1","-5,3,1","6,4,9","-6,4,9","4,0,-3","-4,0,-3","4,0,-7","-4,0,-7","4,0,-11","-4,0,-11","5,3,-3","-5,3,-3","4,4,-5","-4,4,-5","4,4,-9","-4,4,-9","4,4,-13","-4,4,-13","4,3,-15","-4,3,-15","4,1,-15","-4,1,-15","3,5,6","-3,5,6","0,0,12","1,0,12","-1,0,12","2,0,12","-2,0,12","3,0,12","-3,0,12","3,0,16","-3,0,16","2,0,16","-2,0,16","1,0,16","-1,0,16","0,0,16","0,4,16","1,4,16","-1,4,16","2,4,16","-2,4,16","3,4,16","-3,4,16","3,5,13","-3,5,13","3,5,16","-3,5,16","2,5,16","-2,5,16","-3,6,16","3,6,16","-2,6,16","2,6,16","-1,6,16","1,6,16","0,6,16","0,6,12","-1,6,12","1,6,12","-2,6,12","2,6,12","-3,6,12","3,6,12","-3,6,8","3,6,8","-2,6,8","2,6,8","-1,6,8","1,6,8","0,6,8","2,6,4","-2,6,4","1,6,4","-1,6,4","0,6,4","-2,6,0","2,6,0","-1,6,0","1,6,0","0,6,0","0,6,-4","-1,6,-4","1,6,-4","-2,6,-4","2,6,-4","-2,6,-8","2,6,-8","-1,6,-8","1,6,-8","0,6,-8","2,6,-12","-2,6,-12","1,6,-12","-1,6,-12","0,6,-12","-2,6,-19","2,6,-19","-1,6,-19","1,6,-19","0,6,-19","-5,4,-5","5,4,-5","-5,4,-9","5,4,-9","-5,4,-13","5,4,-13","-6,4,-5","6,4,-5","-6,4,-6","6,4,-6","-6,4,-7","6,4,-7","-6,4,-8","6,4,-8","-6,4,-9","6,4,-9","-6,4,-10","6,4,-10","-6,4,-11","6,4,-11","-6,4,-12","6,4,-12","6,4,-14","-5,3,-18","5,3,-18","-5,2,-18","5,2,-18","-5,1,-18","5,1,-18","-5,0,-14","5,0,-14","-5,0,-10","5,0,-10","-5,0,-6","5,0,-6","-5,0,-2","5,0,-2","-5,0,2","5,0,2","-4,0,-18","4,0,-18","-3,0,-20","3,0,-20","0,0,-20","-1,0,-20","1,0,-20","-2,0,-20","2,0,-20","-2,4,-19","2,4,-19","-1,4,-19","1,4,-19","0,4,-19","-2,5,-19","2,5,-19","-4,7,6","4,7,6","-4,7,2","4,7,2","-4,7,-2","4,7,-2","-4,8,6","4,8,6","-4,8,2","4,8,2","-4,8,-2","4,8,-2","-4,9,5","4,9,5","-4,9,1","4,9,1","-4,9,-3","4,9,-3","-4,9,-4","4,9,-4","-4,9,-5","4,9,-5","-3,9,-5","3,9,-5","-2,9,-5","2,9,-5","-2,9,-4","2,9,-4","-2,9,-3","2,9,-3","-2,9,-2","2,9,-2","-2,9,2","2,9,2","-2,9,6","2,9,6","-4,9,6","4,9,6","-3,9,6","3,9,6","-3,8,6","3,8,6","-2,7,6","2,7,6","-2,7,2","2,7,2","-2,7,-2","2,7,-2","-2,8,-2","2,8,-2","-2,8,2","2,8,2","-2,8,6","2,8,6","-1,9,-2","1,9,-2","0,9,2","1,9,2","-1,9,2","1,9,6","-1,9,6","0,9,6","-1,9,10","1,9,10","0,9,10","0,9,14","1,9,14","-1,9,14","2,9,14","-2,9,14","2,9,10","-2,9,10","3,9,10","-3,9,10","3,9,-6","-3,9,-6","2,9,-6","-2,9,-6","-5,9,6","5,9,6","-5,9,2","5,9,2","-5,9,-2","5,9,-2","-4,9,10","4,9,10","-4,9,-10","4,9,-10","-2,9,-10","2,9,-10","-4,9,-14","4,9,-14","-2,9,18","2,9,18","-1,9,18","1,9,18","0,9,18","-4,9,19","4,9,19","-3,9,19","3,9,19","-2,9,19","2,9,19","-1,9,19","1,9,19","-6,9,6","6,9,6","-6,9,2","6,9,2","-6,9,-2","6,9,-2","-5,9,10","5,9,10","-5,9,19","5,9,19","-5,9,-6","5,9,-6","-5,9,-10","5,9,-10","-5,9,-14","5,9,-14","-6,9,-6","6,9,-6","-6,9,-10","6,9,-10","-6,9,-14","6,9,-14","-6,9,19","6,9,19","-6,9,10","6,9,10","-6,9,14","6,9,14","-6,9,18","6,9,18","-6,8,18","6,8,18","-6,8,14","6,8,14","-6,8,10","6,8,10","-6,8,6","6,8,6","-6,8,2","6,8,2","-6,8,-2","6,8,-2","-6,8,-6","6,8,-6","-6,8,-10","6,8,-10","-7,8,-10","7,8,-10","-7,8,-6","7,8,-6","-7,8,-2","7,8,-2","-7,8,2","7,8,2","-7,8,6","7,8,6","-7,8,10","7,8,10","-7,8,14","7,8,14","1,10,5","-1,10,5","1,10,1","-1,10,1","0,10,0","0,10,5","0,10,10","-1,10,15","1,10,15","-1,10,9","1,10,9","-1,10,13","1,10,13","-1,10,14","1,10,14","4,8,-18","-4,8,-18","0,10,-7","-1,10,-12","1,10,-12","-2,10,-12","2,10,-12","-1,10,-13","1,10,-13","1,10,-8","-1,10,-8","2,10,-8","-2,10,-8","0,10,-5","1,11,-8","-1,11,-8","0,11,-8","0,9,-6","0,8,-8","0,9,-11","1,9,-6","-1,9,-6","1,9,-9","-1,9,-9","1,9,-11","-1,9,-11","1,11,-9","-1,11,-9","1,11,-11","-1,11,-11","-1,11,-12","1,11,-12","-2,10,-10","2,10,-10","-2,10,-9","2,10,-9","-1,10,-4","1,10,-4","-1,10,-3","1,10,-3","0,11,-11","-1,11,-10","1,11,-10","-7,7,14","7,7,14","-8,7,14","8,7,14","-8,7,6","8,7,6","-8,7,2","8,7,2","-8,7,-10","8,7,-10","-9,7,-10","9,7,-10","-9,7,-6","9,7,-6","-9,7,-2","9,7,-2","-9,7,2","9,7,2","-9,7,6","9,7,6","-9,7,10","9,7,10","-9,7,14","9,7,14","-9,6,14","9,6,14","-9,6,10","9,6,10","-9,6,6","9,6,6","-9,6,2","9,6,2","-9,6,-2","9,6,-2","-9,6,-6","9,6,-6","-9,6,-10","9,6,-10","-10,6,-10","10,6,-10","-10,6,-6","10,6,-6","-10,6,-2","10,6,-2","-10,6,2","10,6,2","-10,6,6","10,6,6","-10,6,10","10,6,10","-10,6,14","10,6,14","-11,6,14","11,6,14","-11,6,10","11,6,10","-11,6,6","11,6,6","-11,6,2","11,6,2","-11,6,-2","11,6,-2","-11,6,-6","11,6,-6","-11,6,-10","11,6,-10","-11,5,-10","11,5,-10","-11,5,-6","11,5,-6","-11,5,-2","11,5,-2","-11,5,2","11,5,2","-11,5,6","11,5,6","-11,5,10","11,5,10","-11,5,14","11,5,14","-11,3,14","11,3,14","-11,3,10","11,3,10","-11,3,6","11,3,6","-11,3,2","11,3,2","-11,3,-2","11,3,-2","-11,3,-6","11,3,-6","-11,3,-10","11,3,-10","-11,2,-10","11,2,-10","-11,2,-6","11,2,-6","-11,2,-2","11,2,-2","-11,2,2","11,2,2","-11,2,6","11,2,6","-11,2,10","11,2,10","-11,2,14","11,2,14","-10,2,14","10,2,14","-10,2,10","10,2,10","-10,2,6","10,2,6","-10,2,2","10,2,2","-10,2,-2","10,2,-2","-10,2,-6","10,2,-6","-10,2,-10","10,2,-10","-9,2,-10","9,2,-10","-9,2,-6","9,2,-6","-9,2,-2","9,2,-2","-9,2,2","9,2,2","-9,2,6","9,2,6","-9,2,10","9,2,10","-9,2,14","9,2,14","-9,1,14","9,1,14","-9,1,10","9,1,10","-9,1,6","9,1,6","-9,1,2","9,1,2","-9,1,-2","9,1,-2","-9,1,-6","9,1,-6","-9,1,-10","9,1,-10","-8,1,-10","8,1,-10","-8,1,-6","8,1,-6","-8,1,-2","8,1,-2","-8,1,2","8,1,2","-8,1,6","8,1,6","-8,1,10","8,1,10","-8,1,14","8,1,14","-7,1,14","7,1,14","-7,1,10","7,1,10","-7,1,6","7,1,6","-7,1,2","7,1,2","-7,1,-2","7,1,-2","-7,1,-6","7,1,-6","-7,1,-10","7,1,-10","-6,0,-10","6,0,-10","-6,0,-6","6,0,-6","-6,0,-2","6,0,-2","-6,0,2","6,0,2","-6,0,6","6,0,6","-6,0,10","6,0,10","-6,0,14","6,0,14","-5,1,-19","5,1,-19","-5,1,-20","5,1,-20","-4,1,-20","4,1,-20","-3,1,-20","3,1,-20","-4,4,-19","4,4,-19","-3,7,-19","3,7,-19","-4,4,-18","4,4,-18","-7,8,-14","7,8,-14","-9,7,-14","9,7,-14","-11,6,-14","11,6,-14","-10,6,-14","10,6,-14","-8,7,-14","8,7,-14","-6,8,-14","6,8,-14","-9,6,-14","9,6,-14","-5,8,-18","5,8,-18","-6,8,-18","6,8,-18","-8,7,-18","8,7,-18","-10,6,-18","10,6,-18","-9,6,-18","9,6,-18","-7,7,-18","7,7,-18","6,7,-20","-8,6,-20","8,6,-20","-3,7,-20","3,7,-20","-3,7,-21","3,7,-21","-2,7,-21","2,7,-21","-1,7,-21","1,7,-21","-4,7,-21","4,7,-21","-5,7,-21","5,7,-21","-7,7,-21","7,7,-21","-9,6,-21","9,6,-21","-8,6,-21","8,6,-21","-6,7,-21","6,7,-21","-7,6,-22","7,6,-22","-11,5,-14","11,5,-14","-11,4,-14","11,4,-14","-11,3,-14","11,3,-14","-10,5,-18","10,5,-18","-10,4,-18","10,4,-18","-10,3,-18","10,3,-18","-9,5,-21","9,5,-21","-9,4,-21","9,4,-21","-9,3,-21","9,3,-21","-11,2,-14","11,2,-14","-9,1,-14","9,1,-14","-8,1,-14","8,1,-14","-10,2,-14","10,2,-14","-9,2,-17","9,2,-17","-7,1,-17","7,1,-17","-5,0,-18","5,0,-18","-4,0,-19","4,0,-19","-10,2,-18","10,2,-18","-8,1,-18","8,1,-18","-7,1,-18","7,1,-18","-9,2,-18","9,2,-18","-8,2,-20","8,2,-20","-6,1,-20","6,1,-20","-6,1,-16","6,1,-16","-9,2,-21","9,2,-21","-7,1,-21","7,1,-21","-6,0,-14","6,0,-14","-6,0,-18","6,0,-18","-6,0,-19","6,0,-19","-5,0,-19","5,0,-19","-5,0,-20","5,0,-20","-2,1,-20","-2,2,-20","-2,3,-20","-2,5,-20","-2,7,-20","2,7,-20","2,1,-20","-7,6,-23","7,6,-23","-6,6,-23","6,6,-23","-5,6,-23","5,6,-23","-1,6,-23","1,6,-23","-8,6,-23","8,6,-23","-8,5,-23","8,5,-23","-8,4,-23","8,4,-23","-8,3,-23","8,3,-23","-6,1,-21","6,1,-21","-8,2,-21","8,2,-21","-7,2,-22","7,2,-22","-6,2,-22","6,2,-22","-6,2,-18","6,2,-18","-5,0,-21","5,0,-21","-4,0,-21","4,0,-21","-3,0,-21","3,0,-21","-2,0,-21","2,0,-21","-1,0,-21","1,0,-21","-6,0,-20","6,0,-20","-6,0,-21","6,0,-21","-8,2,-23","8,2,-23","-7,2,-23","7,2,-23","-6,1,-23","6,1,-23","-6,2,-23","6,2,-23","0,5,-21","0,2,-21","0,2,-22","0,5,-22","-2,5,-21","2,5,-21","-2,2,-21","2,2,-21","-4,2,-21","4,2,-21","-4,5,-20","4,5,-20","-4,5,-21","4,5,-21","-4,5,-22","4,5,-22","-4,2,-22","4,2,-22","6,6,-20","-6,6,-20","6,4,-21","-6,4,-21","5,5,-23","-5,5,-23","3,5,-23","-3,5,-23","-4,4,-23","4,4,-23","-2,4,-23","2,4,-23","0,4,-23","6,3,-23","-6,3,-23","6,5,-23","-6,5,-23","-1,5,-24","1,5,-24","-1,4,-24","1,4,-24","-1,3,-24","1,3,-24","-1,2,-24","1,2,-24","-2,3,-24","2,3,-24","-2,4,-24","2,4,-24","-3,5,-24","3,5,-24","-3,4,-24","3,4,-24","-3,3,-24","3,3,-24","-3,2,-24","3,2,-24","-4,3,-24","4,3,-24","-4,4,-24","4,4,-24","-5,5,-24","5,5,-24","-5,4,-24","5,4,-24","-5,3,-24","5,3,-24","-6,3,-24","6,3,-24","-5,2,-24","5,2,-24","-6,6,-22","6,6,-22","-2,1,-22","2,1,-22","-5,1,-21","5,1,-21","4,3,-21","-4,3,-21","8,3,-22","-8,3,-22","8,4,-22","-8,4,-22","5,6,-21","-5,6,-21","-2,6,-22","2,6,-22","-2,3,-22","2,3,-22","0,4,-24","-7,4,-24","7,4,-24","9,5,-12","-9,5,-12","11,4,-13","-11,4,-13","10,4,-12","-10,4,-12","9,5,-9","-9,5,-9","10,4,-9","-10,4,-9","11,4,-11","-11,4,-11","9,5,-6","-9,5,-6","11,4,-8","-11,4,-8","-9,5,-7","9,5,-7","-9,5,-8","9,5,-8","-9,5,-10","9,5,-10","-9,5,-11","9,5,-11","-9,5,-13","9,5,-13","-9,5,-14","9,5,-14","-10,5,-14","10,5,-14","-9,5,-5","9,5,-5","-9,5,-4","9,5,-4","-10,4,-6","10,4,-6","-9,5,-15","9,5,-15","-10,5,-15","10,5,-15","-9,5,-3","9,5,-3","-10,5,-3","10,5,-3","7,7,18","-7,7,18","8,7,18","-8,7,18","9,6,18","-9,6,18","10,6,18","-10,6,18","10,2,18","-10,2,18","9,2,18","-9,2,18","8,1,18","-8,1,18","7,1,18","-7,1,18","6,1,18","-6,1,18","4,0,13","-4,0,13","5,0,13","-5,0,13","5,0,17","-5,0,17","4,0,17","-4,0,17","6,0,18","-6,0,18","9,1,18","-9,1,18","11,2,18","-11,2,18","11,6,18","-11,6,18","11,5,18","-11,5,18","11,3,18","-11,3,18","9,7,18","-9,7,18","7,8,18","-7,8,18","7,8,19","-7,8,19","9,7,19","-9,7,19","11,6,19","-11,6,19","11,2,19","-11,2,19","9,1,19","-9,1,19","6,0,19","-6,0,19","5,0,19","-5,0,19","4,0,19","-4,0,19","3,0,19","-3,0,19","2,0,19","-2,0,19","1,0,19","-1,0,19","5,0,18","-5,0,18","3,0,17","-3,0,17","1,0,18","0,0,17","6,1,19","-6,1,19","9,2,19","-9,2,19","11,3,19","-11,3,19","11,4,19","-11,4,19","11,5,19","-11,5,19","10,6,19","-10,6,19","8,7,19","-8,7,19","6,8,19","-6,8,19","7,7,22","-7,7,22","9,6,22","-9,6,22","10,2,19","-10,2,19","7,1,19","-7,1,19","8,1,19","-8,1,19","6,8,23","-6,8,23","8,7,23","-8,7,23","10,6,23","-10,6,23","6,1,23","-6,1,23","5,1,23","-5,1,23","4,1,23","-4,1,23","3,1,23","-3,1,23","2,1,23","-2,1,23","1,1,23","-1,1,23","8,2,23","-8,2,23","7,2,23","-7,2,23","6,2,23","-6,2,23","9,6,23","-9,6,23","7,7,23","-7,7,23","5,8,23","-5,8,23","4,8,23","-4,8,23","3,8,23","-3,8,23","2,8,23","-2,8,23","1,8,23","-1,8,23","10,5,23","-10,5,23","10,4,23","-10,4,23","8,6,25","-8,6,25","6,7,25","-6,7,25","6,7,26","-6,7,26","5,7,26","-5,7,26","4,7,26","-4,7,26","3,7,26","-3,7,26","2,7,26","-2,7,26","1,7,26","-1,7,26","8,6,26","-8,6,26","9,4,26","-9,4,26","9,5,26","-9,5,26","6,2,26","-6,2,26","5,2,26","-5,2,26","4,2,26","-4,2,26","3,2,26","-3,2,26","2,2,26","-2,2,26","1,2,26","-1,2,26","7,7,26","-7,7,26","9,6,26","-9,6,26","7,6,26","-7,6,26","6,3,26","-6,3,26","10,3,23","-10,3,23","7,3,26","-7,3,26","8,3,26","-8,3,26","9,2,23","-9,2,23","7,6,28","-7,6,28","6,6,28","-6,6,28","5,6,28","-5,6,28","1,6,28","-1,6,28","6,3,28","-6,3,28","5,3,28","-5,3,28","1,3,28","-1,3,28","8,5,28","-8,5,28","8,4,28","-8,4,28","7,4,28","-7,4,28","6,4,28","-6,4,28","6,5,28","-6,5,28","6,4,29","-6,4,29","6,5,29","-6,5,29","9,3,25","-9,3,25","9,4,25","-9,4,25","9,3,24","-9,3,24","9,5,25","-9,5,25","-9,5,17","9,5,17","-9,5,14","9,5,14","-9,5,11","9,5,11","-9,5,10","9,5,10","-9,5,9","9,5,9","-9,5,12","9,5,12","-9,5,13","9,5,13","-9,5,15","9,5,15","-9,5,16","9,5,16","-9,5,18","9,5,18","-9,5,19","9,5,19","-10,5,19","10,5,19","-10,4,17","10,4,17","-10,4,14","10,4,14","-10,4,11","10,4,11","-11,4,13","11,4,13","-11,4,16","11,4,16","-11,4,18","11,4,18","1,-1,15","-1,-1,15","2,-1,15","-2,-1,15","3,-1,15","-3,-1,15","3,-1,11","-3,-1,11","3,-1,7","-3,-1,7","3,-1,3","-3,-1,3","3,-1,-1","-3,-1,-1","3,-1,-5","-3,-1,-5","3,-1,-9","-3,-1,-9","3,-1,-13","-3,-1,-13","3,-1,-17","-3,-1,-17","3,-1,-18","-3,-1,-18","2,-1,-18","-2,-1,-18","1,-1,-18","-1,-1,-18","-2,-1,-12","0,-1,14","0,-1,10","0,-1,6","0,-1,2","0,-1,-2","0,-1,-6","0,-1,-10","0,-1,-14","-1,-1,-17","1,-1,-17","-2,-1,-17","2,-1,-17","-1,-1,-13","1,-1,-13","2,-1,-13","-2,-1,-13","-2,-1,-11","-2,-1,-9","2,-1,-9","-1,-1,-9","1,-1,-9","-2,-1,-5","2,-1,-5","-2,-1,14","2,-1,14","-2,-1,10","2,-1,10","-2,-1,6","2,-1,6","-2,-1,2","2,-1,2","-1,-1,-2","1,-1,-2","-1,-1,2","1,-1,2","-1,-1,6","1,-1,6","-1,-1,10","1,-1,10","-1,-1,14","1,-1,14","5,4,-1","-5,4,-1","5,4,0","-5,4,0","5,4,1","-5,4,1","5,4,2","-5,4,2","5,4,3","-5,4,3","5,4,4","-5,4,4","5,4,5","-5,4,5","5,4,-2","-5,4,-2","6,4,5","-6,4,5","6,4,4","-6,4,4","6,4,3","-6,4,3","6,4,2","-6,4,2","6,4,1","-6,4,1","6,4,0","-6,4,0","6,4,-1","-6,4,-1","6,4,-2","-6,4,-2","5,4,-3","-5,4,-3","5,5,-3","-5,5,-3","5,5,-4","-5,5,-4","7,4,-2","-7,4,-2","7,4,-1","-7,4,-1","7,4,0","-7,4,0","7,4,1","-7,4,1","7,4,2","-7,4,2","7,4,3","-7,4,3","7,4,4","-7,4,4","7,4,5","-7,4,5","8,4,5","-8,4,5","9,4,5","-9,4,5","10,4,5","-10,4,5","11,4,5","-11,4,5","8,4,4","-8,4,4","8,4,3","-8,4,3","8,4,2","-8,4,2","8,4,1","-8,4,1","8,4,0","-8,4,0","8,4,-1","-8,4,-1","8,4,-2","-8,4,-2","9,4,-2","-9,4,-2","9,4,-1","-9,4,-1","9,4,0","-9,4,0","9,4,1","-9,4,1","9,4,2","-9,4,2","9,4,3","-9,4,3","9,4,4","-9,4,4","10,4,4","-10,4,4","10,4,3","-10,4,3","10,4,2","-10,4,2","10,4,1","-10,4,1","10,4,0","-10,4,0","10,4,-1","-10,4,-1","10,4,-2","-10,4,-2","11,4,-2","-11,4,-2","11,4,-1","-11,4,-1","11,4,0","-11,4,0","11,4,1","-11,4,1","11,4,2","-11,4,2","11,4,3","-11,4,3","11,4,4","-11,4,4","6,3,5","-6,3,5","6,3,4","-6,3,4","6,3,3","-6,3,3","6,3,2","-6,3,2","6,3,1","-6,3,1","6,3,0","-6,3,0","6,3,-1","-6,3,-1","6,3,-2","-6,3,-2","6,5,-2","-6,5,-2","6,5,-1","-6,5,-1","6,5,0","-6,5,0","6,5,1","-6,5,1","6,5,2","-6,5,2","6,5,3","-6,5,3","6,5,4","-6,5,4","6,5,5","-6,5,5","8,4,-3","-8,4,-3","10,5,-2","-10,5,-2","10,5,-1","-10,5,-1","10,5,0","-10,5,0","10,5,1","-10,5,1","10,5,2","-10,5,2","10,5,3","-10,5,3","10,5,4","-10,5,4","10,5,5","-10,5,5","10,5,6","-10,5,6","8,5,-3","-8,5,-3","8,5,-5","-8,5,-5","5,5,5","-5,5,5","6,2,5","-6,2,5","6,2,1","-6,2,1","6,1,5","-6,1,5","6,1,1","-6,1,1","6,1,-3","-6,1,-3","6,1,-4","-6,1,-4","10,3,6","-10,3,6","10,3,5","-10,3,5","10,3,4","-10,3,4","10,3,3","-10,3,3","10,3,2","-10,3,2","10,3,1","-10,3,1","10,3,0","-10,3,0","10,3,-1","-10,3,-1","10,3,-2","-10,3,-2","10,5,7","-10,5,7","10,5,8","-10,5,8","6,5,9","-6,5,9","5,5,9","-5,5,9","5,6,27","-5,6,27","6,6,27","-6,6,27","8,5,27","-8,5,27","10,5,22","-10,5,22","10,5,21","-10,5,21","10,5,20","-10,5,20","9,5,23","-9,5,23","9,5,22","-9,5,22","9,4,22","-9,4,22","9,3,22","-9,3,22","9,3,21","-9,3,21","9,4,21","-9,4,21","9,5,21","-9,5,21","9,5,20","-9,5,20","9,4,20","-9,4,20","9,3,20","-9,3,20","8,5,22","-8,5,22","8,5,21","-8,5,21","8,5,20","-8,5,20","8,5,26","-8,5,26","8,4,26","-8,4,26","8,3,25","-8,3,25","8,6,21","-8,6,21","7,5,26","-7,5,26","6,6,26","-6,6,26","5,2,25","-5,2,25","5,7,25","-5,7,25","1,7,25","1,2,25","1,6,26","-5,6,26","5,6,26","7,5,-20","-7,5,-20","8,5,-20","-8,5,-20","8,5,-21","-8,5,-21","9,5,-20","-9,5,-20","5,7,-20","-5,7,-20","4,7,-20","-4,7,-20","11,4,-4","-11,4,-4","12,4,-4","-12,4,-4","11,4,-5","-11,4,-5","11,4,-3","-11,4,-3","10,4,-4","-10,4,-4","10,3,-4","-10,3,-4","10,5,-4","-10,5,-4","11,4,6","-11,4,6","8,5,9","-8,5,9","7,5,9","-7,5,9","11,4,10","-11,4,10","10,5,9","-10,5,9","9,4,8","-9,4,8","10,4,8","-10,4,8","11,4,9","-11,4,9","11,4,8","-11,4,8","12,4,8","-12,4,8","11,4,7","-11,4,7","12,4,7","-12,4,7","7,4,-4","-7,4,-4","8,4,-4","-8,4,-4","7,5,-4","-7,5,-4","7,6,-4","-7,6,-4","7,7,-4","-7,7,-4","8,7,-3","-8,7,-3","8,7,-2","-8,7,-2","8,6,-5","-8,6,-5","6,5,-4","-6,5,-4","5,6,-4","-5,6,-4","7,7,-5","-7,7,-5","8,7,-5","-8,7,-5","8,8,-5","-8,8,-5","8,7,-4","-8,7,-4","7,7,-6","-7,7,-6","7,7,-7","-7,7,-7","8,7,-7","-8,7,-7","8,7,-9","-8,7,-9","7,7,-9","-7,7,-9","7,7,-8","-7,7,-8","8,7,-8","-8,7,-8","8,7,-6","-8,7,-6","8,8,-7","-8,8,-7","8,8,-9","-8,8,-9","7,5,-24","-7,5,-24","7,4,-23","-7,4,-23","7,5,-23","-7,5,-23","8,5,-22","-8,5,-22","6,5,-22","-6,5,-22","7,5,-22","-7,5,-22","7,6,-6","-7,6,-6","7,5,-6","-7,5,-6","7,4,-6","-7,4,-6","7,4,-5","-7,4,-5","8,4,-5","-8,4,-5","7,5,-7","-7,5,-7","1,2,8","-1,2,8","1,1,8","-1,1,8","1,4,8","-1,4,8","8,2,8","-8,2,8","7,2,8","-7,2,8","8,3,7","-8,3,7","8,4,7","-8,4,7","9,4,7","-9,4,7","10,4,7","-10,4,7","10,3,7","-10,3,7","7,3,-4","-7,3,-4","8,3,8","-8,3,8","7,3,8","-7,3,8","7,3,7","-7,3,7","8,2,7","-8,2,7","7,4,6","-7,4,6","4,1,12","-4,1,12","4,1,13","-4,1,13","4,1,14","-4,1,14","4,1,15","-4,1,15","4,1,16","-4,1,16","4,1,17","-4,1,17","3,1,17","-3,1,17","3,8,17","-3,8,17","3,7,16","-3,7,16","3,7,12","-3,7,12","3,8,12","-3,8,12","3,8,16","-3,8,16","5,9,18","-5,9,18","3,9,18","-3,9,18","3,9,11","-3,9,11","5,9,11","-5,9,11","4,9,11","-4,9,11","4,9,18","-4,9,18","3,9,17","-3,9,17","5,9,17","-5,9,17","5,9,13","-5,9,13","5,9,12","-5,9,12","3,9,12","-3,9,12","3,9,13","-3,9,13","3,8,18","-3,8,18","4,8,18","-4,8,18","5,8,18","-5,8,18","5,8,17","-5,8,17","5,8,16","-5,8,16","5,8,15","-5,8,15","5,8,14","-5,8,14","5,8,13","-5,8,13","5,8,12","-5,8,12","5,8,11","-5,8,11","4,8,11","-4,8,11","3,1,18","-3,1,18","4,1,18","-4,1,18","5,1,18","-5,1,18","5,1,12","-5,1,12","4,2,12","-4,2,12","4,2,13","-4,2,13","4,2,14","-4,2,14","4,2,15","-4,2,15","4,2,16","-4,2,16","4,2,17","-4,2,17","5,2,17","-5,2,17","5,2,16","-5,2,16","5,2,15","-5,2,15","5,2,14","-5,2,14","5,2,13","-5,2,13","5,2,12","-5,2,12","4,3,12","-4,3,12","4,3,13","-4,3,13","4,3,14","-4,3,14","4,3,15","-4,3,15","4,3,16","-4,3,16","4,3,17","-4,3,17","4,4,17","-4,4,17","4,4,16","-4,4,16","4,4,15","-4,4,15","4,4,14","-4,4,14","4,4,13","-4,4,13","4,4,12","-4,4,12","4,5,12","-4,5,12","4,5,13","-4,5,13","4,5,14","-4,5,14","4,5,15","-4,5,15","4,5,16","-4,5,16","4,5,17","-4,5,17","4,6,17","-4,6,17","4,6,16","-4,6,16","4,6,15","-4,6,15","4,6,14","-4,6,14","4,6,13","-4,6,13","4,6,12","-4,6,12","4,7,12","-4,7,12","4,7,13","-4,7,13","4,7,14","-4,7,14","4,7,15","-4,7,15","4,7,16","-4,7,16","4,7,17","-4,7,17","4,8,17","-4,8,17","4,8,16","-4,8,16","4,8,15","-4,8,15","4,8,14","-4,8,14","4,8,13","-4,8,13","4,8,12","-4,8,12","5,3,17","-5,3,17","5,4,17","-5,4,17","5,4,13","-5,4,13","6,1,13","-6,1,13","5,1,13","-5,1,13","5,1,14","-5,1,14","6,1,14","-6,1,14","-5,3,13","5,3,13","-4,8,10","4,8,10","-5,8,10","5,8,10","-6,2,10","6,2,10","-6,2,14","6,2,14","7,5,28","-7,5,28","7,5,27","-7,5,27","0,8,17","1,8,17","-1,8,17","2,8,17","-2,8,17","2,1,17","-2,1,17","1,1,17","-1,1,17","0,1,17","-10,5,-17","10,5,-17","-10,5,-16","10,5,-16","-9,5,-19","9,5,-19","-9,5,-18","9,5,-18","-9,5,-17","9,5,-17","-9,5,-16","9,5,-16","-9,4,-16","9,4,-16","-9,4,-17","9,4,-17","-9,4,-18","9,4,-18","-9,3,-18","9,3,-18","-9,3,-17","9,3,-17","-9,3,-16","9,3,-16","-8,2,-16","8,2,-16","-8,3,-17","8,3,-17","-8,3,-18","8,3,-18","-8,3,-19","8,3,-19","-8,6,-16","8,6,-16","5,4,29","-5,4,29","5,5,29","-5,5,29","4,3,27","-4,3,27","0,3,27","0,6,27","4,6,27","-4,6,27","5,5,26","-5,5,26","-5,5,28","5,5,28","4,5,19","-4,5,19","4,4,19","-4,4,19","3,4,19","-3,4,19","2,4,19","-2,4,19","1,4,19","-1,4,19","0,4,19","0,5,19","1,5,19","-1,5,19","2,5,19","-2,5,19","3,5,19","-3,5,19","4,5,20","-4,5,20","3,5,20","-3,5,20","2,5,20","-2,5,20","1,5,20","-1,5,20","0,5,20","0,4,20","1,4,20","-1,4,20","2,4,20","-2,4,20","3,4,20","-3,4,20","4,4,20","-4,4,20","4,6,20","-4,6,20","3,6,20","-3,6,20","2,6,20","-2,6,20","1,6,20","-1,6,20","0,6,20","0,3,20","1,3,20","-1,3,20","2,3,20","-2,3,20","3,3,20","-3,3,20","4,3,20","-4,3,20","5,4,20","-5,4,20","5,5,20","-5,5,20","0,5,18","1,5,18","-1,5,18","2,5,18","-2,5,18","4,4,21","-4,4,21","3,4,21","-3,4,21","2,4,21","-2,4,21","1,4,21","-1,4,21","0,4,21","4,5,21","-4,5,21","3,5,21","-3,5,21","2,5,21","-2,5,21","1,5,21","-1,5,21","0,5,21","0,5,22","1,5,22","-1,5,22","2,5,22","-2,5,22","3,5,22","-3,5,22","4,5,22","-4,5,22","4,5,23","-4,5,23","3,5,23","-3,5,23","2,5,23","-2,5,23","1,5,23","-1,5,23","0,5,23","0,5,24","1,5,24","-1,5,24","2,5,24","-2,5,24","3,5,24","-3,5,24","4,5,24","-4,5,24","4,5,25","-4,5,25","3,5,25","-3,5,25","2,5,25","-2,5,25","1,5,25","-1,5,25","0,5,25","0,5,26","-1,5,26","1,5,26","-2,5,26","2,5,26","-3,5,26","3,5,26","-4,5,26","4,5,26","-4,5,27","4,5,27","-3,5,27","3,5,27","-2,5,27","2,5,27","-1,5,27","1,5,27","0,5,27","-4,5,28","4,5,28","-3,5,28","3,5,28","-2,5,28","2,5,28","-1,5,28","1,5,28","0,5,28","4,4,22","-4,4,22","3,4,22","-3,4,22","2,4,22","-2,4,22","1,4,22","-1,4,22","0,4,22","0,4,23","1,4,23","-1,4,23","2,4,23","-2,4,23","3,4,23","-3,4,23","4,4,23","-4,4,23","4,4,24","-4,4,24","3,4,24","-3,4,24","2,4,24","-2,4,24","1,4,24","-1,4,24","0,4,24","0,4,25","1,4,25","-1,4,25","2,4,25","-2,4,25","3,4,25","-3,4,25","4,4,25","-4,4,25","4,4,26","-4,4,26","3,4,26","-3,4,26","2,4,26","-2,4,26","1,4,26","-1,4,26","0,4,26","0,4,27","1,4,27","-1,4,27","2,4,27","-2,4,27","3,4,27","-3,4,27","4,4,27","-4,4,27","4,4,28","-4,4,28","3,4,28","-3,4,28","2,4,28","-2,4,28","1,4,28","-1,4,28","0,4,28","0,6,25","-1,6,25","1,6,25","-2,6,25","2,6,25","-3,6,25","3,6,25","-4,6,25","4,6,25","-5,6,25","5,6,25","-5,5,25","5,5,25","-4,3,25","4,3,25","-3,3,25","3,3,25","-2,3,25","2,3,25","-1,3,25","1,3,25","0,3,25","-4,3,21","4,3,21","0,3,21","-5,6,21","5,6,21","-4,6,21","4,6,21","0,6,19","4,6,19","-4,6,19","2,6,18","-2,6,18","5,6,20","-5,6,20","5,5,19","-5,5,19","2,1,18","-2,1,18","1,1,18","-1,1,18","5,1,19","-5,1,19","5,2,19","-5,2,19","5,3,19","-5,3,19","1,3,19","1,2,19","1,1,19","4,2,20","-4,2,20","0,2,20","5,2,20","-5,2,20","5,1,20","-5,1,20","1,1,20","5,1,22","-5,1,22","1,1,21","5,1,21","-5,1,21","5,2,24","-5,2,24","5,2,23","-5,2,23","5,2,22","-5,2,22","5,2,21","-5,2,21","1,2,21","1,2,22","1,2,23","1,2,24","6,2,20","-6,2,20","5,7,20","-5,7,20","-1,7,20","1,7,19","1,7,18","5,7,19","-5,7,19","2,7,18","-2,7,18","5,7,24","-5,7,24","0,4,18","0,3,18","0,1,18","5,1,-4","-5,1,-4","5,5,-2","-5,5,-2","5,5,-1","-5,5,-1","5,5,0","-5,5,0","5,5,1","-5,5,1","3,0,-6","-3,0,-6","-2,0,3","2,0,3","-2,0,4","2,0,4","-2,0,5","2,0,5","-2,0,2","2,0,2","-2,0,8","2,0,8","-2,0,1","2,0,1","-5,1,17","5,1,17","-5,1,16","5,1,16","-5,1,15","5,1,15","-5,1,11","5,1,11","-1,10,-9","1,10,-9","0,11,-12","0,8,-18","0,7,-17","0,8,-19","0,7,-18","0,8,-20","0,7,-19","1,2,14","-1,2,14","1,4,12","0,10,-13","0,10,-12","-6,2,19","6,2,19","-6,3,19","6,3,19","-6,3,17","6,3,17","-6,3,15","6,3,15","-6,3,13","6,3,13","-6,3,11","6,3,11","-6,5,11","6,5,11","-6,5,13","6,5,13","-6,5,15","6,5,15","-6,5,17","6,5,17","-6,5,19","6,5,19","-6,7,21","6,7,21","6,7,17","-7,2,13","7,2,13","-7,2,17","7,2,17","-7,2,21","7,2,21","-8,2,19","8,2,19","-8,2,15","8,2,15","-8,2,11","8,2,11","-8,6,10","8,6,10","-8,6,11","8,6,11","-8,6,12","8,6,12","-8,6,13","8,6,13","-8,6,14","8,6,14","-8,6,15","8,6,15","-8,6,16","8,6,16","-8,6,17","8,6,17","-8,6,18","8,6,18","-8,6,19","8,6,19","-7,6,20","7,6,20","-6,6,20","6,6,20","-7,7,10","7,7,10","-8,6,9","8,6,9","-7,7,9","7,7,9","-5,8,9","5,8,9","-7,5,-19","7,5,-19","-6,5,-18","6,5,-18","-6,5,-17","6,5,-17","-6,5,-16","6,5,-16","-6,5,-15","6,5,-15","6,4,-13","-6,5,-14","6,5,-14","-6,5,-13","6,5,-13","-6,5,-12","6,5,-12","-6,5,-11","6,5,-11","-6,5,-10","6,5,-10","-6,5,-9","6,5,-9","-6,6,-18","-6,6,-17","-6,6,-16","-6,6,-15","-6,6,-14","-6,6,-13","-6,6,-12","-6,6,-11","-6,6,-10","-6,6,-9","-5,5,-9","-5,5,-10","-5,5,-11","-5,5,-12","-5,5,-13","-5,5,-14","-5,5,-15","-5,5,-16","-5,5,-17","-5,5,-18","-6,4,-18","-6,4,-17","-6,4,-16","-6,4,-15","-6,4,-13","-6,4,-14","-7,5,-18","-7,5,-17","-7,5,-16","-7,5,-15","-7,5,-14","-7,5,-13","-7,5,-12","-7,5,-11","-7,5,-10","-7,5,-9","-6,7,-8","-6,3,-15","-6,3,-16","-6,3,-17","-6,3,-18","-4,5,-9","-4,5,-10","-4,5,-11","-4,5,-12","-4,5,-13","-4,5,-14","-4,5,-15","-4,5,-16","-8,5,-15","-8,5,-14","-8,5,-13","-8,5,-12","-8,5,-11","-8,5,-10","-8,5,-9","4,7,24","-4,7,24","0,7,24","7,2,22","-7,2,22","6,2,22","-6,2,22","7,3,24","-7,3,24","6,3,24","-6,3,24","5,3,25","-5,3,25","5,4,25","-5,4,25","5,6,1","-5,6,1","5,6,5","-5,6,5","8,6,8","-8,6,8","8,6,7","-8,6,7","8,6,6","-8,6,6","8,6,5","-8,6,5","8,6,1","-8,6,1","6,6,1","-6,6,1","6,6,5","-6,6,5","7,6,4","-7,6,4","7,6,3","-7,6,3","7,6,2","-7,6,2","7,6,1","-7,6,1","7,6,0","-7,6,0","7,6,-1","-7,6,-1","7,6,5","-7,6,5","7,7,2","-7,7,2","7,7,5","-7,7,5","-7,2,-3","7,2,-3","-8,2,-3","8,2,-3","-8,3,-3","8,3,-3","-7,3,-3","7,3,-3","-7,3,-6","7,3,-6","-8,6,-7","8,6,-7","-7,6,-7","7,6,-7","-8,2,-7","8,2,-7","-7,3,-7","7,3,-7","-7,6,-8","7,6,-8","-6,5,-6","6,5,-6","-6,6,-6","6,6,-6","-7,2,-18","7,2,-18","-7,2,-14","7,2,-14","-8,2,-15","8,2,-15","-8,2,-11","8,2,-11","-7,2,-10","7,2,-10","0,7,-9","0,7,-10","0,7,-11","0,7,-12","0,7,-13","0,7,-14","-1,7,-14","1,7,-14","-1,7,-13","1,7,-13","-1,7,-12","1,7,-12","-1,7,-11","1,7,-11","-1,7,-10","1,7,-10","-1,7,-9","1,7,-9","2,7,-15","-2,7,-15","2,7,-14","-2,7,-14","2,7,-10","-2,7,-10","-1,7,-16","2,7,-6","-2,7,-6","1,8,-8","-1,8,-8","1,8,-12","-1,8,-12","0,8,-4","0,8,4","0,8,8","0,8,12","0,8,16","0,7,-8","0,7,-7","-1,7,-7","1,7,-7","-1,7,-8","1,7,-8","0,7,-6","0,7,-5","-1,7,-6","1,7,-6","-1,7,-5","1,7,-5","1,7,0","1,8,-4","-1,8,-4","1,8,0","-1,8,0","6,6,-18","6,6,-17","6,6,-16","6,6,-15","6,6,-14","6,6,-13","6,6,-12","6,6,-11","6,6,-10","6,6,-9","-6,7,-12","-6,7,-20","6,7,-12","6,7,-8","7,5,-9","7,5,-10","7,5,-11","7,5,-12","7,5,-13","7,5,-14","7,5,-15","7,5,-16","7,5,-17","7,5,-18","8,5,-15","8,5,-14","8,5,-13","8,5,-12","8,5,-11","8,5,-10","8,5,-9","5,5,-9","5,5,-10","5,5,-11","5,5,-12","5,5,-13","5,5,-14","5,5,-15","5,5,-16","5,5,-17","5,5,-18","4,5,-16","4,5,-15","4,5,-14","4,5,-13","4,5,-12","4,5,-11","4,5,-10","4,5,-9","6,4,-15","6,3,-15","6,4,-16","6,4,-17","6,4,-18","6,3,-18","6,3,-17","6,3,-16","0,7,23","0,7,21","-6,7,17","-6,7,13","6,7,13","5,7,-12","-5,7,-12","0,8,-3","0,9,-2","0,8,-2","0,8,0","0,6,-21","-2,6,-20","0,6,-20","0,4,-21","0,4,-20","1,4,-20","-2,4,-20","-4,10,10","4,10,10","-10,7,-13","10,7,-13","7,4,-19","-7,4,-19","6,4,-19","-6,4,-19","-3,8,-18","3,8,-18","-3,9,-18","3,9,-18","-1,9,-18","1,9,-18","-2,9,-18","2,9,-18","-3,9,-14","3,9,-14","-1,9,-17","1,9,-17","-2,9,-17","2,9,-17","0,8,-17","-1,8,-17","1,8,-17","-1,8,-16","1,8,-16","-2,8,-16","2,8,-16","-1,8,-18","1,8,-18","-2,8,-17","2,8,-17","-1,7,-18","1,7,-18","-2,7,-17","2,7,-17","-1,8,-19","1,8,-19","-1,8,-20","1,8,-20","-2,8,-18","2,8,-18","-2,8,-19","2,8,-19","-2,8,-20","2,8,-20","0,8,-14","0,9,-14","0,8,-13","0,8,-16","0,9,-15","-2,8,-15","2,8,-15","-6,7,2","6,7,2","-5,7,2","5,7,2","-5,8,0","5,8,0","-5,8,4","5,8,4","-6,7,6","6,7,6","-5,7,6","5,7,6","-5,8,8","5,8,8","-7,7,8","7,7,8","-8,3,-8","8,3,-8","-8,2,-2","8,2,-2","-8,2,-1","8,2,-1","-8,2,0","8,2,0","-8,2,1","8,2,1","-8,2,2","8,2,2","-8,2,3","8,2,3","-8,2,4","8,2,4","-8,2,5","8,2,5","-8,2,6","8,2,6","-7,2,6","7,2,6","-7,2,5","7,2,5","-7,2,4","7,2,4","-7,2,3","7,2,3","-7,2,2","7,2,2","-7,2,1","7,2,1","-7,2,0","7,2,0","-7,2,-1","7,2,-1","-7,2,-2","7,2,-2","-7,4,-17","7,4,-17","-7,4,-15","7,4,-15","-7,4,-13","7,4,-13","-7,4,-11","7,4,-11","-7,4,-9","7,4,-9","-7,4,-10","7,4,-10","-7,4,-12","7,4,-12","-7,4,-14","7,4,-14","-7,4,-16","7,4,-16","-7,4,-18","7,4,-18","-8,3,-9","8,3,-9","-8,3,-13","8,3,-13","-8,4,-13","8,4,-13","-8,4,-9","8,4,-9","0,5,-11","0,4,-11","-1,2,6","1,2,6","-2,2,6","2,2,6","-2,1,6","2,1,6","-1,1,6","1,1,6","-1,3,6","1,3,6","-2,3,6","2,3,6","-2,4,6","2,4,6","-6,4,6","6,4,6","1,4,6","-1,4,6","5,7,8","-5,7,8","-1,8,4","1,8,4","-1,8,8","1,8,8","-1,8,12","1,8,12","-1,8,16","1,8,16","-2,8,16","2,8,16","-2,8,12","2,8,12","-4,8,8","4,8,8","-4,8,7","4,8,7","-4,7,8","4,7,8","-4,7,7","4,7,7","-3,7,8","3,7,8","-7,6,-2","7,6,-2","5,1,-23","-5,1,-23","1,1,-23","-1,1,-23","1,5,-23","-1,5,-23","0,6,28","0,7,26","0,8,23","0,9,19","0,10,15","0,10,14","0,10,9","0,10,4","0,10,-1","-2,8,-6","2,8,-6","-2,8,-10","2,8,-10","-5,8,-17","5,8,-17","-5,8,-16","5,8,-16","-5,8,-15","5,8,-15","-5,8,-14","5,8,-14","-5,8,-13","5,8,-13","-5,8,-12","5,8,-12","-5,8,-11","5,8,-11","-5,8,-10","5,8,-10","-5,8,-8","5,8,-8","-5,8,-7","5,8,-7","-5,8,-6","5,8,-6","-5,8,-5","5,8,-5","-4,6,-5","4,6,-5","-7,7,-10","7,7,-10","-8,6,-9","8,6,-9","-8,6,-13","8,6,-13","-7,6,-9","7,6,-9","-7,6,-13","7,6,-13","-5,7,-6","5,7,-6","-5,7,-10","5,7,-10","-4,7,-6","4,7,-6","-4,7,-10","4,7,-10","-5,7,-14","5,7,-14","-4,7,-14","4,7,-14","-4,7,-18","4,7,-18","-5,7,-18","5,7,-18","-3,9,-10","3,9,-10","-3,9,-11","3,9,-11","-3,9,-12","3,9,-12","0,9,-17","0,9,-18","0,7,-21","0,6,-23","0,1,-23","0,0,-21","0,-1,-18","0,-1,15","0,0,19","0,1,23","0,2,26","0,3,28","8,7,10","-8,7,10","8,7,9","-8,7,9","8,7,8","-8,7,8","8,7,7","-8,7,7","4,6,-11","-4,6,-11","4,6,-13","-4,6,-13","4,6,-15","-4,6,-15","4,6,-17","-4,6,-17","4,6,-19","-4,6,-19","4,6,-16","-4,6,-16","4,6,-12","-4,6,-12","6,6,-19","-6,6,-19","5,5,-8","-5,5,-8","5,5,-7","-5,5,-7","5,5,-6","-5,5,-6","4,5,-6","-4,5,-6","4,5,-7","-4,5,-7","4,5,-8","-4,5,-8","4,6,-8","-4,6,-8","5,6,-8","-5,6,-8","5,6,-7","-5,6,-7","5,6,-6","-5,6,-6","4,6,-6","-4,6,-6","4,6,-7","-4,6,-7","-7,4,24","7,4,24","-7,4,23","7,4,23","-7,4,22","7,4,22","-7,4,21","7,4,21","-6,4,21","6,4,21","-6,4,22","6,4,22","-6,4,23","6,4,23","-6,4,24","6,4,24","-7,5,24","7,5,24","-6,5,24","6,5,24","-7,6,24","7,6,24","-6,6,24","6,6,24","-4,6,-9","4,6,-9","-5,6,-16","5,6,-16","-5,6,-12","5,6,-12","-4,6,-14","4,6,-14","-4,6,-18","4,6,-18","-4,6,-10","4,6,-10","-6,7,8","6,7,8","8,6,-3","-8,6,-3","5,6,-3","-5,6,-3","4,1,11","-4,1,11","-5,3,26","5,3,26","1,3,26","-4,9,-9","4,9,-9","-4,9,-6","4,9,-6","0,7,-4","-1,7,-1","1,7,-1","0,7,-1","0,6,21","7,6,25","-7,6,25","6,6,25","-6,6,25","7,6,-17","-7,6,-17","0,7,16","-1,7,16","1,7,16","4,10,-9","-4,10,-9","0,12,-14","4,8,-9","-4,8,-9","3,8,-9","-3,8,-9","5,8,-9","-5,8,-9","4,9,-8","-4,9,-8","-7,7,-14","7,7,-14","5,4,-18","-5,4,-18","0,5,10","-1,7,-19","1,7,-19","-2,7,-19","2,7,-19","0,10,-14","0,11,-14","1,6,-20","-5,7,-13","5,7,-13","-6,7,12","6,7,12","0,7,22","0,8,22","-1,8,22","1,8,22","-2,8,22","2,8,22","-3,8,22","3,8,22","-4,8,22","4,8,22","-5,8,22","5,8,22","-4,7,23","4,7,23","-4,7,22","4,7,22","-4,7,21","4,7,21","-3,9,-13","3,9,-13","-1,9,-13","1,9,-13","-2,10,-11","2,10,-11","-6,7,-16","6,7,-16","0,7,-15","0,9,-10","0,9,-12","0,9,-9"],"BLR":[2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,15,15,15,15,14,23,5,16,17,5,16,17,9,12,4,16,8,16,4,16,8,16,5,5,16,17,5,16,17,15,5,5,3,5,3,5,15,12,14,15,12,14,15,22,12,16,14,14,16,12,16,14,14,16,16,18,0,16,0,0,16,0,16,0,0,16,16,0,16,0,0,16,0,16,0,0,16,16,6,3,0,2,3,0,2,2,0,8,14,10,14,10,8,14,10,14,10,12,23,4,14,6,2,14,4,14,6,2,14,0,3,0,0,0,0,0,0,0,0,0,0,0,0,8,0,10,8,0,8,0,10,8,0,0,4,0,0,1,0,4,0,0,1,0,1,13,12,14,13,12,14,19,12,18,14,14,18,12,18,14,14,18,18,22,0,18,0,0,18,0,18,0,0,18,18,0,18,0,0,18,0,18,0,0,18,18,6,1,0,2,1,0,2,1,0,13,13,13,13,18,7,18,19,7,18,19,19,0,4,18,8,18,4,18,8,18,7,18,19,7,18,19,7,18,7,1,20,2,7,1,20,2,6,0,0,0,0,1,3,1,3,3,1,3,1,1,3,1,3,0,0,0,2,2,2,6,6,6,6,6,6,6,6,6,6,3,6,6,3,4,4,4,4,3,3,9,0,8,0,4,4,4,4,7,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,8,0,4,4,4,4,5,14,14,14,2,2,2,3,1,3,1,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,2,2,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,10,10,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4,4,4,23,22,23,22,23,22,23,22,23,22,20,21,20,21,20,21,20,21,20,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,10,10,4,4,4,4,4,4,4,4,4,4,23,22,23,22,23,22,23,22,23,22,20,21,20,21,20,21,20,21,20,21,18,16,18,16,18,16,18,16,18,16,20,21,20,21,20,21,20,21,20,21,0,0,0,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,2,2,11,9,23,22,2,2,0,0,8,8,2,2,2,0,0,0,0,6,0,3,1,3,1,3,1,3,1,3,1,7,7,5,7,5,7,5,7,7,5,19,17,19,17,19,17,19,17,19,17,19,17,19,19,19,17,7,7,5,7,5,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,3,11,9,0,0,3,1,1,3,1,3,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,2,0,0,0,0,6,6,6,6,0,0,8,8,8,8,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,2,2,2,2,2,2,6,6,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,6,6,6,6,6,2,2,2,2,3,0,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,1,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,1,3,0,0,0,0,3,1,3,1,3,1,0,0,0,0,2,2,1,3,2,2,6,6,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,19,17,19,17,19,17,19,17,0,0,2,2,2,2,2,2,19,17,19,17,2,2,18,16,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,2,2,2,2,0,0,0,0,0,2,2,2,2,3,1,2,2,6,2,2,2,2,2,2,0,0,0,0,2,0,0,0,2,2,0,2,2,2,2,1,3,1,3,1,3,2,2,3,1,3,1,3,1,3,1,12,3,1,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,14,14,14,14,14,14,14,14,14,14,14,14,14,14,10,10,10,10,10,10,10,10,4,4,4,4,0,0,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,0,0,0,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,0,0,0,0,0,0,10,10,19,17,19,17,19,17,19,17,0,0,0,0,0,0,19,17,19,17,14,14,15,13,15,13,0,0,1,3,1,1,1,1,1,5,9,2,2,2,2,22,23,2,2,2,2,19,17,19,17,19,17,19,17,19,17,0,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,15,13,19,17,15,13,14,14,15,13,19,17,2,2,0,0,0,0,0,0,2,2,0,0,2,2,0,0,0,0,4,4,0,0,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,3,1,3,1,3,1,0,0,10,10,0,0,0,4,4,0,0,3,1,4,4,3,1,0,0,4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,4,4,4,4,4,4,4,4,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,17,19,14,14,14,14,14,14,17,19,17,19,17,19,17,19,17,19,16,18,16,18,16,18,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,1,3,1,3,0,16,18,16,18,16,18,16,18,16,18,0,0,0,0,0,0,2,2,2,2,12,12,12,12,12,12,0,0,0,0,0,0,16,18,12,12,12,12,12,12,12,12,12,12,12,12,12,12,16,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,18,16,18,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,18,16,18,16,18,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,16,18,16,18,12,12,12,12,12,12,0,0,0,0,21,20,8,8,16,18,15,13,4,4,20,21,4,4,4,4,4,4,0,0,4,4,8,8,0,0,0,0,8,8,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,3,1,3,1,3,2,2,2,2,0,0,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,14,14,14,14,14,14,6,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,13,15,13,15,13,15,13,15,13,15,13,15,13,15,13,15,3,1,3,1,23,22,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,11,9,11,9,11,9,11,9,11,9,11,9,11,9,11,9,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,2,2,2,2,2,2,2,2,2,2,8,8,8,8,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,2,2,2,2,6,6,6,6,6,6,5,7,5,7,5,7,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,14,14,14,14,14,14,14,14,4,4,4,4,21,20,21,20,21,21,21,1,3,4,4,4,4,4,4,4,4,4,4,4,4,2,2,1,3,0,0,0,0,3,1,0,0,0,0,3,1,7,5,7,5,0,0,4,4,3,1,11,9,13,15,0,0,5,7,3,1,13,15,2,2,1,3,2,2,2,2,2,2,3,1,3,1,3,1,9,11,9,11,2,2,2,2,11,9,6,6,2,2,2,2,2,2,2,2,2,2,2,2,7,5,7,5,11,9,11,9,19,17,7,5,19,17,0,0,0,0,18,16,2,2,2,2,2,2,2,2,0,0,2,2,1,3,0,0,6,6,3,1,3,1,3,1,3,1,3,1,3,1,3,1,5,7,3,1,3,1,2,2,3,1,0,0,3,1,3,1,3,1,3,1,3,1,3,1,8,8,4,4,2,2,2,2,2,2,2,2,2,2,1,3,0,0,3,1,0,0,2,2,2,2,19,17,11,9,11,9,9,11,9,11,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,9,11,9,11,9,11,3,1,10,10,10,10,10,10,10,10,10,10,10,10,23,22,23,22,23,22,23,22,23,22,23,22,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,2,2,2,2,3,1,20,21,0,0,2,2,6,6,6,6,0,0,0,0,20,21,4,4,4,4,4,4,4,10,10,10,10,10,7,5,7,5,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,10,10,10,10,0,0,4,4,8,8,3,1,0,0,3,1,7,5,7,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,6,6,6,6,6,6,6,6,6,10,10,10,10,10,10,10,10,10,16,18,16,18,6,6,6,6,6,12,12,12,12,12,12,12,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,0,5,7,1,3,2,3,1,3,1,2,2,6,6,11,9,11,9,3,1,3,1,3,1,3,3,3,3,1,0,9,11,3,1,3,3,1,3,3,1,3,1,3,1,3,1,3,1,3,3,3,21,8,8,21,20,20,21,21,21,20,2,2,2,2,0,14,10,10,10,0,0,3,1,3,1,3,1,0,0,11,9,11,9,11,9,11,9,2,2,0,0,1,3,1,3,1,3,10,10,17,19,2,8,2,2,8,2,14,1,3,3,2,0,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,2,2,2,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,1,3,1,3,1,3,1,3,20,21,20,21,20,21,20,21,6,20,21,20,21,20,21,20,21,20,21,20,21,20,20,20,20,20,20,20,20,20,20,4,4,4,4,4,4,4,4,4,4,21,21,21,21,6,6,8,8,8,8,8,8,8,8,8,8,0,21,21,21,21,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,3,1,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,1,3,1,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,4,4,0,0,1,3,11,9,7,5,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,1,3,1,3,1,3,1,3,1,3,3,1,0,0,0,0,1,1,3,2,2,2,2,2,2,2,2,2,0,0,1,3,1,3,0,0,1,3,1,3,3,2,2,2,2,20,20,20,20,20,20,20,20,20,20,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,21,21,21,21,21,21,21,21,0,10,2,3,1,1,3,10,2,4,2,0,1,8,6,2,17,1,4,4,4,4,5,7,5,7,2,2,2,2,2,2,2,2,19,17,0,0,0,0,8,8,8,8,8,8,8,2,2,2,2,14,14,14,14,2,2,2,2,2,2,2,2,2,2,0,0,0,0,8,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,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,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,7,5,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,3,1,3,0,0,0,0,2,2,2,2,15,13,14,14,4,4,0,0,0,0,0,2,2,2,2,2,2,2,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,5,7,5,7,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,0,0,0,0,0,0,0,2,2,2,6,14,14,12,12,12,12,12,0,0,0,0,0,0,0,0,9,11,9,11,9,11,9,11,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,3,1,11,9,11,9,3,1,3,1,3,1,2,2,3,1,0,0,9,11,1,3,21,0,0,2,2,4,2,2,2,0,6,6,6,6,2,2,0,0,0,3,1,1,14,14,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,1,1,0,0,0,2,2,0,2,2,2,2,2,2,2,2,2,2,2,1,3,1,3,1,3,0,0,0,0,3,1,0,0,2,1,14,0],"BP1":["0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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.25,1,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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,180,1","0,0,180,1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","20,20,0,0","20,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","103,101,0,0","40,82,0,0","40,82,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","82,82,0,0","82,82,0,0","82,82,0,0","82,82,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,5000,-50,2000","0,5000,-50,2000","0,0,0,1","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,0","0,0,0,0","0,0,0,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","200,300,75,100","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,3","0,0,0,51","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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,18,170,51","26,18,170,51","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,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","0,0,1,2","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,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,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,0,0","0,0,0,0","0,0,1,1","0,0,1,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,0,0","0,0,0,0","0,0,1,1","0,0,1,2","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,2","0,0,1,1","0,0,1,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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,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,3","0,0,1,3","0,0,0,0","0,0,0,0","0,0,1,3","0,0,1,3","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,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,3","0,0,1,3","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,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","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,1","0,0,1,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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","0,0,180,2","0,0,180,2","0,5000,-50,2000","0,5000,-50,2000","0,0,0,1","0,0,0,1","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","51,103,0,0","51,103,0,0","40,82,0,0","40,82,0,0","82,82,0,0","82,82,0,0","82,82,0,0","82,82,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","40,82,0,0","40,82,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","82,82,0,0","82,82,0,0","82,82,0,0","82,82,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,13.61001","0,0,0,14.74991","0,0,0,13.61001","0,0,0,14.74991","0,0,0,13.61001","0,0,0,14.74991","0,0,0,11.9879","0,0,0,13.12781","0,0,0,11.9879","0,0,0,13.12781","0,0,0,11.9879","0,0,0,13.12781","0,0,0,10.18556","0,0,0,11.32546","0,0,0,10.18556","0,0,0,11.32546","0,0,0,10.18556","0,0,0,11.32546","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,180,1","0,0,180,1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","20,51,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","40,82,0,0","40,82,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","82,82,0,0","82,82,0,0","82,82,0,0","82,82,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,5000,-50,2000","0,5000,-50,2000","0,0,0,1","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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,0,0,0.1","2,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,180,2","1,0,0,0","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","20,20,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,51,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","51,103,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","40,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","80,80,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,5000,-50,2000","0,0,0,1","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.3","0,0,0,0","0,0,0,0","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.4","1,0,0,0.3","1,0,0,0.5","1,0,0,0.5","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","1,0,0,0.5","1,0,0,0.3","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","1,0,0,0.5","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","10,13,120,2","1,0,0,0.1","0,0,180,5","101,104,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,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.8,0.5","0,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.8,0.5","0,0,0,0","1,0,0,0","1,0,0,0","1,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","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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,-35,35,0.1","2,35,35,0.1","0.2,0,0,0.1","0.2,0,0,0.1","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","101,67,0,0","101,67,0,0","67,67,0,0","67,67,0,0","20,20,0,0","20,20,0,0","51,40,0,0","51,40,0,0","63,68,0,0","63,68,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,44.3588","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,45","0,0,0,44.2672","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,-45","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,45","0,0,0,17.71458","0,0,0,16.24899","0,0,0,16.38038","0,0,0,14.91478","0,0,0,14.91276","0,0,0,13.44716","0,0,0,13.29065","0,0,0,11.82506","0,0,0,13.41278","0,0,0,11.70292","0,0,0,15.03489","0,0,0,13.32503","0,0,0,16.50251","0,0,0,14.79265","0,0,0,17.83671","0,0,0,16.12685","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,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","11,1,2,51","10,1,1,51","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,1","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,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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","0,0,0,0","0,0,0,0"],"BP2":["0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","-180,180,-180,180","-180,180,-180,180","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","50,1,40,-1","50,1,40,-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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","50,10,100,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","-180,180,-180,180","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","5000,10,0,0","5000,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","-180,180,-180,180","-180,180,-180,180","50,1,40,-1","50,1,40,-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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","-180,180,-180,180","-180,180,-180,180","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","50,1,40,-1","50,1,40,-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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","-180,180,-180,180","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","50,1,40,-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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","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","0,0,0,0","-180,180,-180,180","75,0,1,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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","10,1,1,1","10,1,1,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,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,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.1,20","1,0,0.1,20","0.5,20,1,20","0.5,20,1,20","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,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,0,0","0.8,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0","0,0,0,0"],"BCI":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,2,3,3,3,2,0,0,2,0,0,0,3,2,2,3,2,2,2,3,2,3,2,0,0,2,0,0,2,3,2,3,2,3,2,2,0,0,2,0,0,2,3,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,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,3,3,2,2,2,3,2,2,2,2,3,2,0,0,2,0,2,2,0,2,0,2,2,0,0,3,0,0,0,0,0,0,0,0,0,0,0,2,2,0,2,2,0,2,0,2,2,0,0,2,2,2,3,2,2,2,2,3,2,3,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,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,2,0,0,3,3,2,3,2,3,1,2,0,0,2,0,0,2,3,2,2,3,2,2,2,3,2,2,0,0,2,0,0,0,3,2,3,3,31,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,0,0,0,0,0,0,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,0,0,31,31,31,31,0,0,0,0,0,31,31,0,0,0,31,31,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,31,31,31,31,31,31,30,30,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,31,31,30,30,30,31,31,30,30,30,30,31,31,30,11,11,11,30,30,0,0,0,30,30,0,0,11,11,30,30,30,30,31,31,31,31,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,30,30,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,30,31,30,31,31,31,31,0,0,0,0,31,31,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,31,31,31,31,31,31,31,31,30,0,0,0,0,30,30,30,30,30,30,30,30,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,31,31,0,0,31,31,31,31,31,31,0,0,0,0,31,31,31,31,31,31,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,30,30,0,0,31,31,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,30,30,31,30,30,30,30,30,30,30,30,30,30,31,31,30,30,31,31,31,31,31,30,30,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,31,31,0,0,31,31,31,31,31,31,31,31,31,31,31,31,0,0,31,31,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,30,30,30,30,30,30,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,0,0,0,0,0,0,0,0,0,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,30,30,30,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,31,31,31,31,31,31,30,30,30,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,31,31,31,30,30,30,30,30,30,31,31,31,31,31,31,0,0,31,31,31,31,31,31,31,31,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,30,30,30,0,30,0,30,0,0,0,0,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,31,31,0,0,0,0,0,0,31,31,31,31,30,30,31,31,31,31,30,30,31,31,30,0,0,0,0,0,0,30,30,31,31,0,0,0,0,30,30,30,30,31,31,31,31,31,31,0,30,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,30,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,31,31,31,31,30,30,30,30,30,30,30,30,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,30,31,31,31,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,0,0,0,0,0,30,30,30,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,31,30,30,31,31,0,0,0,0,30,0],"BEI":[369.0,3.0,8787891.0,1.0,9797992.0,370.0,3.0,8787891.0,1.0,9797992.0,371.0,3.0,8787891.0,1.0,9797992.0,372.0,3.0,8787891.0,1.0,9797992.0,373.0,3.0,8787891.0,1.0,9797992.0,374.0,3.0,8787891.0,1.0,9797992.0,375.0,3.0,8787891.0,1.0,9797992.0,376.0,3.0,8787891.0,1.0,9797992.0,377.0,3.0,8787891.0,1.0,9797992.0,378.0,3.0,8787891.0,1.0,9797992.0,833.0,16.0,8787901.0,0.0,5.0,8.0,77.0,111.0,114.0,116.0,97.0,122.0,101.0,108.0,2.0,1.0,2.5,9798002.0,840.0,10.0,8787903.0,0.1,10.0,20.0,2.0,1.0,-1.0,10.0,1.0,9798004.0,841.0,4.0,8787907.0,1.0,30.0,9798008.0,846.0,5.0,8787902.0,0.51,0.1,1.0,9798003.0,850.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1315.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1316.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1710.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1711.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1712.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1713.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1714.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1715.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1722.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1723.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1724.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1725.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1728.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1729.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1741.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1742.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1743.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1744.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1745.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1746.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1747.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1748.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1749.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1750.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1751.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1752.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1753.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1754.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1755.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1756.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1757.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1758.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1759.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1760.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1761.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1762.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1763.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1764.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1765.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1766.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1767.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1768.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1769.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1770.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1771.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1772.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1773.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1774.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1775.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1776.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1795.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1796.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1797.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,1802.0,8.0,8787880.0,7.0,4.0,0.0,8.0,0.0,3.0,9797981.0,1803.0,8.0,8787880.0,3.0,8.0,0.0,7.0,4.0,0.0,9797981.0,1806.0,8.0,8787880.0,7.0,4.0,0.0,8.0,0.0,3.0,9797981.0,1807.0,8.0,8787880.0,3.0,8.0,0.0,7.0,4.0,0.0,9797981.0,1832.0,8.0,8787880.0,3.0,8.0,0.0,7.0,4.0,0.0,9797981.0,1833.0,8.0,8787880.0,7.0,4.0,0.0,8.0,0.0,3.0,9797981.0,2058.0,5.0,8787902.0,1.73,0.23,1.0,9798003.0,2059.0,5.0,8787902.0,1.73,0.23,1.0,9798003.0,2090.0,8.0,8787880.0,7.0,8.0,0.0,3.0,4.0,0.0,9797981.0,2091.0,8.0,8787880.0,3.0,4.0,0.0,8.0,7.0,0.0,9797981.0,2092.0,8.0,8787880.0,7.0,8.0,0.0,3.0,4.0,0.0,9797981.0,2093.0,8.0,8787880.0,3.0,4.0,0.0,8.0,7.0,0.0,9797981.0,2094.0,8.0,8787880.0,7.0,8.0,0.0,3.0,4.0,0.0,9797981.0,2095.0,8.0,8787880.0,3.0,4.0,0.0,8.0,7.0,0.0,9797981.0,2400.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2401.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2402.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2403.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2404.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2405.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2406.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2407.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2408.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2409.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2410.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2411.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2412.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2413.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2414.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2415.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2416.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2417.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2459.0,4.0,8787889.0,200.0,90.0,9797990.0,2460.0,4.0,8787889.0,200.0,90.0,9797990.0,2485.0,5.0,8787902.0,1.73,0.23,1.0,9798003.0,2486.0,5.0,8787902.0,1.73,0.23,1.0,9798003.0,2489.0,5.0,8787902.0,0.1,0.13,1.0,9798003.0,2490.0,5.0,8787902.0,0.1,0.13,1.0,9798003.0,2493.0,4.0,8787889.0,150.0,90.0,9797990.0,2494.0,4.0,8787889.0,150.0,90.0,9797990.0,2519.0,4.0,8787889.0,200.0,90.0,9797990.0,2520.0,4.0,8787889.0,200.0,90.0,9797990.0,2539.0,4.0,8787889.0,100.0,90.0,9797990.0,2540.0,4.0,8787889.0,100.0,90.0,9797990.0,2541.0,4.0,8787889.0,150.0,90.0,9797990.0,2542.0,4.0,8787889.0,150.0,90.0,9797990.0,2543.0,4.0,8787889.0,150.0,90.0,9797990.0,2544.0,4.0,8787889.0,150.0,90.0,9797990.0,2817.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2818.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2819.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2820.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2821.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2822.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2823.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2824.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2825.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2826.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2827.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2828.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2829.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2830.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2831.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2832.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2833.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,2834.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3194.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3199.0,5.0,8787902.0,2.0,0.36,1.0,9798003.0,3200.0,5.0,8787902.0,2.0,0.36,1.0,9798003.0,3275.0,8.0,8787880.0,1.0,0.0,0.0,2.0,0.0,0.0,9797981.0,3276.0,8.0,8787880.0,1.0,0.0,0.0,2.0,0.0,0.0,9797981.0,3547.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,5.0,20.0,22.0,5.0,0.0,-45.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3548.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,2.5,25.0,25.0,5.0,0.0,12.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3550.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,5.0,15.0,25.0,5.0,0.0,-45.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3551.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,5.0,15.0,25.0,5.0,0.0,-45.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3552.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,6.0,15.0,25.0,6.0,0.0,-45.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3553.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,6.0,15.0,25.0,6.0,0.0,-45.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3554.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,3.5,25.0,25.0,5.0,0.0,3.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3560.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,3.5,15.0,25.0,8.0,0.0,30.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3562.0,21.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,8787900.0,6.0,7.0,25.0,7.0,0.0,-25.0,0.0,0.0,1.0,0.8,0.5,9798001.0,3616.0,5.0,8787902.0,1.73,0.23,1.0,9798003.0,3637.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3638.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3639.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3640.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3641.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3642.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3643.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3644.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3645.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3646.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3647.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3648.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3649.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3650.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3651.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3652.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3653.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3654.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3655.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3656.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3657.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3658.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3659.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3660.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3661.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3662.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3663.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3664.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3665.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3666.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3667.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3668.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3669.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3670.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3671.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3672.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3739.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3740.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3741.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3742.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3860.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3861.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3862.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3863.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3864.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3865.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3866.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3867.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3868.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3869.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3870.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3871.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3872.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3873.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3874.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3875.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3876.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3877.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3878.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3879.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3880.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3881.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3882.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3883.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3884.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3885.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3886.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3887.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3888.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3889.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3890.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3891.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3892.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3893.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3894.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3895.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3896.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3897.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3898.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3899.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3946.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3947.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3948.0,8.0,8787880.0,0.0,0.0,0.0,0.0,0.0,0.0,9797981.0,3949.0,5.0,8787902.0,0.1,0.69,1.0,9798003.0,3950.0,5.0,8787902.0,0.1,0.69,1.0,9798003.0,3951.0,5.0,8787902.0,0.1,0.13,1.0,9798003.0,3969.0,5.0,8787902.0,1.73,2.0,1.0,9798003.0,3970.0,5.0,8787902.0,0.1,0.69,1.0,9798003.0],"designChanged":false,"blueprintVersion":23,"blueprintName":"Lotan - Torpedo Sub","Id":670050,"Name":"Lotan - Torpedo Sub","ItemNumber":176,"Parameter1":"0.9,0.9,0.5,0","Parameter2":"12,2,2,2","LocalPosition":"-28650.41,-286.2345,-25163.61","LocalRotation":"0.00835605,0.9748457,0.004757239,-0.2226732","ForceId":799112716,"TotalBlockCount":4006,"LastAliveBlock":4006,"IndexOfFirstBlockNeedingFullRepairCost":1000000,"MaxCords":"12,12,29","MinCords":"-12,-1,-24","BlockIds":[607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,233,233,233,233,233,233,252,240,240,252,240,240,241,244,252,233,252,233,252,233,252,233,247,252,241,241,252,241,241,233,233,233,233,233,233,233,252,241,241,252,241,241,244,252,235,232,235,235,232,235,232,235,235,232,235,233,231,235,231,231,235,231,235,231,231,235,232,235,232,235,235,232,235,232,235,235,232,235,241,252,240,240,252,240,240,228,233,228,252,233,228,233,228,252,233,228,233,235,240,228,235,228,228,235,229,235,228,228,235,231,233,234,234,234,234,234,234,234,234,234,234,234,237,228,235,228,228,235,229,235,228,228,235,231,228,252,252,228,233,228,252,252,228,233,247,252,240,240,252,240,240,232,235,232,235,235,232,235,232,235,235,232,235,252,231,235,231,231,235,231,235,231,231,235,232,235,232,235,235,232,235,232,235,235,232,235,240,252,241,240,252,241,240,244,233,233,233,233,233,240,252,241,241,252,241,241,233,244,252,233,252,233,252,233,252,233,252,240,240,252,240,240,241,233,233,233,233,236,244,233,233,236,233,365,365,365,365,368,368,368,368,368,368,368,368,368,368,368,368,368,365,365,607,607,607,607,607,607,607,607,607,607,607,607,607,607,233,238,607,496,496,496,496,496,496,605,607,605,569,569,569,569,569,569,606,569,571,345,345,345,345,345,345,345,345,345,345,345,345,569,569,569,569,345,345,345,345,345,345,345,345,345,345,345,345,569,569,569,569,345,345,345,345,345,345,345,345,345,345,345,345,569,569,569,607,605,569,569,569,569,569,569,444,444,444,311,311,311,382,383,382,383,357,357,347,347,347,347,347,347,347,347,347,347,349,349,349,349,349,349,349,349,349,349,607,607,607,260,260,260,260,260,260,260,260,260,261,261,267,267,267,267,267,267,267,267,283,283,283,283,283,283,257,257,257,257,257,257,257,257,257,257,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,256,257,257,257,257,257,257,257,257,257,257,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,266,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,265,282,282,282,282,282,282,282,282,282,282,266,266,266,266,266,266,266,266,266,266,271,256,256,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,320,320,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,606,606,32,32,49,49,607,607,607,607,496,496,607,569,607,349,349,349,349,356,349,606,606,606,606,606,606,607,607,607,607,607,607,607,607,607,607,607,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,454,311,311,311,311,311,311,311,311,311,311,14,15,11,11,14,14,14,14,8,1,4,25,25,25,50,26,51,297,284,25,25,25,25,25,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,605,605,447,447,447,447,569,569,570,570,447,447,606,606,606,606,606,606,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,606,606,607,607,607,607,607,607,607,607,607,607,496,496,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,606,606,607,452,607,607,607,607,607,607,607,607,607,607,607,607,607,607,495,495,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,496,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,605,605,605,605,605,607,607,607,607,607,607,452,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,610,610,610,610,615,614,610,610,615,614,610,610,610,610,608,609,608,609,615,614,615,614,610,610,605,605,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,612,612,607,607,607,607,607,612,612,612,612,612,612,612,612,608,609,608,609,608,609,607,607,612,612,607,607,607,607,612,612,608,609,608,609,633,636,633,636,608,609,608,609,608,609,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,608,609,608,609,302,302,302,627,625,609,608,609,608,610,610,613,613,293,615,614,630,634,630,634,618,621,633,636,570,559,563,538,571,569,286,606,606,616,619,284,284,536,536,574,574,630,634,610,610,610,610,610,610,610,610,576,574,574,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,608,609,608,609,608,609,608,609,608,609,608,609,608,609,607,607,607,607,607,607,607,607,605,605,607,607,605,605,633,636,633,636,633,636,618,621,618,621,618,621,607,607,613,613,632,635,632,635,632,635,617,620,617,620,607,607,607,606,606,611,611,611,611,611,611,611,611,611,611,631,637,631,637,616,619,611,611,607,607,612,612,612,612,612,612,613,613,613,613,613,613,611,611,611,611,611,611,633,636,633,636,618,621,618,621,607,607,607,607,607,607,605,605,632,635,632,635,617,620,617,620,607,607,607,607,605,605,631,637,631,637,608,609,610,610,610,610,452,452,605,605,607,607,607,607,607,607,606,610,610,610,610,608,609,610,610,630,634,610,610,610,610,610,610,616,619,616,619,607,607,607,607,607,607,611,611,611,611,611,611,611,611,611,611,610,610,631,637,630,634,610,610,630,634,615,614,492,492,468,468,467,467,467,467,492,492,607,607,492,492,468,468,468,468,607,607,467,467,607,607,607,607,605,605,605,605,605,452,452,69,69,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,605,605,452,452,605,605,605,605,606,606,605,605,605,605,452,452,605,605,466,466,466,606,606,452,452,467,467,606,606,467,467,605,605,606,606,605,605,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,467,467,606,606,606,606,606,606,606,606,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,609,608,609,608,609,608,609,608,607,607,607,607,609,608,609,608,636,633,636,633,636,633,636,633,636,633,636,633,612,612,612,612,612,612,612,612,612,612,607,607,606,606,606,452,618,621,618,621,612,612,612,612,612,612,618,621,618,621,618,621,607,607,607,607,612,612,612,612,612,612,632,635,632,635,632,635,632,635,613,613,613,613,613,613,613,613,613,613,613,613,613,613,617,620,617,620,617,620,613,613,613,613,613,613,613,613,613,613,613,613,613,613,607,607,607,607,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,611,631,637,611,611,611,611,611,611,611,611,611,611,631,637,631,637,616,619,616,619,613,613,611,611,611,611,626,624,630,634,610,610,608,609,610,610,630,634,608,609,610,610,622,628,622,628,610,610,615,614,452,452,630,634,628,622,46,46,49,49,606,606,447,447,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,467,467,467,467,467,467,605,605,605,605,452,452,612,612,612,612,627,625,608,609,608,609,608,609,608,609,608,609,608,609,608,609,608,609,624,626,613,613,613,613,238,448,448,448,448,448,448,448,448,607,607,607,607,607,607,607,452,605,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,320,320,32,32,49,49,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,321,606,606,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,606,606,607,607,607,607,607,607,607,607,607,607,607,607,606,606,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,569,569,606,606,605,605,606,606,606,606,606,606,606,606,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,607,607,607,607,607,607,607,607,607,607,606,606,605,605,570,570,571,571,569,569,569,569,571,571,571,569,569,606,606,606,606,606,606,606,606,606,606,605,605,260,260,263,263,452,452,452,452,269,269,452,452,452,452,607,607,607,607,607,607,452,452,606,606,606,606,49,49,46,46,14,14,36,36,260,260,263,263,260,260,269,269,260,260,260,260,260,260,607,607,607,607,607,607,606,606,606,606,260,260,260,260,263,263,606,606,260,260,260,260,260,260,260,260,260,260,260,260,607,607,607,607,263,263,263,263,263,263,605,605,260,260,447,447,447,447,269,269,260,260,260,260,260,260,260,260,452,452,269,269,269,269,451,451,494,494,260,260,269,269,260,260,260,260,260,260,260,260,605,605,269,269,260,260,260,260,269,269,605,605,605,605,319,319,319,319,319,319,319,319,319,319,319,319,607,607,607,607,607,607,607,607,607,607,607,607,615,614,615,614,615,614,615,614,610,610,610,610,608,609,608,609,610,610,610,610,610,610,610,610,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,320,320,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329,329,329,329,329,329,329,329,329,329,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,607,607,607,607,606,606,607,607,32,32,49,49,447,447,605,605,607,607,607,607,607,607,607,607,615,614,605,605,607,607,607,607,607,607,607,607,607,607,606,606,606,606,606,606,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,607,607,606,606,606,606,606,606,447,447,610,610,610,610,569,569,447,447,569,569,605,605,605,605,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,319,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,328,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,329,321,321,321,321,320,333,333,333,333,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,322,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,452,607,607,607,607,570,607,607,605,605,605,605,605,605,607,607,607,607,607,607,607,607,607,607,606,606,606,607,607,447,605,605,607,607,606,569,569,606,607,607,607,607,607,607,607,607,607,607,571,571,571,571,607,607,607,607,606,495,495,496,496,311,311,607,607,32,49,605,607,607,452,452,333,333,333,333,333,333,452,452,333,333,333,333,333,333,333,333,606,606,452,452,333,333,333,333,333,333,606,606,623,629,574,319,284,328,320,322,321,331,331,25,574,452,605,605,382,383,382,383,382,383,382,383,382,383,382,383,382,383,382,383,382,383,382,383,607,607,607,607,607,607,607,607,607,607,607,607,607,605,605,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,452,452,452,452,607,607,607,607,605,605,571,571,57,57,56,56,56,56,56,56,607,56,56,56,56,56,56,56,56,56,56,56,56,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,607,607,55,55,55,55,55,55,55,55,55,55,607,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,607,607,447,447,447,570,570,569,569,569,569,607,607,569,569,607,607,607,607,607,607,607,607,607,607,569,569,569,569,607,607,607,607,345,345,345,345,345,345,345,345,345,345,345,345,447,447,569,569,571,571,607,607,607,607,607,607,452,452,570,570,607,607,452,452,605,605,605,605,607,607,606,606,606,606,607,607,607,607,607,607,607,607,606,606,14,14,14,14,14,14,25,25,25,25,25,25,25,25,25,25,25,25,605,605,607,607,607,607,571,311,311,607,607,607,607,607,607,607,607,607,14,14,25,25,25,25,14,14,25,25,25,25,606,607,607,607,607,55,55,55,55,55,55,55,55,55,55,607,607,607,607,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,306,306,607,306,306,306,306,306,569,305,570,447,605,306,570,306,305,605,205,205,205,205,365,365,605,605,617,620,632,635,613,613,613,613,621,618,607,607,607,607,319,319,319,319,319,319,319,328,328,328,328,321,321,321,321,322,322,322,322,322,322,322,322,322,322,14,14,570,570,46,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,606,606,447,447,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,365,365,365,365,365,365,365,365,365,365,605,605,605,605,605,605,605,605,605,605,607,607,606,606,606,606,607,607,368,447,570,570,605,605,605,605,605,605,605,605,605,605,605,605,607,607,605,605,605,605,607,607,607,607,607,607,607,607,607,607,607,607,606,606,606,606,469,469,469,469,605,605,345,345,609,608,610,610,569,569,574,575,576,577,577,569,569,569,569,607,607,605,605,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,606,605,605,605,605,607,607,607,607,606,606,607,607,607,607,607,607,605,605,607,607,607,607,607,607,607,607,605,605,605,605,302,302,302,302,302,302,570,576,575,574,574,575,576,577,577,576,575,574,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,452,452,452,452,447,447,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,469,607,607,607,607,607,607,607,607,605,605,287,287,287,287,605,605,605,605,605,605,605,605,571,571,452,452,607,607,607,607,606,14,14,605,605,49,607,607,606,452,607,607,607,607,605,605,463,284,284,30,30,36,49,49,452,452,447,447,452,452,607,607,570,570,452,452,452,605,605,43,30,452,452,452,606,606,452,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,607,452,452,605,605,610,610,607,607,311,206,616,288],"BlockStringData":["-- Generated from ZerothAngel's FtDScripts version a744817ee908\r\n-- Modules: submarine, naval-ai, waypointmove, avoidance, avoidancevectors, commonsfriends, dodgeyaw, dodgecommon, raysphereintersect, commonswarnings, getbearingtopoint, planarvector, ytdefaults, depthcontrol, terraincheck, evasion, drivemaintainer, sixdof, requestcontrol, propulsionapi, subcontrol, pid, rollturn, normalizebearing, multiprofile, generalmissile, missilecommand, clamp, sign, deepcopy, round, getvectorangle, quadraticintercept, quadraticsolver, multiprofilecommon, missiledriver, weapontypes, commonsweapons, shieldmanager, componenttypes, commonstargets, periodic, firstrun, control, commons, shallowcopy\r\n\r\n-- MIT licensed. See https://github.com/ZerothAngel/FtDScripts for raw code.\r\n\r\n-- !!! Leading whitespace stripped to save bytes !!!\r\n\r\n-- Meant for naval surface or submarine vehicles with yaw + propulsion\r\n-- control.\r\n-- Should have hydrofoils in front of and behind the CoM, otherwise use\r\n-- my warship.lua script.\r\n\r\n-- CONFIGURATION\r\n\r\n-- Activate on these AI modes. Valid keys are \"off\", \"on\", \"combat\",\r\n-- \"patrol\", and \"fleetmove\".\r\nActivateWhen = {\r\n--   on = true,\r\n   combat = true,\r\n   fleetmove = true,\r\n}\r\n\r\n-- How often to run. At 1, it will run every update. At 10,\r\n-- it will run every 10th update. The lower it is, the more\r\n-- responsive it will be, but it will also take more processing time.\r\n-- Set to nil to disable a module.\r\nAI_UpdateRate = 4\r\nDepthControl_UpdateRate = 4\r\nMissile_UpdateRate = 4\r\nShieldManager_UpdateRate = 12\r\n\r\n-- NAVAL AI\r\n\r\n-- Target ranges that determine behavior\r\nMinDistance = 1000\r\nMaxDistance = 1500\r\n\r\n-- Attack behavior (MinDistance < target range < MaxDistance)\r\n-- All angles are relative to the target's bearing. So 0 heads\r\n-- straight toward the target and 180 is straight away from it.\r\nAttackAngle = 80\r\n-- Drive fraction from -1 to 1.\r\n-- If you have an urge to set this to 0, look instead at the\r\n-- AttackDistance + AttackReverse options.\r\nAttackDrive = 1\r\n-- Evasion settings have two values:\r\n-- The magnitude of evasive maneuvers, in degrees\r\n-- And a time scale. Generally <1.0 works best,\r\n-- smaller means slower.\r\n-- Set to nil to disable, e.g. AttackEvasion = nil\r\nAttackEvasion = { 10, .125 }\r\n\r\n-- If set, it should be between MinDistance and MaxDistance.\r\n-- Only applies when MinDistance < target range < MaxDistance.\r\n-- To have any effect, AttackAngle should NOT be 90 degrees.\r\nAttackDistance = nil\r\n-- PID for adjusting AttackAngle when near AttackDistance.\r\n-- Effective AttackAngle will be scaled between AttackAngle and\r\n-- 180 - AttackAngle depending on output of PID.\r\nAttackPIDConfig = {\r\n   Kp = .5,\r\n   Ti = 5,\r\n   Td = .1,\r\n}\r\n-- If true, then instead of flipping AttackAngle, AttackDrive will\r\n-- be negated (so presumably your vehicle will go in reverse). The PID\r\n-- above will be applied to the throttle instead.\r\nAttackReverse = false\r\n\r\n-- Closing behavior (target range > MaxDistance)\r\n-- ClosingAngle should be <90 to actually close with the target.\r\nClosingAngle = 40\r\nClosingDrive = 1\r\nClosingEvasion = { 30, .25 }\r\n\r\n-- Escape behavior (target range < MinDistance)\r\n-- EscapeAngle should be >90 to actually head away from the target.\r\nEscapeAngle = 120\r\nEscapeDrive = 1\r\nEscapeEvasion = { 20, .25 }\r\n\r\n-- Air raid evasion\r\n-- Overrides current evasion settings when target is\r\n-- above a certain elevation (i.e. altitude relative to ground)\r\nAirRaidAboveElevation = 50\r\nAirRaidEvasion = { 40, .25 }\r\n\r\n-- Preferred side to face toward enemy.\r\n-- 1 = Starboard (right)\r\n-- -1 = Port (left)\r\n-- nil = No preference (will pick closest side)\r\nPreferredBroadside = nil\r\n\r\n-- If true, the ship will perform attack runs and bounce between\r\n-- MinDistance and MaxDistance.\r\n-- \"Closing\" settings are used if target range > MaxDistance\r\n-- \"Attack\" settings are used until MinDistance is reached\r\n-- \"Escape\" settings are then used until MaxDistance is reached,\r\n-- then the next attack run is started.\r\nAttackRuns = false\r\n\r\n-- Forces an attack run after this many seconds. For times when\r\n-- the target is faster than your ship, so your ship won't be\r\n-- stuck constantly trying to escape.\r\nForceAttackTime = 30\r\n\r\n-- Normally the attack run is ended once MinDistance is reached.\r\n-- However this setting ensures that at least this many seconds were spent\r\n-- attacking (either normally or forced). Useful against faster targets...\r\n-- I guess. For best results, should take into account the time it takes to\r\n-- rotate to the proper angle.\r\nMinAttackTime = 10\r\n\r\n-- Return-to-origin settings\r\nReturnToOrigin = true\r\n\r\n-- WAYPOINT MOVE SETTINGS\r\n\r\nWaypointMoveConfig = {\r\n   -- Maximum distance from stationary waypoints.\r\n   -- If further than this, set throttle to ClosingDrive (below).\r\n   -- Should be comparable to ship's turning radius.\r\n   MaxDistance = 250,\r\n   -- If farther away than this from a moving waypoint, set throttle\r\n   -- to ClosingDrive (below).\r\n   ApproachDistance = 100,\r\n   -- Throttle when distance from waypoint is >ApproachDistance.\r\n   ClosingDrive = 1,\r\n   -- Speed relative to waypoint in meters per second when within\r\n   -- ApproachDistance. Our speed will be the waypoint speed +/- this.\r\n   RelativeApproachSpeed = 1,\r\n   -- Minimum speed in meters per second when within ApproachDistance.\r\n   -- Probably not a good idea for hydrofoil-based subs to stop.\r\n   -- If nil, it will use the script's default, which is 0 in most cases.\r\n   MinimumSpeed = nil,\r\n   -- Whether or not to stop at stationary waypoints (i.e. the 'M' map\r\n   -- waypoint when this vehicle is the flagship). If false, then the\r\n   -- MinimumSpeed will be used instead.\r\n   -- If nil, it will use the script's default, which is usually \"true\".\r\n   StopOnStationaryWaypoint = nil,\r\n   -- Constants for throttle PID, used when within ApproachDistance.\r\n   ThrottlePIDConfig = {\r\n      Kp = .01,\r\n      Ti = 0,\r\n      Td = .125,\r\n   },\r\n}\r\n\r\n-- AVOIDANCE CONFIGURATION\r\n\r\n-- How much clearance to require above and below when avoiding\r\n-- terrain and friendlies.\r\n-- Ship's height is multiplied by this and then centered around\r\n-- the ship's physical midpoint (not necessarily the center of mass).\r\n-- ClearanceFactor of 1 means to check exactly the ship's lower\r\n-- and upper bounds.\r\n-- Rotations (pitch, roll) are not accounted for, so it's best to\r\n-- have some padding.\r\nClearanceFactor = 1.8\r\n-- FRIENDLY AVOIDANCE\r\n\r\n-- Distance to check for friendlies. Friendlies outside these distances\r\n-- are ignored. The minimum distance is useful for ignoring docked ships.\r\nFriendlyCheckMinDistance = 25\r\nFriendlyCheckMaxDistance = 500\r\n\r\n-- Each of the following has two numbers:\r\n-- The first is a duration of time in seconds. If a collision\r\n-- looks imminent within this time, it will turn away.\r\n-- The second is the absolute minimum distance to be from friendlies.\r\nFriendlyAvoidanceCombat = { 20, 100 }\r\nFriendlyAvoidanceIdle = { 10, 100 }\r\n\r\n-- Friendly avoidance weight. Generally should be >1.\r\n-- Set to 0 to disable friendly avoidance.\r\n-- Greater number means it will begin to turn away sooner.\r\nFriendlyAvoidanceWeight = 10\r\n\r\n-- TERRAIN AVOIDANCE\r\n\r\n-- How many seconds ahead (at current speed) to sample\r\n-- the terrain.\r\n-- At minimum, it should be the time it takes for your ship to\r\n-- complete a 90-degree turn.\r\nLookAheadTime = 30\r\n\r\n-- Look-ahead resolution, in meters. The smaller it is, the more\r\n-- samples of the terrain will be taken.\r\n-- Probably shouldn't be larger than the length of your ship.\r\n-- Set to nil to automatically use a quarter of your ship's length.\r\nLookAheadResolution = nil\r\n\r\n-- When there's an obstacle in front, this is how far (in degrees)\r\n-- left and right to check for an opening. Should probably be <45\r\nLookAheadAngle = 35\r\n\r\n-- By default, the horizontal midpoint and both sides of the ship\r\n-- (after accounting for ClearanceFactor) are extended forward\r\n-- and used to check the terrain. If you have a particularly\r\n-- wide ship, you may want to check more points. Use this to\r\n-- increase the number of subdivisions between the midpoint and\r\n-- the sides. Set to 0 for no extra points, 1 for 1 extra\r\n-- between midpoint and side (so 2 additional total), etc.\r\n-- Don't go too crazy, because it will increase the number of\r\n-- terrain checks dramatically.\r\nTerrainAvoidanceSubdivisions = 0\r\n\r\n-- Terrain avoidance weight. Should be >1, set to 0 to disable.\r\n-- Greater number means it will begin to turn away sooner.\r\nTerrainAvoidanceWeight = 100\r\n\r\n-- DODGE SETTINGS (yaw-only)\r\n\r\n-- If true, the vehicle will direct the impacts to its front rather than\r\n-- steering into (or away).\r\nDodgePreferFront = false\r\n\r\n-- If supported by the AI, the drive will be set to this value when\r\n-- dodging. Otherwise if nil, it will continue along the direction it\r\n-- was already going.\r\nDodgeDrive = nil\r\n\r\n-- DODGE SETTINGS\r\n\r\n-- Vehicle radius for determining the size of the defensive sphere.\r\n-- Any missiles predicted to impact the sphere will cause an evasive\r\n-- maneuver to dodge.\r\n-- Set to nil to use the vehicle's longest (half) dimension multiplied\r\n-- by the padding factor below.\r\nVehicleRadius = nil\r\n\r\n-- Only used when VehicleRadius is nil. Multiplied against half of the\r\n-- longest dimension of the vehicle to set VehicleRadius.\r\nVehicleRadiusPadding = 2\r\n\r\n-- Whether or not dodging is enabled.\r\nDodgingEnabled = true\r\n\r\n-- Only consider missiles that are predicted to impact within this\r\n-- number of seconds.\r\nDodgeTimeHorizon = 10\r\n\r\n-- COMMONS MISSILE WARNINGS SETTING\r\n\r\nCommonsWarningConfig = {\r\n   -- Mainframe to use for missile warnings.\r\n   MissileWarningMainframe = 0,\r\n}\r\n\r\n-- CONTROL CONFIGURATION\r\n\r\n-- This section enables/disables the control of each axis\r\n-- using a certain means: jets, dediblade spinners, or vehicle controls.\r\n\r\n-- The defaults here are suitable for standard vehicle yaw/throttle\r\n-- controls and can be augmented for dediblade spinners (for both yaw\r\n-- and/or propulsion).\r\n\r\n-- Generally, if a script includes these defaults, then altitude/\r\n-- pitch/roll are controlled by some other way (hydrofoils, pumps, etc.)\r\n-- and those fractions here should always be 0.\r\n\r\n-- Control fractions dedicated to jets & spinners for each axis\r\nJetFractions = {\r\n   Altitude = 0,\r\n   Yaw = 0,\r\n   Pitch = 0,\r\n   Roll = 0,\r\n   Forward = 0,\r\n   Right = 0,\r\n}\r\nSpinnerFractions = {\r\n   Altitude = 0,\r\n   Yaw = 1, -- Set to positive number to enable dediblade yaw\r\n   Pitch = 0,\r\n   Roll = 0,\r\n   Forward = 1, -- Set to positive number to enable dediblade propulsion\r\n   Right = 0,\r\n}\r\n-- Control fractions dedicated to vehicle controls for each axis\r\n-- Note that this clashes with JetFractions. Where a clash is\r\n-- indicated, the corresponding axes in JetFractions should be zeroed.\r\nControlFractions = {\r\n   -- Clashes with JetFractions.Yaw, Forward, AND Right\r\n   Yaw = 1,\r\n   -- Clashes with JetFractions.Altitude, Pitch, AND Roll\r\n   Pitch = 0,\r\n   -- Clashes with JetFractions.Altitude, Pitch, AND Roll\r\n   Roll = 0,\r\n   -- Clashes with JetFractions.Yaw, Forward, AND Right\r\n   Forward = 1,\r\n}\r\n\r\n-- DEPTH CONTROL\r\n\r\n-- Switch to manual depth control on these AI modes. Valid keys are \"off\",\r\n-- \"on\", \"combat\", \"patrol\", and \"fleetmove\".\r\n-- Only used when ManualDepthDriveMaintainerFacing below is non-nil.\r\nManualDepthWhen = {\r\n   off = true,\r\n   on = true,\r\n   combat = true,\r\n   patrol = true,\r\n   fleetmove = true,\r\n}\r\n\r\n-- Manual depth control (optional, default disabled)\r\n-- There's no easy way to get input from the player, so this is a bit of\r\n-- a hack.\r\n-- Set the following to an axis-aligned unit Vector3, i.e. Vector3.forward,\r\n-- Vector3.up, Vector3.left, etc.\r\n-- Then place a drive maintainer block facing that direction. It should be the\r\n-- only drive maintainer facing that direction.\r\n-- You can then assign keys to that drive maintainer. If you have other drive\r\n-- maintainers, make sure this one uses an unused drive (primary/secondary/\r\n-- tertiary).\r\n-- Positive drive means relative to sea floor: 0 = 500m above sea floor,\r\n--   1 = 0m above sea floor (not recommended)\r\n-- Negative drive corresponds to absolute depth: 0 = 0m, -1 = -500m\r\n-- Set to nil to use the configured depth settings (below).\r\nManualDepthDriveMaintainerFacing = nil\r\n\r\n-- Desired depths for combat and out-of-combat.\r\n-- First value is the desired depth or elevation and should always be\r\n-- positive.\r\n-- Second value is true/false indicating whether it is absolute (true) or\r\n-- relative to terrain (false).\r\n-- If relative, then first number is elevation above sea terrain.\r\n-- Otherwise, it is depth below sea level (0).\r\nDesiredDepthCombat = {\r\n   Depth = 30,\r\n   Absolute = false\r\n}\r\nDesiredDepthIdle = {\r\n   Depth = 40,\r\n   Absolute = false\r\n}\r\n\r\n-- Minimum & maximum depth when following terrain.\r\n-- Only valid when desired depth is relative.\r\n-- Should be 0 or positive.\r\n-- This differs from the hard limits below in that it lets you specify\r\n-- narrower constraints to give more leeway when dodging/evading.\r\nTerrainMinDepth = 50\r\nTerrainMaxDepth = 500\r\n\r\n-- Enable vertical dodging of torpedoes (when combined AI supports it)\r\n-- 0 - No dodging\r\n-- 1 - Dodge as recommended by AI\r\n-- 2 - Dodge in direction of most leeway\r\n-- 3 - Always dodge upwards\r\n-- 4 - Always dodge downwards\r\nDepthDodgeMode = 1\r\n\r\n-- Hard constraints on depth after summing up desired depth, dodging,\r\n-- evasion, etc. These are absolute depth values.\r\nHardMinDepth = 20\r\nHardMaxDepth = 500\r\n\r\n-- First number is depth variation\r\n-- Second is time scale, which should generally be <1.\r\n-- Smaller is slower.\r\n-- Set to nil to disable, e.g. DepthEvasion = nil\r\nDepthEvasion = nil\r\n\r\n-- Whether or not to apply the above evasion settings when under manual\r\n-- control.\r\nManualEvasion = true\r\n\r\n-- TERRAIN CHECKING\r\n\r\n-- How many seconds to look ahead, in terms of velocity.\r\n-- Generally depends on your maximum vertical speed. The slower you\r\n-- move vertically, the farther you should look ahead.\r\n-- However, if your normal AI has any sort of terrain checking, this\r\n-- should probably look farther than it.\r\n-- Set to nil to base dynamically on the current altitude/depth.\r\n-- You should also make sure TerrainCheckVerticalSpeed is accurate\r\n-- below.\r\nTerrainCheckLookAheadTime = 30\r\n\r\n-- Look-ahead resolution, in meters. The smaller it is, the more\r\n-- samples of the terrain will be taken.\r\n-- Probably shouldn't be larger than the length of your ship.\r\n-- Set to nil to automatically use half your ship's length.\r\nTerrainCheckResolution = nil\r\n\r\n-- By default, the horizontal midpoint and both sides of the ship\r\n-- are extended forward and used to check the terrain.\r\n-- If you have a particularly wide ship, you may want to check\r\n-- more points. Use this to increase the number of subdivisions\r\n-- between the midpoint and the sides. Set to 0 for no extra\r\n-- points, 1 for 1 extra between midpoint and side (so 2\r\n-- additional total), etc. Don't go too crazy, because it will\r\n-- increase the number of terrain checks dramatically.\r\nTerrainCheckSubdivisions = 0\r\n\r\n-- Maximum vertical speed. Only used when TerrainCheckLookAheadTime\r\n-- above is nil.\r\n-- Set to nil to determine dynamically.\r\n-- If you know the performance characteristics of your ship, it's\r\n-- recommended you set this rather than leave it to be determined.\r\n-- The starting max vertical speed is 1 m/s, which will lead to\r\n-- very far look ahead distances (until the actual vertical speed\r\n-- is determined).\r\nTerrainCheckMaxVerticalSpeed = nil\r\n\r\n-- When determining look ahead time dynamically, the remaining altitude\r\n-- (= max altitude - current altitude) is multiplied by this before\r\n-- dividing by the max vertical speed.\r\n-- Should be slightly >1 to provide a buffer.\r\nTerrainCheckBufferFactor = 1.05\r\n\r\n-- 6DOF CONFIGURATION\r\n\r\n-- PID values\r\nSixDoFPIDConfig = {\r\n   Altitude = {\r\n      Kp = 5,\r\n      Ti = 5,\r\n      Td = .3,\r\n   },\r\n   Yaw = {\r\n      Kp = .3,\r\n      Ti = 5,\r\n      Td = .4,\r\n   },\r\n   Pitch = {\r\n      Kp = .5,\r\n      Ti = 5,\r\n      Td = .1,\r\n   },\r\n   Roll = {\r\n      Kp = .5,\r\n      Ti = 5,\r\n      Td = .1,\r\n   },\r\n   Forward = {\r\n      Kp = .5,\r\n      Ti = 5,\r\n      Td = .1,\r\n   },\r\n   Right = {\r\n      Kp = .5,\r\n      Ti = 5,\r\n      Td = .1,\r\n   },\r\n}\r\n\r\n-- Spinner configuration\r\n\r\n-- The dediblade \"always up\" feature requires special handling.\r\n-- If you set the following to true, then ALL upward- and downward-\r\n-- facing dediblades should have \"always up\" set to 1.\r\n-- Use of \"always up\" is generally not recommended.\r\nDediBladesAlwaysUp = false\r\n\r\n-- THRUST HACK CONFIGURATION\r\n\r\n-- Use thrust hack instead of standard Lua control of thrusters.\r\n-- Select a complex controller key for each related axes.\r\n-- All related jets should be bound to that key as a green input.\r\n-- See Lua box help > Propulsion > RequestComplexControllerStimulus\r\n-- for key mapping.\r\n\r\n-- Complex controller key for altitude/pitch/roll\r\n-- (upward- and downward-facing thrusters)\r\nAPRThrustHackKey = nil\r\n\r\n-- Complex controller key for yaw/longitudinal/lateral\r\n-- (forward-, reverse-, left-, and right-facing thrusters)\r\nYLLThrustHackKey = nil\r\n\r\n-- HYDROFOIL CONFIGURATION\r\n\r\n-- Control fraction (for hydrofoils) to dedicate to each axis.\r\nHydrofoilControl = {\r\n   Roll = 1,\r\n   Pitch = 1,\r\n   Depth = 1,\r\n}\r\n\r\n-- PID values for hydrofoils\r\n-- Start with { 1, 0, 0 } and tune from there.\r\nSubControlPIDConfig = {\r\n   Roll = {\r\n      Kp = .01,\r\n      Ti = 10,\r\n      Td = .1,\r\n   },\r\n   Pitch = {\r\n      Kp = .1,\r\n      Ti = 5,\r\n      Td = .125,\r\n   },\r\n   Depth = {\r\n      Kp = 1,\r\n      Ti = 0,\r\n      Td = 0,\r\n   },\r\n}\r\n\r\n-- If true then the angles of hydrofoils closer to the Center of Mass\r\n-- (on both X and Z axes) will be scaled up in proportion to the\r\n-- distance of the furthest hydrofoil.\r\nScaleByCoMOffset = true\r\n\r\n-- ROLL TURN CONFIGURATION\r\n\r\nRollTurn = {\r\n   -- Set to a number to enable banked turns.\r\n   -- If the difference between desired heading and current heading\r\n   -- exceeds this number, the vehicle will attempt to roll.\r\n   AngleBeforeRoll = nil,\r\n   -- Maximum roll angle to perform during banked turn.\r\n   MaxRollAngle = 30,\r\n   -- To have the roll angle scale based on the magnitude of the relative\r\n   -- bearing, set the scaling factor here.\r\n   -- To always use MaxRollAngle, set RollAngleGain to nil.\r\n   RollAngleGain = nil,\r\n}\r\n\r\n-- MULTI PROFILE CONFIGURATION\r\n\r\n-- Also see https://github.com/ZerothAngel/FtDScripts/blob/master/missile/multiprofile.md\r\n\r\n-- How it works:\r\n\r\n-- Each profile can select Lua transceivers in one of three ways:\r\n--   By launcher orientation (vertical, horizontal)\r\n--   By launcher direction (right, left, up, down, forward, back)\r\n--   By weapon slot of the missile controller within a given distance\r\n\r\n-- If a Lua transceiver potentially matches multiple profiles, then:\r\n--   1. A matching profile that uses weapon slot/distance selection\r\n--      always wins\r\n--   2. Otherwise the first matching profile (going down the list)\r\n--      will be used\r\n\r\n-- If a Lua transceiver matches no profiles (due to damage or\r\n-- misconfiguration), then the 1st profile is used.\r\n\r\n-- Remember that subconstructs (turrets, spinners) have their own axes\r\n-- independent of the main vehicle. This may make selection by\r\n-- orientation/direction surprising(!).\r\n\r\n-- See https://github.com/ZerothAngel/FtDScripts/blob/master/missile/generalmissile.md for details about generalmissile configuration (the \"Config\" sections).\r\n\r\nMissileProfiles = {\r\n   -- First profile\r\n   {\r\n      -- How Lua transceivers are selected for this profile.\r\n      -- You must only have one \"SelectBy\" expression.\r\n      -- Comment out or delete the rest.\r\n      SelectBy = {\r\n         -- By orientation: true = vertical, false = horizontal\r\n         Vertical = true,\r\n      },\r\n--      SelectBy = {\r\n--         -- By launcher direction. Set Direction to a list of Vector3.<dir>\r\n--         -- where <dir> is back, down, forward, left, right, up\r\n--         -- Note that it must be a list even with a single direction.\r\n--         Direction = { Vector3.left, Vector3.right },\r\n--      },\r\n--      SelectBy = {\r\n--         -- By weapon slot of the closest missile controller\r\n--         -- within a set (straight-line) distance\r\n--         WeaponSlot = 1,\r\n--         Distance = 5,\r\n--      },\r\n      -- Set to a number 1-5 to have the script fire this weapon slot itself.\r\n      -- An LWC is not needed in that case. However, script-fired weapons\r\n      -- aren't governed by failsafes, so keep that in mind...\r\n      -- Missile controllers on turrets should be assigned the same weapon\r\n      -- slot as their turret block.\r\n      FireWeaponSlot = 1,\r\n      -- Target selection algorithm for newly-launched missiles.\r\n      -- 1 = Focus on highest priority target\r\n      -- 2 = Pseudo-random split against all targetable targets\r\n      TargetSelector = 1,\r\n      -- These should generally match the Local Weapon Controller to\r\n      -- avoid locking and re-locking on things too far or out of\r\n      -- the missile's element. (e.g. torpedoes re-locking onto air targets)\r\n      Limits = {\r\n         MinRange = 20,\r\n         MaxRange = 9999,\r\n         MinAltitude = -500,\r\n         MaxAltitude = 15,\r\n      },\r\n      -- Bottom-attack torpedoes\r\n      Config = {\r\n         MinAltitude = -500,\r\n         DetonationRange = 3,\r\n         DetonationAngle = 30,\r\n         LookAheadTime = 2,\r\n         LookAheadResolution = 3,\r\n\r\n         Phases = {\r\n            {\r\n               Distance = 200,\r\n               Altitude = 0,\r\n               RelativeTo = 6,\r\n            },\r\n            {\r\n               Distance = 50,\r\n               AboveSeaLevel = false,\r\n               MinElevation = 10,\r\n               Altitude = -75,\r\n               RelativeTo = 2,\r\n            },\r\n         },\r\n      },\r\n   },\r\n\r\n   -- Second profile\r\n   {\r\n      SelectBy = { Vertical = false, }, -- Horizontal\r\n      FireWeaponSlot = 2,\r\n      TargetSelector = 2,\r\n      Limits = {\r\n         MinRange = 0,\r\n         MaxRange = 9999,\r\n         MinAltitude = -500,\r\n         MaxAltitude = 15,\r\n      },\r\n      -- Bottom-attack torpedoes\r\n      Config = {\r\n         MinAltitude = -500,\r\n         DetonationRange = 3,\r\n         DetonationAngle = 30,\r\n         LookAheadTime = 2,\r\n         LookAheadResolution = 3,\r\n\r\n         Phases = {\r\n            {\r\n               Distance = 200,\r\n               Altitude = 0,\r\n               RelativeTo = 6,\r\n            },\r\n            {\r\n               Distance = 50,\r\n               AboveSeaLevel = false,\r\n               MinElevation = 10,\r\n               Altitude = -80,\r\n               RelativeTo = 2,\r\n            },\r\n         },\r\n      },\r\n   },\r\n\r\n   -- You can add more profiles here.\r\n   -- I recommended you copy & paste the first one and then edit to taste.\r\n   -- PAY ATTENTION TO THE COMMAS\r\n}\r\n\r\n-- MISSILE DRIVER SETTINGS\r\n\r\n-- Detonate after this many seconds of being out of combat.\r\n-- Set to some large number (e.g. 999) to disable.\r\nDetonateAfter = 10\r\n\r\n-- Reset/clear the transceiver cache every so often.\r\n-- Set to some large number (e.g. 9999) to disable.\r\n-- This is mainly important for any scripts that use GetLuaTransceiverInfo\r\n-- to select a guidance instance, such as multiprofile. This is because\r\n-- damage may knock out a launchpad (which is what is normally returned)\r\n-- and instead return the transceiver BlockInfo, which may ultimately lead\r\n-- to a different selection.\r\nTransceiverResetInterval = 5\r\n\r\n-- SHIELD MANAGER\r\n\r\n-- Distance from enemies in meters at which to activate shields\r\nShieldActivationRange = 5000\r\n\r\n-- Shield mode to use\r\n-- 1 = Disrupt\r\n-- 2 = Reflect\r\n-- 3 = Laser?\r\n-- nil = Scale strength up or down instead of changing mode\r\nShieldActivationMode = 2\r\n\r\n-- Angle in degrees from a shield's forward vector at which to activate.\r\n-- 135 is conservative, 180 is active all the time (kinda pointless, but\r\n-- saves on ACBs). 90 is probably the sane minimum.\r\nShieldActivationAngle = 135\r\n\r\n-- Delay in seconds before turning off a shield.\r\nShieldOffDelay = 8\r\n\r\n-- COMMONS TARGETING SETTINGS\r\n\r\nCommonsTargetConfig = {\r\n   -- Preferred mainframe indexes for target priority.\r\n   -- Once a mainframe is successfully queried, the rest are ignored.\r\n   -- First mainframe (in \"C\" screen) = 0, 2nd = 1, etc.\r\n   -- The last one in the list should always be 0.\r\n   -- For example, to query the 2nd, 3rd, and 1st (in that order), set\r\n   -- to { 1, 2, 0 }\r\n   PreferredTargetMainframes = { 0 },\r\n\r\n   -- Maximum range for an enemy to still be considered a threat.\r\n   MaxEnemyRange = 10000,\r\n}\r\n\r\n-- COMPONENT TYPES (don't change)\r\n\r\n-- luacheck: push ignore 131\r\nBALLOON = 0 -- boolean\r\nDRIVEMAINTAINER = 1 -- float\r\nAIRPUMP = 2 -- float/bool\r\nRESOURCEGATHERER = 3 -- boolean\r\nOILDRILL = 4 -- boolean\r\nAMMOPROCESSOR = 5 -- boolean\r\nOILPROCESSOR = 6 -- boolean\r\nTRACTORBEAM = 7 -- boolean\r\nHYDROFOIL = 8 -- float\r\nPROPULSION = 9 -- float\r\nSHIELDPROJECTOR = 10 -- float/int\r\nHELIUMPUMP = 11 -- float/bool\r\n-- luacheck: pop\r\n\r\n-- WEAPON TYPES (don't change)\r\n\r\n-- luacheck: push ignore 131\r\nCANNON = 0\r\nMISSILE = 1\r\nLASER = 2\r\nHARPOON = 3\r\nTURRET = 4\r\nMISSILECONTROL = 5\r\nFIRECONTROLCOMPUTER = 6\r\n-- luacheck: pop\r\n\r\n-- PROPULSION API CONSTANTS (don't change)\r\n\r\n-- luacheck: push ignore 131\r\nWATER = 0\r\nLAND = 1\r\nAIR = 2\r\n\r\nYAWLEFT = 0\r\nYAWRIGHT = 1\r\nROLLLEFT = 2\r\nROLLRIGHT = 3\r\nNOSEUP = 4\r\nNOSEDOWN = 5\r\nINCREASE = 6\r\nDECREASE = 7\r\nMAINPROPULSION = 8\r\n-- luacheck: pop\r\n\r\n-- Control mode. Set to WATER, LAND, or AIR.\r\nMode = WATER\r\n\r\n-- !!! CODE BEGINS HERE, EDIT AT YOUR OWN RISK !!!\r\n\r\nfunction shallowcopy(orig)\r\nlocal orig_type = type(orig)\r\nlocal copy\r\nif orig_type == 'table' then\r\ncopy = {}\r\nfor orig_key, orig_value in pairs(orig) do\r\ncopy[orig_key] = orig_value\r\nend\r\nelse -- number, string, boolean, etc\r\ncopy = orig\r\nend\r\nreturn copy\r\nend\r\n\r\nC = nil\r\nCommons = {}\r\nfunction Commons.new(I, AttackSalvage)\r\nlocal self = shallowcopy(Commons)\r\nself.I = I\r\nself.AttackSalvage = AttackSalvage\r\nself._FriendliesById = {}\r\nreturn self\r\nend\r\nfunction Commons:Now()\r\nif not self._Now then\r\nself._Now = self.I:GetTimeSinceSpawn()\r\nend\r\nreturn self._Now\r\nend\r\nfunction Commons:IsDocked()\r\nif not self._IsDocked then\r\nself._IsDocked = self.I:IsDocked()\r\nend\r\nreturn self._IsDocked\r\nend\r\nfunction Commons:Position()\r\nif not self._Position then\r\nself._Position = self.I:GetConstructPosition()\r\nend\r\nreturn self._Position\r\nend\r\nfunction Commons:CoM()\r\nif not self._CoM then\r\nself._CoM = self.I:GetConstructCenterOfMass()\r\nend\r\nreturn self._CoM\r\nend\r\nfunction Commons:Altitude()\r\nreturn self:CoM().y\r\nend\r\nfunction Commons:Yaw()\r\nif not self._Yaw then\r\nself._Yaw = self.I:GetConstructYaw()\r\nend\r\nreturn self._Yaw\r\nend\r\nfunction Commons:Pitch()\r\nif not self._Pitch then\r\nself._Pitch = -self.I:GetConstructPitch()\r\nend\r\nreturn self._Pitch\r\nend\r\nfunction Commons:Roll()\r\nif not self._Roll then\r\nlocal Roll = self.I:GetConstructRoll()\r\nif Roll > 180 then\r\nRoll = Roll - 360\r\nend\r\nself._Roll = Roll\r\nend\r\nreturn self._Roll\r\nend\r\nfunction Commons:Velocity()\r\nif not self._Velocity then\r\nself._Velocity = self.I:GetVelocityVector()\r\nend\r\nreturn self._Velocity\r\nend\r\nfunction Commons:ForwardSpeed()\r\nif not self._ForwardSpeed then\r\nself._ForwardSpeed = self.I:GetForwardsVelocityMagnitude()\r\nend\r\nreturn self._ForwardSpeed\r\nend\r\nfunction Commons:ForwardVector()\r\nif not self._ForwardVector then\r\nself._ForwardVector = self.I:GetConstructForwardVector()\r\nend\r\nreturn self._ForwardVector\r\nend\r\nfunction Commons:UpVector()\r\nif not self._UpVector then\r\nself._UpVector = self.I:GetConstructUpVector()\r\nend\r\nreturn self._UpVector\r\nend\r\nfunction Commons:RightVector()\r\nif not self._RightVector then\r\nself._RightVector = self.I:GetConstructRightVector()\r\nend\r\nreturn self._RightVector\r\nend\r\nfunction Commons:ToWorld()\r\nif not self._ToWorld then\r\nself._ToWorld = Quaternion.LookRotation(self:ForwardVector(), self:UpVector())\r\nend\r\nreturn self._ToWorld\r\nend\r\nfunction Commons:ToLocal()\r\nif not self._ToLocal then\r\nself._ToLocal = Quaternion.Inverse(self:ToWorld())\r\nend\r\nreturn self._ToLocal\r\nend\r\nfunction Commons:Ground()\r\nif not self._Ground then\r\nself._Ground = math.max(0, self.I:GetTerrainAltitudeForPosition(self:CoM()))\r\nend\r\nreturn self._Ground\r\nend\r\n\r\nV = {}\r\nfunction Vehicle_MakeReset(Table)\r\nlocal ResetHeading,ResetThrottle,ResetPosition = Table.ResetHeading,Table.ResetThrottle,Table.ResetPosition\r\nfunction Table.Reset()\r\nif ResetHeading then ResetHeading() end\r\nif ResetThrottle then ResetThrottle() end\r\nif ResetPosition then ResetPosition() end\r\nend\r\nend\r\nfunction SelectAltitudeImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetAltitude = Source.SetAltitude\r\nfunction Table.AdjustAltitude(Delta)\r\nTable.SetAltitude(C:Altitude() + Delta)\r\nend\r\nend\r\nfunction SelectHeadingImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetHeading = Source.SetHeading\r\nTable.ResetHeading = Source.ResetHeading\r\nfunction Table.AdjustHeading(Bearing)\r\nTable.SetHeading(C:Yaw() + Bearing)\r\nend\r\nVehicle_MakeReset(Table)\r\nend\r\nfunction SelectThrottleImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetThrottle = Source.SetThrottle\r\nTable.GetThrottle = Source.GetThrottle\r\nTable.ResetThrottle = Source.ResetThrottle\r\nfunction Table.AdjustThrottle(Delta)\r\nTable.SetThrottle(Table.GetThrottle() + Delta)\r\nend\r\nVehicle_MakeReset(Table)\r\nend\r\nfunction SelectPositionImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetPosition = Source.SetPosition\r\nTable.ResetPosition = Source.ResetPosition\r\nfunction Table.AdjustPosition(Offset)\r\nTable.SetPosition(C:CoM() + Offset)\r\nend\r\nVehicle_MakeReset(Table)\r\nend\r\nfunction SelectPitchImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetPitch = Source.SetPitch\r\nend\r\nfunction SelectRollImpl(Source, Table) -- luacheck: ignore 131\r\nTable = Table or V\r\nTable.SetRoll = Source.SetRoll\r\nend\r\n\r\nFirstRunList = {}\r\nfunction FirstRun(I)\r\nFirstRun = function (_) end\r\nfor _,Function in pairs(FirstRunList) do\r\nFunction(I)\r\nend\r\nend\r\nfunction AddFirstRun(Function)\r\ntable.insert(FirstRunList, Function)\r\nend\r\n\r\nPeriodic = {}\r\nfunction Periodic.new(Period, Function, Start)\r\nlocal self = {}\r\nself.Ticks = Start and Start or Period\r\nself.Period = Period\r\nself.Function = Function\r\nif Period then\r\nself.Tick = Periodic.Tick\r\nelse\r\nself.Tick = function (_, _) end\r\nend\r\nreturn self\r\nend\r\nfunction Periodic:Tick(I)\r\nlocal Ticks = self.Ticks\r\nTicks = Ticks + 1\r\nif Ticks >= self.Period then\r\nself.Ticks = 0\r\nself.Function(I)\r\nelse\r\nself.Ticks = Ticks\r\nend\r\nend\r\n\r\nfunction CommonsTarget_Ground(self, I)\r\nif not self._Ground then\r\nself._Ground = math.max(0, I:GetTerrainAltitudeForPosition(self.AimPoint))\r\nend\r\nreturn self._Ground\r\nend\r\nfunction CommonsTarget_Elevation(self, I)\r\nif not self._Elevation then\r\nself._Elevation = self.AimPoint.y - self:Ground(I)\r\nend\r\nreturn self._Elevation\r\nend\r\nfunction Commons.ConvertTarget(Index, TargetInfo, Offset, Range)\r\nlocal Target = {\r\nId = TargetInfo.Id,\r\nIndex = Index,\r\nPosition = TargetInfo.Position,\r\nOffset = Offset,\r\nRange = Range,\r\nSqrRange = Range * Range,\r\nAimPoint = TargetInfo.AimPointPosition,\r\nVelocity = TargetInfo.Velocity,\r\nGround = CommonsTarget_Ground,\r\nElevation = CommonsTarget_Elevation,\r\n}\r\nreturn Target\r\nend\r\nfunction Commons:GatherTargets(Targets, StartIndex, MaxTargets)\r\nlocal CoM = self:CoM()\r\nlocal AttackSalvage = self.AttackSalvage\r\nfor _,mindex in ipairs(CommonsTargetConfig.PreferredTargetMainframes) do\r\nlocal TargetCount = self.I:GetNumberOfTargets(mindex)\r\nif TargetCount > 0 then\r\nif not StartIndex then StartIndex = 0 end\r\nif not MaxTargets then MaxTargets = math.huge end\r\nfor tindex = StartIndex,TargetCount-1 do\r\nif #Targets >= MaxTargets then break end\r\nlocal TargetInfo = self.I:GetTargetInfo(mindex, tindex)\r\nif TargetInfo.Valid and (TargetInfo.Protected or AttackSalvage) then\r\nlocal Offset = TargetInfo.Position - CoM\r\nlocal Range = Offset.magnitude\r\nif Range <= CommonsTargetConfig.MaxEnemyRange then\r\ntable.insert(Targets, Commons.ConvertTarget(tindex, TargetInfo, Offset, Range))\r\nend\r\nend\r\nend\r\nbreak\r\nend\r\nend\r\nend\r\nfunction Commons:FirstTarget()\r\nif not self._FirstTarget then\r\nif self._Targets then\r\nlocal Target = self._Targets[1]\r\nself._FirstTarget = Target and { Target } or {}\r\nelse\r\nlocal Targets = {}\r\nself:GatherTargets(Targets, 0, 1)\r\nself._FirstTarget = Targets\r\nend\r\nend\r\nreturn self._FirstTarget[1]\r\nend\r\nfunction Commons:Targets()\r\nif not self._Targets then\r\nlocal Targets = {}\r\nif self._FirstTarget then\r\nlocal Target = self._FirstTarget[1]\r\nif not Target then\r\nself._Targets = {}\r\nreturn self._Targets\r\nend\r\ntable.insert(Targets, Target)\r\nself:GatherTargets(Targets, Target.Index+1)\r\nelse\r\nself:GatherTargets(Targets, 0)\r\nend\r\nself._Targets = Targets\r\nend\r\nreturn self._Targets\r\nend\r\n\r\nShieldAlwaysOn = ShieldActivationAngle >= 180\r\nShieldActivationAngle = math.cos(math.rad(ShieldActivationAngle))\r\nLastShieldCount = 0\r\nShieldActivationTimes = {}\r\nfunction ShieldManager_SetShield(I, Index, State)\r\nif ShieldActivationMode then\r\nI:Component_SetIntLogic(SHIELDPROJECTOR, Index, State and ShieldActivationMode or 0)\r\nelse\r\nlocal Current = I:Component_GetFloatLogic(SHIELDPROJECTOR, Index)\r\nlocal Scale = 16 -- Power of 2 that's >10\r\nif Current < 1 and State then\r\nI:Component_SetFloatLogic(SHIELDPROJECTOR, Index, Current * Scale)\r\nelseif Current >= 1 and not State then\r\nI:Component_SetFloatLogic(SHIELDPROJECTOR, Index, Current / Scale)\r\nend\r\nend\r\nend\r\nfunction ShieldManager_Update(I)\r\nlocal Targets = {}\r\nfor _,Target in pairs(C:Targets()) do\r\nif Target.Range <= ShieldActivationRange then\r\ntable.insert(Targets, Target.Offset / Target.Range)\r\nend\r\nend\r\nlocal ShieldCount = I:Component_GetCount(SHIELDPROJECTOR)\r\nif ShieldCount ~= LastShieldCount then\r\nLastShieldCount = ShieldCount\r\nShieldActivationTimes = {}\r\nend\r\nlocal Now = C:Now()\r\nfor i=0,ShieldCount-1 do\r\nlocal Activate = false\r\nif not ShieldAlwaysOn then\r\nlocal BlockInfo = I:Component_GetBlockInfo(SHIELDPROJECTOR, i)\r\nlocal Forwards = BlockInfo.Forwards\r\nfor _,Target in pairs(Targets) do\r\nif Vector3.Dot(Forwards, Target) >= ShieldActivationAngle then\r\nActivate = true\r\nbreak\r\nend\r\nend\r\nelse\r\nActivate = #Targets > 0\r\nend\r\nlocal LastActivationTime = ShieldActivationTimes[i]\r\nif Activate or not LastActivationTime then\r\nShieldActivationTimes[i] = Now\r\nLastActivationTime = Now\r\nend\r\nlocal ShieldOn = (LastActivationTime + ShieldOffDelay) >= Now\r\nShieldManager_SetShield(I, i, ShieldOn)\r\nend\r\nend\r\nfunction ShieldManager_Disable(I)\r\nfor i=0,I:Component_GetCount(SHIELDPROJECTOR) do\r\nShieldManager_SetShield(I, i, false)\r\nend\r\nend\r\nfunction ShieldManager_Control(I)\r\nif C:IsDocked() then\r\nShieldManager_Disable(I)\r\nelse\r\nShieldManager_Update(I)\r\nend\r\nend\r\n\r\nfunction Commons.AddWeapon(Weapons, WeaponInfo, SubConstructId, WeaponIndex)\r\nlocal Weapon = {\r\nSubConstructId = SubConstructId,\r\nIndex = WeaponIndex,\r\nType = WeaponInfo.WeaponType,\r\nSlot = WeaponInfo.WeaponSlot,\r\nPosition = WeaponInfo.GlobalPosition,\r\nSpeed = WeaponInfo.Speed,\r\nPlayerControl = WeaponInfo.PlayerCurrentlyControllingIt,\r\n}\r\ntable.insert(Weapons, Weapon)\r\nend\r\nfunction Commons:WeaponControllers()\r\nif not self._WeaponControllers then\r\nlocal Weapons = {}\r\nfor windex = 0,self.I:GetWeaponCount()-1 do\r\nlocal Info = self.I:GetWeaponInfo(windex)\r\nCommons.AddWeapon(Weapons, Info, 0, windex)\r\nend\r\nfor _,subid in pairs(self.I:GetAllSubConstructs()) do\r\nfor windex = 0,self.I:GetWeaponCountOnSubConstruct(subid)-1 do\r\nlocal Info = self.I:GetWeaponInfoOnSubConstruct(subid, windex)\r\nCommons.AddWeapon(Weapons, Info, subid, windex)\r\nend\r\nend\r\nself._WeaponControllers = Weapons\r\nend\r\nreturn self._WeaponControllers\r\nend\r\n\r\nLastTransceiverCount = 0\r\nTransceiverGuidances = {}\r\nLastTransceiverResetTime = 0\r\nMissileStates = {}\r\nLastTimeTargetSeen = nil\r\nfunction MissileDriver_GatherTargets(GuidanceInfos)\r\nlocal TargetsByPriority = {}\r\nlocal TargetsById = {}\r\nlocal Targets = C:Targets()\r\nfor _,Target in ipairs(Targets) do\r\nlocal CanTarget = {}\r\nlocal InRange = {}\r\nlocal Altitude = Target.AimPoint.y\r\nlocal Range = Target.SqrRange\r\nfor _,GuidanceInfo in ipairs(GuidanceInfos) do\r\ntable.insert(CanTarget, Altitude >= GuidanceInfo.MinAltitude and Altitude <= GuidanceInfo.MaxAltitude)\r\ntable.insert(InRange, Range >= GuidanceInfo.MinRange and Range <= GuidanceInfo.MaxRange)\r\nend\r\nTarget.CanTarget = CanTarget\r\nTarget.InRange = InRange\r\ntable.insert(TargetsByPriority, Target)\r\nTargetsById[Target.Id] = Target\r\nend\r\nreturn TargetsByPriority, TargetsById\r\nend\r\nfunction MissileDriver_FireControl(I, GuidanceInfos, TargetsByPriority)\r\nlocal SlotsToFire = {}\r\nlocal Fire = false\r\nfor i,Guidance in ipairs(GuidanceInfos) do\r\nlocal WeaponSlot = Guidance.WeaponSlot\r\nif WeaponSlot then\r\nfor _,Target in ipairs(TargetsByPriority) do\r\nif Target.CanTarget[i] and Target.InRange[i] then\r\nif not SlotsToFire[WeaponSlot] then\r\nSlotsToFire[WeaponSlot] = Target.AimPoint\r\nFire = true\r\nend\r\nbreak -- No need to check more targets\r\nend\r\nend\r\nend\r\nend\r\nif Fire then\r\nfor _,Weapon in pairs(C:WeaponControllers()) do\r\nlocal WeaponSlot = Weapon.Slot\r\nlocal AimPoint = SlotsToFire[WeaponSlot]\r\nif AimPoint and not Weapon.PlayerControl then\r\nlocal WeaponType = Weapon.Type\r\nif WeaponType == TURRET or WeaponType == MISSILECONTROL then\r\nlocal Offset = AimPoint - Weapon.Position\r\nif I:AimWeaponInDirectionOnSubConstruct(Weapon.SubConstructId, Weapon.Index, Offset.x, Offset.y, Offset.z, WeaponSlot) > 0 and WeaponType == MISSILECONTROL then\r\nI:FireWeaponOnSubConstruct(Weapon.SubConstructId, Weapon.Index, WeaponSlot)\r\nend\r\nend\r\nend\r\nend\r\nend\r\nend\r\nMissileDriver_TargetSelectors = {\r\nfunction (I, TransceiverIndex, MissileIndex, Targets) -- luacheck: ignore 212\r\nreturn Targets[1]\r\nend,\r\nfunction (I, TransceiverIndex, MissileIndex, Targets) -- luacheck: ignore 212\r\nif #Targets > 0 then\r\nreturn Targets[math.random(#Targets)]\r\nelse\r\nreturn nil\r\nend\r\nend\r\n}\r\nfunction MissileDriver_Update(I, GuidanceInfos, SelectGuidance)\r\nlocal Now = C:Now()\r\nlocal TargetsByPriority, TargetsById = MissileDriver_GatherTargets(GuidanceInfos)\r\nif #TargetsByPriority > 0 then\r\nLastTimeTargetSeen = Now\r\nif I.AIMode ~= \"off\" then\r\nMissileDriver_FireControl(I, GuidanceInfos, TargetsByPriority)\r\nend\r\nlocal TransceiverCount = I:GetLuaTransceiverCount()\r\nif TransceiverCount ~= LastTransceiverCount or (LastTransceiverResetTime+TransceiverResetInterval) < Now then\r\nTransceiverGuidances = {}\r\nLastTransceiverCount = TransceiverCount\r\nLastTransceiverResetTime = Now\r\nend\r\nlocal NewMissileStates = {}\r\nlocal GuidanceQueue = {}\r\nlocal FilteredTargetsByGuidance = {}\r\nlocal FilterTargets = function (GuidanceIndex)\r\nlocal FilteredTargets = FilteredTargetsByGuidance[GuidanceIndex]\r\nif not FilteredTargets then\r\nFilteredTargets = {}\r\nfor _,Target in ipairs(TargetsByPriority) do\r\nif Target.CanTarget[GuidanceIndex] and Target.InRange[GuidanceIndex] then\r\ntable.insert(FilteredTargets, Target)\r\nend\r\nend\r\nFilteredTargetsByGuidance[GuidanceIndex] = FilteredTargets\r\nend\r\nreturn FilteredTargets\r\nend\r\nfor tindex = 0,TransceiverCount-1 do\r\nlocal GuidanceIndex = TransceiverGuidances[tindex]\r\nif not GuidanceIndex then\r\nGuidanceIndex = SelectGuidance(I, tindex)\r\nTransceiverGuidances[tindex] = GuidanceIndex\r\nend\r\nif GuidanceIndex > 0 then\r\nlocal TargetSelector = MissileDriver_TargetSelectors[GuidanceInfos[GuidanceIndex].TargetSelector]\r\nfor mindex = 0,I:GetLuaControlledMissileCount(tindex)-1 do\r\nif not I:IsLuaControlledMissileAnInterceptor(tindex, mindex) then\r\nlocal Missile = I:GetLuaControlledMissileInfo(tindex, mindex)\r\nif Missile.Valid then\r\nlocal MissileId = Missile.Id\r\nlocal MissileState = MissileStates[MissileId]\r\nif not MissileState then MissileState = {} end\r\nlocal MissileTargetId = MissileState.TargetId\r\nif not MissileTargetId then\r\nlocal Target = TargetSelector(I, tindex, mindex, FilterTargets(GuidanceIndex))\r\nif Target then\r\nMissileTargetId = Target.Id\r\nMissileState.TargetId = MissileTargetId\r\nNewMissileStates[MissileId] = MissileState\r\nend\r\nend\r\nlocal Target = nil\r\nif MissileTargetId then\r\nTarget = TargetsById[MissileTargetId]\r\nif not Target then\r\nlocal MissilePosition = Missile.Position\r\nlocal ClosestDistance = math.huge -- Actually squared\r\nfor _,T in ipairs(TargetsByPriority) do\r\nif T.CanTarget[GuidanceIndex] then\r\nlocal Offset = T.Position - MissilePosition\r\nlocal Distance = Offset.sqrMagnitude\r\nif Distance < ClosestDistance then\r\nMissileTargetId = T.Id\r\nMissileState.TargetId = MissileTargetId\r\nNewMissileStates[MissileId] = MissileState\r\nTarget = T\r\nClosestDistance = Distance\r\nend\r\nend\r\nend\r\nelse\r\nNewMissileStates[MissileId] = MissileState\r\nend\r\nend\r\nif Target then\r\nlocal QueueMissiles = GuidanceQueue[Target.Id]\r\nif not QueueMissiles then\r\nQueueMissiles = {}\r\nGuidanceQueue[Target.Id] = QueueMissiles\r\nend\r\nlocal QueueMissile = {\r\nTransceiverIndex = tindex,\r\nMissileIndex = mindex,\r\nGuidanceIndex = GuidanceIndex,\r\nMissile = Missile,\r\nMissileState = MissileState,\r\n}\r\ntable.insert(QueueMissiles, QueueMissile)\r\nend\r\nend\r\nend\r\nend\r\nend\r\nend\r\nlocal BeginUpdateCalled = {}\r\nfor TargetId,QueueMissiles in pairs(GuidanceQueue) do\r\nlocal Target = TargetsById[TargetId]\r\nlocal SetTargetCalled = {}\r\nfor _,QueueMissile in pairs(QueueMissiles) do\r\nlocal GuidanceIndex = QueueMissile.GuidanceIndex\r\nlocal Guidance = GuidanceInfos[GuidanceIndex]\r\nlocal Controller = Guidance.Controller\r\nif not BeginUpdateCalled[GuidanceIndex] then\r\nlocal BeginUpdate = Controller.BeginUpdate\r\nif BeginUpdate then\r\nBeginUpdate(Controller, I, FilterTargets(GuidanceIndex))\r\nend\r\nBeginUpdateCalled[GuidanceIndex] = true\r\nend\r\nif not SetTargetCalled[GuidanceIndex] then\r\nlocal SetTarget = Controller.SetTarget\r\nif SetTarget then\r\nSetTarget(Controller, I, Target)\r\nend\r\nSetTargetCalled[GuidanceIndex] = true\r\nend\r\nlocal tindex,mindex = QueueMissile.TransceiverIndex,QueueMissile.MissileIndex\r\nlocal AimPoint = Controller:Guide(I, tindex, mindex, Target, QueueMissile.Missile, QueueMissile.MissileState)\r\nif AimPoint then\r\nI:SetLuaControlledMissileAimPoint(tindex, mindex, AimPoint.x, AimPoint.y, AimPoint.z)\r\nend\r\nend\r\nend\r\nMissileStates = NewMissileStates\r\nelseif LastTimeTargetSeen and (LastTimeTargetSeen+DetonateAfter) < Now then\r\nLastTimeTargetSeen = nil\r\nfor tindex = 0,I:GetLuaTransceiverCount()-1 do\r\nfor mindex = 0,I:GetLuaControlledMissileCount(tindex)-1 do\r\nI:DetonateLuaControlledMissile(tindex, mindex)\r\nend\r\nend\r\nend\r\nend\r\n\r\nGuidanceInfos = {}\r\nMultiProfileMCMap = {}\r\nMultiProfileScanMCs = false\r\nfunction MultiProfile_Init(DefaultMissileClass, MissileClassMap)\r\nfor i,MP in ipairs(MissileProfiles) do\r\nlocal MissileClass = MP.Class and MissileClassMap[MP.Class] or DefaultMissileClass\r\nlocal GuidanceInfo = {\r\nController = MissileClass.new(MP.Config),\r\nMinAltitude = MP.Limits.MinAltitude,\r\nMaxAltitude = MP.Limits.MaxAltitude,\r\nMinRange = MP.Limits.MinRange^2,\r\nMaxRange = MP.Limits.MaxRange^2,\r\nVertical = MP.SelectBy.Vertical,\r\nDirection = MP.SelectBy.Direction,\r\nWeaponSlot = MP.FireWeaponSlot,\r\nTargetSelector = MP.TargetSelector,\r\n}\r\ntable.insert(GuidanceInfos, GuidanceInfo)\r\nlocal WeaponSlot = MP.SelectBy.WeaponSlot\r\nif WeaponSlot then\r\nif not MultiProfileMCMap[WeaponSlot] then\r\nMultiProfileMCMap[WeaponSlot] = { i, MP.SelectBy.Distance^2 }\r\nMultiProfileScanMCs = true\r\nend\r\nend\r\nend\r\nend\r\nMultiProfileMCs = nil\r\nfunction SelectGuidance(I, TransceiverIndex)\r\nlocal BlockInfo = I:GetLuaTransceiverInfo(TransceiverIndex)\r\nif MultiProfileScanMCs then\r\nif not MultiProfileMCs then\r\nMultiProfileMCs = {}\r\nfor _,Weapon in pairs(C:WeaponControllers()) do\r\nif Weapon.Type == MISSILECONTROL then\r\ntable.insert(MultiProfileMCs, Weapon)\r\nend\r\nend\r\nend\r\nlocal Closest,SelectedIndex = math.huge,nil\r\nfor _,MC in pairs(MultiProfileMCs) do\r\nlocal MCMap = MultiProfileMCMap[MC.Slot]\r\nif MCMap then\r\nlocal Index,BlockRange = unpack(MCMap)\r\nlocal Distance = (BlockInfo.Position - MC.Position).sqrMagnitude\r\nif Distance <= BlockRange and Distance < Closest then\r\nClosest = Distance\r\nSelectedIndex = Index\r\nend\r\nend\r\nend\r\nif SelectedIndex then return SelectedIndex end\r\nend\r\nfor Index,GuidanceInfo in ipairs(GuidanceInfos) do\r\nlocal Direction = GuidanceInfo.Direction\r\nif Direction then\r\nfor _,Dir in pairs(Direction) do\r\nif Vector3.Dot(BlockInfo.LocalForwards, Dir) > .001 then\r\nreturn Index\r\nend\r\nend\r\nelse\r\nlocal Vertical = GuidanceInfo.Vertical\r\nif Vertical == true and math.abs(BlockInfo.LocalForwards.y) > .001 then\r\nreturn Index\r\nelseif Vertical == false and math.abs(BlockInfo.LocalForwards.y) <= .001 then\r\nreturn Index\r\nend\r\nend\r\nend\r\nreturn 1\r\nend\r\nfunction MissileMain_Update(I)\r\nMultiProfileMCs = nil\r\nMissileDriver_Update(I, GuidanceInfos, SelectGuidance)\r\nend\r\n\r\nfunction QuadraticSolver(a, b, c)\r\nif a == 0 then\r\nif b ~= 0 then\r\nreturn { -c / b }\r\nelse\r\nreturn {} -- Division by zero...\r\nend\r\nelse\r\nlocal disc = b * b - 4 * a * c\r\nif disc < 0 then\r\nreturn {} -- Imaginary\r\nelseif disc == 0 then\r\nreturn { -.5 * b / a }\r\nelse\r\nlocal q = (b > 0) and (-.5 * (b + math.sqrt(disc))) or (-.5 * (b - math.sqrt(disc)))\r\nlocal t1 = q / a\r\nlocal t2 = c / q\r\nif t1 > t2 then\r\nreturn { t2, t1 }\r\nelse\r\nreturn { t1, t2 }\r\nend\r\nend\r\nend\r\nend\r\n\r\nfunction QuadraticIntercept(Position, SpeedSquared, Target, TargetVelocity, DefaultInterceptTime)\r\nif not DefaultInterceptTime then DefaultInterceptTime = 1 end\r\nlocal Offset = Target - Position\r\nlocal a = Vector3.Dot(TargetVelocity, TargetVelocity) - SpeedSquared  -- aka difference of squares of speeds\r\nlocal b = 2 * Vector3.Dot(Offset, TargetVelocity)\r\nlocal c = Vector3.Dot(Offset, Offset) -- Offset.magnitude squared\r\nlocal Solutions = QuadraticSolver(a, b, c)\r\nlocal InterceptTime = DefaultInterceptTime\r\nif #Solutions == 1 then\r\nlocal t = Solutions[1]\r\nif t > 0 then InterceptTime = t end\r\nelseif #Solutions == 2 then\r\nlocal t1 = Solutions[1]\r\nlocal t2 = Solutions[2]\r\nif t1 > 0 then\r\nInterceptTime = t1\r\nelseif t2 > 0 then\r\nInterceptTime = t2\r\nend\r\nend\r\nreturn Target + TargetVelocity * InterceptTime,InterceptTime\r\nend\r\n\r\nfunction GetVectorAngle(v)\r\nreturn math.deg(math.atan2(v.x, v.z))\r\nend\r\n\r\nfunction Round(num, idp)\r\nlocal mult = 10^(idp or 0)\r\nreturn math.floor(num * mult + 0.5) / mult\r\nend\r\n\r\nfunction deepcopy(orig)\r\nlocal orig_type = type(orig)\r\nlocal copy\r\nif orig_type == 'table' then\r\ncopy = {}\r\nfor orig_key, orig_value in next, orig, nil do\r\ncopy[deepcopy(orig_key)] = deepcopy(orig_value)\r\nend\r\nelse -- number, string, boolean, etc\r\ncopy = orig\r\nend\r\nreturn copy\r\nend\r\n\r\nfunction Sign(n, ZeroSign, Eps)\r\nEps = Eps or 0\r\nif n > Eps then\r\nreturn 1\r\nelseif n < -Eps then\r\nreturn -1\r\nelse\r\nreturn ZeroSign or 0\r\nend\r\nend\r\n\r\nfunction Clamp(n, Min, Max)\r\nif n < Min then return Min elseif n > Max then return Max else return n end\r\nend\r\n\r\nMissileCommand = {}\r\nfunction MissileCommand.new(I, TransceiverIndex, MissileIndex)\r\nlocal self = {}\r\nlocal Fuel,Lifetime,VarThrustCount,VarThrust,ThrustCount = 0,45,0,0,0\r\nlocal switch = {}\r\nswitch[\"missile variable speed thruster\"] = function (Part)\r\nVarThrustCount = VarThrustCount + 1\r\nVarThrust = VarThrust + Part.Registers[2]\r\nend\r\nswitch[\"missile fuel tank\"] = function (_)\r\nFuel = Fuel + 5000\r\nend\r\nswitch[\"missile regulator\"] = function (_)\r\nLifetime = Lifetime + 180\r\nend\r\nswitch[\"missile short range thruster\"] = function (Part)\r\nThrustCount = ThrustCount + 1\r\nself.ThrustDelay = Part.Registers[1]\r\nself.ThrustDuration = Part.Registers[2]\r\nend\r\nswitch[\"missile magnet\"] = function (Part)\r\nself.MagnetRange = Part.Registers[1]\r\nself.MagnetDelay = Part.Registers[2]\r\nend\r\nswitch[\"missile ballast\"] = function (Part)\r\nself.BallastDepth = Part.Registers[1]\r\nself.BallastBuoyancy = Part.Registers[2]\r\nend\r\nlocal MissileInfo = I:GetMissileInfo(TransceiverIndex, MissileIndex)\r\nfor _,Part in ipairs(MissileInfo.Parts) do\r\nlocal f = switch[Part.Name]\r\nif f then f(Part) end\r\nend\r\nself.Fuel = Fuel\r\nself.Lifetime = Lifetime\r\nif VarThrustCount > 0 then\r\nself.VarThrustCount = VarThrustCount\r\nself.VarThrust = VarThrust\r\nend\r\nif ThrustCount > 0 then\r\nself.ThrustCount = ThrustCount\r\nend\r\nself.SendUpdate = MissileCommand.SendUpdate\r\nreturn self\r\nend\r\nfunction MissileCommand.ShouldUpdate(Command, Current)\r\nreturn Command and Current and (Command ~= Current)\r\nend\r\nfunction MissileCommand:SendUpdate(I, TransceiverIndex, MissileIndex, Command)\r\nlocal switch = {}\r\nlocal DoUpdate = false\r\nlocal ShouldUpdate = MissileCommand.ShouldUpdate\r\nif ShouldUpdate(Command.VarThrust, self.VarThrust) then\r\nlocal Thrust = Clamp(Command.VarThrust / self.VarThrustCount, 50, 10000)\r\nswitch[\"missile variable speed thruster\"] = function (Part)\r\nPart:SendRegister(2, Thrust)\r\nend\r\nself.VarThrust = Command.VarThrust\r\nDoUpdate = true\r\nend\r\nif ShouldUpdate(Command.ThrustDelay, self.ThrustDelay) or ShouldUpdate(Command.ThrustDuration, self.ThrustDuration) then\r\nlocal Delay = Command.ThrustDelay and Clamp(Command.ThrustDelay, 0, 60) or nil\r\nlocal Duration = Command.ThrustDuration and Clamp(Command.ThrustDuration, 0, 20) or nil\r\nswitch[\"missile short range thruster\"] = function (Part)\r\nif Delay then Part:SendRegister(1, Delay) end\r\nif Duration then Part:SendRegister(2, Duration) end\r\nend\r\nif Delay then self.ThrustDelay = Delay end\r\nif Duration then self.ThrustDuration = Duration end\r\nDoUpdate = true\r\nend\r\nif ShouldUpdate(Command.MagnetRange, self.MagnetRange) or ShouldUpdate(Command.MagnetDelay, self.MagnetDelay) then\r\nlocal Range = Command.MagnetRange and Clamp(Command.MagnetRange, 5, 100) or nil\r\nlocal Delay = Command.MagnetDelay and Clamp(Command.MagnetDelay, 3, 30) or nil\r\nswitch[\"missile magnet\"] = function (Part)\r\nif Range then Part:SendRegister(1, Range) end\r\nif Delay then Part:SendRegister(2, Delay) end\r\nend\r\nif Range then self.MagnetRange = Range end\r\nif Delay then self.MagnetDelay = Delay end\r\nDoUpdate = true\r\nend\r\nif ShouldUpdate(Command.BallastDepth, self.BallastDepth) or ShouldUpdate(Command.BallastBuoyancy, self.BallastBuoyancy) then\r\nlocal Depth = Command.BallastDepth and Clamp(Command.BallastDepth, 0, 500) or nil\r\nlocal Buoyancy = Command.BallastBuoyancy and Clamp(Command.BallastBuoyancy, -5, 5) or nil\r\nswitch[\"missile ballast\"] = function (Part)\r\nif Depth then Part:SendRegister(1, Depth) end\r\nif Buoyancy then Part:SendRegister(2, Buoyancy) end\r\nend\r\nif Depth then self.BallastDepth = Depth end\r\nif Buoyancy then self.BallastBuoyancy = Buoyancy end\r\nDoUpdate = true\r\nend\r\nif DoUpdate then\r\nlocal MissileInfo = I:GetMissileInfo(TransceiverIndex, MissileIndex)\r\nfor _,Part in ipairs(MissileInfo.Parts) do\r\nlocal f = switch[Part.Name]\r\nif f then f(Part) end\r\nend\r\nend\r\nend\r\n\r\nGeneralMissile = {}\r\nfunction GeneralMissile_PrepareAngle(Angle, Default)\r\nreturn Angle and math.cos(math.rad(Angle)) or Default\r\nend\r\nfunction GeneralMissile.new(Config)\r\nlocal self = deepcopy(Config)\r\nif not self.AntiAir then\r\nself.AirProfileElevation = math.huge\r\nself.AntiAir = {\r\nPhases = {\r\n{\r\n},\r\n},\r\n}\r\nelseif not self.Phases then\r\nself.AirProfileElevation = -math.huge\r\nself.Phases = {\r\n{\r\nDistance = 150,\r\n},\r\n{\r\nDistance = 50,\r\nAboveSeaLevel = false,\r\nMinElevation = 0,\r\n},\r\n}\r\nend\r\nself.DetonationAngle = GeneralMissile_PrepareAngle(self.DetonationAngle, 1)\r\nfor _,Phase in pairs(self.AntiAir.Phases) do\r\nif Phase.Change and Phase.Change.When then\r\nPhase.Change.When.Angle = GeneralMissile_PrepareAngle(Phase.Change.When.Angle)\r\nend\r\nend\r\nfor _,Phase in pairs(self.Phases) do\r\nif Phase.Change and Phase.Change.When then\r\nPhase.Change.When.Angle = GeneralMissile_PrepareAngle(Phase.Change.When.Angle)\r\nend\r\nend\r\nif not self.DetonationRange then self.DetonationRange = -1 end\r\nif #self.AntiAir.Phases == 1 then\r\nself.AntiAir.Phases[1].Range = math.huge\r\ntable.insert(self.AntiAir.Phases, {})\r\nend\r\nself.AntiAir.Phases[#self.AntiAir.Phases].Range = math.huge\r\nself.GetTerrainHeight = GeneralMissile.GetTerrainHeight\r\nself.ModifyAltitude = GeneralMissile.ModifyAltitude\r\nself.GetPhaseAltitude2D = GeneralMissile.GetPhaseAltitude2D\r\nself.ExecuteProfile2D = GeneralMissile.ExecuteProfile2D\r\nself.ExecuteProfile3D = GeneralMissile.ExecuteProfile3D\r\nself.SetTarget = GeneralMissile.SetTarget\r\nself.Guide = GeneralMissile.Guide\r\nreturn self\r\nend\r\nfunction GeneralMissile_UpdateMissileState(I, TransceiverIndex, MissileIndex, Position, Missile, MissileState)\r\nlocal Command = MissileState.Command\r\nif not Command then\r\nMissileState.Command = MissileCommand.new(I, TransceiverIndex, MissileIndex)\r\nCommand = MissileState.Command\r\nMissileState.Fuel = Command.Fuel\r\nend\r\nlocal Fuel = MissileState.Fuel\r\nlocal LastTime = MissileState.LastTime\r\nif not LastTime then LastTime = 0 end\r\nlocal Now = Missile.TimeSinceLaunch\r\nlocal TimeStep = Now - LastTime\r\nMissileState.LastTime = Now\r\nMissileState.Now = Now\r\nMissileState.TimeStep = TimeStep\r\nif Position.y >= 0 then\r\nlocal CurrentThrust = Command.VarThrust or 0\r\nif Command.ThrustCount and Now > Command.ThrustDelay and (Command.ThrustDelay + Command.ThrustDuration) > Now then\r\nCurrentThrust = CurrentThrust + 1000\r\nend\r\nFuel = Fuel - CurrentThrust * TimeStep -- Assumes 1 fuel per thrust per second\r\nend\r\nMissileState.Fuel = math.max(Fuel, 0)\r\nend\r\nfunction GeneralMissile_HandleMissileChange(I, TransceiverIndex, MissileIndex, Position, MissileState, ImpactTime, Change)\r\nif not Change then return end\r\nif Change.When then\r\nif Change.When.Angle and MissileState.TargetCosAngle < Change.When.Angle then return end\r\nif Change.When.Range and MissileState.TargetRange > Change.When.Range then return end\r\nif Change.When.AltitudeGT and Position.y <= Change.When.AltitudeGT then return end\r\nif Change.When.AltitudeLT and Position.y >= Change.When.AltitudeLT then return end\r\nend\r\nChange.VarThrust = Change.Thrust\r\nif Change.VarThrust and Change.VarThrust < 0 then\r\nlocal Remaining = math.max(MissileState.Command.Lifetime - MissileState.Now, 0)\r\nImpactTime = math.min(Remaining, ImpactTime)\r\nChange.VarThrust = (ImpactTime > 0) and Round(MissileState.Fuel / ImpactTime, 1) or math.huge\r\nend\r\nMissileState.Command:SendUpdate(I, TransceiverIndex, MissileIndex, Change)\r\nend\r\nfunction GeneralMissile:GetTerrainHeight(I, Position, Velocity, MaxDistance)\r\nif not MaxDistance then MaxDistance = math.huge end\r\nlocal LookAheadTime,LookAheadResolution = self.LookAheadTime,self.LookAheadResolution\r\nif not LookAheadTime or LookAheadResolution <= 0 then return -500 end\r\nlocal Height = -500\r\nlocal PlanarVelocity = Vector3(Velocity.x, 0, Velocity.z)\r\nlocal Speed = PlanarVelocity.magnitude\r\nlocal Direction = PlanarVelocity / Speed\r\nlocal Distance = math.min(Speed * LookAheadTime, MaxDistance)\r\nfor d = 0,Distance-1,LookAheadResolution do\r\nHeight = math.max(Height, I:GetTerrainAltitudeForPosition(Position + Direction * d))\r\nend\r\nHeight = math.max(Height, I:GetTerrainAltitudeForPosition(Position + Direction * Distance))\r\nreturn Height\r\nend\r\nfunction GeneralMissile:ModifyAltitude(Position, AimPoint, Altitude, RelativeTo)\r\nif not AimPoint then\r\nif RelativeTo == 1 then\r\nreturn self.TargetAltitude + Altitude\r\nelseif RelativeTo == 2 then\r\nreturn self.TargetDepth + Altitude\r\nelseif RelativeTo == 3 then\r\nreturn self.TargetGround + Altitude\r\nelseif RelativeTo == 4 then\r\nreturn Position.y + Altitude\r\nelseif RelativeTo == 5 then\r\nreturn math.max(self.TargetAltitude, Altitude)\r\nelseif RelativeTo == 6 then\r\nreturn math.min(self.TargetAltitude, Altitude)\r\nelse\r\nreturn Altitude\r\nend\r\nelse\r\nif RelativeTo == 1 then\r\nreturn AimPoint.y + Altitude\r\nelseif RelativeTo == 2 then\r\nreturn math.min(AimPoint.y, 0) + Altitude\r\nelseif RelativeTo == 3 then\r\nreturn math.max(AimPoint.y, 0) + Altitude\r\nelseif RelativeTo == 4 then\r\nreturn Position.y + Altitude\r\nelseif RelativeTo == 5 then\r\nreturn math.max(AimPoint.y, Altitude)\r\nelseif RelativeTo == 6 then\r\nreturn math.min(AimPoint.y, Altitude)\r\nelse\r\nreturn Altitude\r\nend\r\nend\r\nend\r\nfunction GeneralMissile:GetPhaseAltitude2D(I, Position, Velocity, Phase, MaxDistance)\r\nlocal Height = self:GetTerrainHeight(I, Position, Velocity, MaxDistance)\r\nif Phase.AboveSeaLevel then\r\nHeight = math.max(Height, 0)\r\nend\r\nHeight = Height + Phase.MinElevation\r\nlocal Altitude = Phase.Altitude\r\nif not Altitude then\r\nreturn Height\r\nelse\r\nreturn math.max(self:ModifyAltitude(Position, nil, Altitude, Phase.RelativeTo), Height)\r\nend\r\nend\r\nfunction GeneralMissile:ExecuteProfile2D(I, TransceiverIndex, MissileIndex, Position, Velocity, AimPoint, TargetVelocity, MissileState)\r\nlocal ImpactTime\r\nAimPoint,ImpactTime = QuadraticIntercept(Position, Vector3.Dot(Velocity, Velocity), AimPoint, TargetVelocity, 9999)\r\nlocal NewTarget = Vector3(AimPoint.x, Position.y, AimPoint.z)\r\nlocal GroundOffset = NewTarget - Position\r\nlocal GroundDistance = GroundOffset.magnitude\r\nlocal TerminalPhase = self.Phases[1]\r\nif GroundDistance < TerminalPhase.Distance then\r\nlocal Altitude = TerminalPhase.Altitude\r\nif Altitude then\r\nAimPoint = Vector3(AimPoint.x, self:ModifyAltitude(Position, AimPoint, Altitude, TerminalPhase.RelativeTo), AimPoint.z)\r\nend\r\nGeneralMissile_HandleMissileChange(I, TransceiverIndex, MissileIndex, Position, MissileState, ImpactTime, TerminalPhase.Change)\r\nreturn AimPoint\r\nend\r\nlocal PreviousPhase,IsClosing\r\nlocal Phase = TerminalPhase\r\nfor i = 2,#self.Phases do\r\nPreviousPhase = Phase\r\nPhase = self.Phases[i]\r\nIsClosing = i == #self.Phases\r\nif GroundDistance < Phase.Distance then break end\r\nend\r\nlocal GroundDirection,ToNextPhase\r\nlocal ApproachAngle = Phase.ApproachAngle\r\nif ApproachAngle then\r\nlocal TargetYaw = GetVectorAngle(TargetVelocity)\r\nlocal MissileBearing = Mathf.DeltaAngle(TargetYaw, GetVectorAngle(Position - AimPoint))\r\nlocal AimPointBearing = (TargetYaw + Sign(MissileBearing, 1) * ApproachAngle) % 360\r\nlocal ModifiedAimPoint = AimPoint + Quaternion.Euler(0, AimPointBearing, 0) * (Vector3.forward * PreviousPhase.Distance)\r\nModifiedAimPoint.y = Position.y\r\nlocal Offset = ModifiedAimPoint - Position\r\nToNextPhase = Offset.magnitude\r\nGroundDirection = Offset / ToNextPhase\r\nelse\r\nGroundDirection = GroundOffset / GroundDistance\r\nToNextPhase = GroundDistance - PreviousPhase.Distance\r\nend\r\nlocal AimDistance = IsClosing and Phase.Distance or ToNextPhase\r\nlocal NewAimPoint = Position + GroundDirection * AimDistance\r\nNewAimPoint.y = self:GetPhaseAltitude2D(I, Position, Velocity, Phase, ToNextPhase)\r\nGeneralMissile_HandleMissileChange(I, TransceiverIndex, MissileIndex, Position, MissileState, ImpactTime, Phase.Change)\r\nlocal Evasion = Phase.Evasion\r\nif Evasion then\r\nlocal Perp = Vector3.Cross(GroundDirection, Vector3.up)\r\nNewAimPoint = NewAimPoint + Perp * Evasion[1] * (2 * Mathf.PerlinNoise(Evasion[2] * C:Now(), TransceiverIndex * 37 + MissileIndex) - 1)\r\nend\r\nreturn NewAimPoint\r\nend\r\nfunction GeneralMissile:ExecuteProfile3D(I, TransceiverIndex, MissileIndex, Position, Velocity, AimPoint, TargetVelocity, MissileState)\r\nlocal ImpactTime\r\nAimPoint,ImpactTime = QuadraticIntercept(Position, Vector3.Dot(Velocity, Velocity), AimPoint, TargetVelocity, 9999)\r\nlocal TargetOffset = AimPoint - Position\r\nlocal TargetRange = TargetOffset.magnitude\r\nlocal TerminalPhase = self.AntiAir.Phases[1]\r\nif TargetRange < TerminalPhase.Range then\r\nlocal Altitude = TerminalPhase.Altitude\r\nif Altitude then\r\nAimPoint = Vector3(AimPoint.x, self:ModifyAltitude(Position, AimPoint, Altitude, TerminalPhase.RelativeTo), AimPoint.z)\r\nend\r\nGeneralMissile_HandleMissileChange(I, TransceiverIndex, MissileIndex, Position, MissileState, ImpactTime, TerminalPhase.Change)\r\nreturn AimPoint\r\nend\r\nlocal PreviousPhase\r\nlocal Phase = TerminalPhase\r\nfor i = 2,#self.AntiAir.Phases do\r\nPreviousPhase = Phase\r\nPhase = self.AntiAir.Phases[i]\r\nif TargetRange < Phase.Range then break end\r\nend\r\nlocal TargetDirection,ToNextPhase\r\nTargetDirection = TargetOffset / TargetRange\r\nToNextPhase = TargetRange - PreviousPhase.Range\r\nlocal NewAimPoint = Position + TargetDirection * ToNextPhase\r\nlocal Altitude = Phase.Altitude\r\nif Altitude then\r\nNewAimPoint.y = self:ModifyAltitude(Position, nil, Altitude, Phase.RelativeTo)\r\nend\r\nGeneralMissile_HandleMissileChange(I, TransceiverIndex, MissileIndex, Position, MissileState, ImpactTime, Phase.Change)\r\nreturn NewAimPoint\r\nend\r\nfunction GeneralMissile:SetTarget(I, Target)\r\nlocal TargetAimPoint = Target.AimPoint\r\nlocal TargetAltitude = TargetAimPoint.y\r\nself.TargetAltitude = TargetAltitude -- Raw altitude\r\nself.TargetDepth = math.min(TargetAltitude, 0) -- When below sea level\r\nself.TargetGround = Target:Ground(I)\r\nself.Use2DProfile = (TargetAltitude - self.TargetGround) <= self.AirProfileElevation\r\nend\r\nfunction GeneralMissile:Guide(I, TransceiverIndex, MissileIndex, Target, Missile, MissileState)\r\nlocal TargetAimPoint = Target.AimPoint\r\nlocal MissilePosition = Missile.Position\r\nlocal MissileVelocity = Missile.Velocity\r\nlocal MissileSpeed = MissileVelocity.magnitude\r\nGeneralMissile_UpdateMissileState(I, TransceiverIndex, MissileIndex, MissilePosition, Missile, MissileState)\r\nlocal TargetVector = TargetAimPoint - MissilePosition\r\nlocal TargetRange = TargetVector.magnitude\r\nlocal CosAngle = Vector3.Dot(TargetVector / TargetRange, MissileVelocity / MissileSpeed)\r\nMissileState.TargetVector = TargetVector\r\nMissileState.TargetRange = TargetRange\r\nMissileState.TargetCosAngle = CosAngle\r\nif TargetRange <= self.DetonationRange and CosAngle <= self.DetonationAngle then\r\nI:DetonateLuaControlledMissile(TransceiverIndex, MissileIndex)\r\nreturn TargetAimPoint -- Don't really care at this point\r\nend\r\nlocal AimPoint\r\nlocal MinAltitude = self.MinAltitude\r\nif MissilePosition.y < MinAltitude then\r\nAimPoint = Vector3(MissilePosition.x, MinAltitude+1000, MissilePosition.z)\r\nelseif self.Use2DProfile then\r\nAimPoint = self:ExecuteProfile2D(I, TransceiverIndex, MissileIndex, MissilePosition, MissileVelocity, TargetAimPoint, Target.Velocity, MissileState)\r\nelse\r\nAimPoint = self:ExecuteProfile3D(I, TransceiverIndex, MissileIndex, MissilePosition, MissileVelocity, TargetAimPoint, Target.Velocity, MissileState)\r\nend\r\nreturn AimPoint\r\nend\r\n\r\nMultiProfile_Init(GeneralMissile)\r\n\r\nfunction NormalizeBearing(Bearing)\r\nBearing = Bearing % 360\r\nif Bearing > 180 then Bearing = Bearing - 360 end\r\nreturn Bearing\r\nend\r\n\r\nRollTurnControl = {}\r\nfunction RollTurn.SetHeading(Heading)\r\nlocal AngleBeforeRoll = RollTurn.AngleBeforeRoll\r\nif AngleBeforeRoll then\r\nHeading = Heading % 360\r\nlocal Bearing = NormalizeBearing(Heading - GetVectorAngle(C:ForwardVector()))\r\nlocal AbsBearing = math.abs(Bearing)\r\nlocal MaxRollAngle,RollAngleGain = RollTurn.MaxRollAngle,RollTurn.RollAngleGain\r\nif AbsBearing > AngleBeforeRoll then\r\nlocal RollAngle = RollAngleGain and math.min(MaxRollAngle, (AbsBearing - AngleBeforeRoll) * RollAngleGain) or MaxRollAngle\r\nRollTurnControl.SetRoll(-Sign(Bearing) * RollAngle)\r\nelse\r\nRollTurnControl.SetRoll(0)\r\nend\r\nend\r\nRollTurnControl.SetHeading(Heading)\r\nend\r\nfunction RollTurn.ResetHeading()\r\nRollTurnControl.ResetHeading()\r\nRollTurnControl.SetRoll(0)\r\nend\r\nfunction RollTurn.SetRoll(Angle)\r\nif not RollTurn.AngleBeforeRoll then\r\nRollTurnControl.SetRoll(Angle)\r\nend\r\nend\r\n\r\nPID = {}\r\nfunction PID.new(Config, Min, Max)\r\nlocal self = {}\r\nself.Kp = Config.Kp\r\nif Config.Ti ~= 0 then\r\nself.Ki = Config.Kp / Config.Ti\r\nelse\r\nself.Ki = 0\r\nend\r\nself.Kd = Config.Kp * Config.Td\r\nself.Integral = 0.0\r\nself.LastError = 0.0\r\nself.Min = Min\r\nself.Max = Max\r\nself.Control = PID.FirstControl\r\nreturn self\r\nend\r\nfunction PID:Control(Error)\r\nlocal Now = C:Now()\r\nlocal dt = Now - self.LastTime\r\nlocal Integral = self.Integral + Error * dt\r\nlocal Derivative = (Error - self.LastError) / dt\r\nself.LastError = Error\r\nself.LastTime = Now\r\nlocal CV = (self.Kp * Error) +\r\n(self.Ki * Integral) +\r\n(self.Kd * Derivative)\r\nif CV > self.Max then\r\nif Integral <= self.Integral then self.Integral = Integral end\r\nreturn self.Max\r\nelseif CV < self.Min then\r\nif Integral >= self.Integral then self.Integral = Integral end\r\nreturn self.Min\r\nend\r\nself.Integral = Integral\r\nreturn CV\r\nend\r\nfunction PID:FirstControl(_)\r\nself.Control = PID.Control\r\nself.LastTime = C:Now()\r\nreturn 0\r\nend\r\n\r\nSubControl_RollPID = PID.new(SubControlPIDConfig.Roll, -1, 1)\r\nSubControl_PitchPID = PID.new(SubControlPIDConfig.Pitch, -1, 1)\r\nSubControl_DepthPID = PID.new(SubControlPIDConfig.Depth, -1, 1)\r\nSubControl_DesiredAltitude = 0\r\nSubControl_DesiredPitch = 0\r\nSubControl_DesiredRoll = 0\r\nSubControl_LastHydrofoilCount = 0\r\nSubControl_HydrofoilInfos = {}\r\nSubControl_UsesHydrofoils = HydrofoilControl.Depth > 0 or HydrofoilControl.Pitch > 0 or HydrofoilControl.Roll > 0\r\nSubControl_ControlAltitude = HydrofoilControl.Depth > 0\r\nSubControl_ControlPitch = HydrofoilControl.Pitch > 0\r\nSubControl_ControlRoll = HydrofoilControl.Roll > 0\r\nSubControl = {}\r\nfunction SubControl.SetAltitude(Alt)\r\nSubControl_DesiredAltitude = Alt\r\nend\r\nfunction SubControl.SetPitch(Angle)\r\nSubControl_DesiredPitch = Angle\r\nend\r\nfunction SubControl.SetRoll(Angle)\r\nSubControl_DesiredRoll = Angle\r\nend\r\nSubControl_Eps = .001\r\nfunction SubControl_GetHydrofoilSign(BlockInfo)\r\nlocal DotZ = BlockInfo.LocalForwards.z\r\nlocal DotY = (BlockInfo.LocalRotation * Vector3.up).y\r\nlocal ForwardSign = Sign(DotZ, 0, SubControl_Eps)\r\nlocal UpSign = Sign(DotY, 0, SubControl_Eps)\r\nif ForwardSign ~= 0 and UpSign ~= 0 then\r\nreturn ForwardSign * UpSign\r\nelse\r\nreturn 0\r\nend\r\nend\r\nfunction SubControl_ClassifyHydrofoils(I)\r\nlocal HydrofoilCount = I:Component_GetCount(HYDROFOIL)\r\nif HydrofoilCount ~= SubControl_LastHydrofoilCount then\r\nSubControl_HydrofoilInfos = {}\r\nSubControl_LastHydrofoilCount = HydrofoilCount\r\nlocal XMax = {}\r\nXMax[-1] = 0\r\nXMax[0] = 0\r\nXMax[1] = 0\r\nlocal ZMax = {}\r\nZMax[-1] = 0\r\nZMax[0] = 0\r\nZMax[1] = 0\r\nlocal DepthFraction,PitchFraction,RollFraction = HydrofoilControl.Depth,HydrofoilControl.Pitch,HydrofoilControl.Roll\r\nfor i = 0,HydrofoilCount-1 do\r\nlocal BlockInfo = I:Component_GetBlockInfo(HYDROFOIL, i)\r\nlocal LocalSign = SubControl_GetHydrofoilSign(BlockInfo)\r\nif LocalSign ~= 0 then\r\nlocal CoMOffset = BlockInfo.LocalPositionRelativeToCom\r\nlocal CoMOffsetX = CoMOffset.x\r\nlocal CoMOffsetZ = CoMOffset.z\r\nlocal RollScale = Sign(CoMOffsetX)\r\nlocal PitchScale = Sign(CoMOffsetZ)\r\nlocal Info = {\r\nIndex = i,\r\nLocalSign = LocalSign,\r\nDepthScale = DepthFraction,\r\nRollScale = RollScale,\r\nPitchScale = PitchScale,\r\nCoMOffsetX = CoMOffsetX,\r\nCoMOffsetZ = CoMOffsetZ,\r\n}\r\ntable.insert(SubControl_HydrofoilInfos, Info)\r\nCoMOffsetX = math.abs(CoMOffsetX)\r\nXMax[RollScale] = math.max(XMax[RollScale], CoMOffsetX)\r\nCoMOffsetZ = math.abs(CoMOffsetZ)\r\nZMax[PitchScale] = math.max(ZMax[PitchScale], CoMOffsetZ)\r\nend\r\nend\r\nfor _,Info in pairs(SubControl_HydrofoilInfos) do\r\nif ScaleByCoMOffset then\r\nlocal CoMOffsetX = Info.CoMOffsetX\r\nif CoMOffsetX ~= 0 then\r\nInfo.RollScale = XMax[Info.RollScale] / CoMOffsetX\r\nend\r\nlocal CoMOffsetZ = Info.CoMOffsetZ\r\nif CoMOffsetZ ~= 0 then\r\nInfo.PitchScale = ZMax[Info.PitchScale] / CoMOffsetZ\r\nend\r\nend\r\nInfo.RollScale = RollFraction * Info.RollScale\r\nInfo.PitchScale = PitchFraction * Info.PitchScale\r\nend\r\nend\r\nend\r\nfunction SubControl.Update(I)\r\nlocal RollCV = SubControl_ControlRoll and SubControl_RollPID:Control(SubControl_DesiredRoll - C:Roll()) or 0\r\nlocal PitchCV = SubControl_ControlPitch and SubControl_PitchPID:Control(SubControl_DesiredPitch - C:Pitch()) or 0\r\nlocal DepthCV = SubControl_ControlAltitude and SubControl_DepthPID:Control((SubControl_DesiredAltitude - C:Altitude()) * C:UpVector().y) or 0\r\nif SubControl_UsesHydrofoils then\r\nSubControl_ClassifyHydrofoils(I)\r\nlocal VehicleSign = Sign(C:ForwardSpeed(), 1)\r\nfor _,Info in pairs(SubControl_HydrofoilInfos) do\r\nlocal Output = Clamp((RollCV * Info.RollScale + PitchCV * Info.PitchScale + Info.DepthScale * DepthCV) * 45, -45, 45)\r\nI:Component_SetFloatLogic(HYDROFOIL, Info.Index, VehicleSign * Info.LocalSign * Output)\r\nend\r\nend\r\nend\r\nfunction SubControl.Disable(_)\r\nend\r\n\r\nfunction MakeRequestControl(Scale)\r\nScale = Scale or 1\r\nreturn function (I, Fraction, PosControl, NegControl, CV)\r\nif Fraction > 0 then\r\nCV = Clamp(Fraction * CV * Scale, -1, 1)\r\nif PosControl ~= NegControl then\r\nif CV > 0 then\r\nI:RequestControl(Mode, PosControl, CV)\r\nelseif CV < 0 then\r\nI:RequestControl(Mode, NegControl, -CV)\r\nend\r\nelse\r\nI:RequestControl(Mode, PosControl, CV)\r\nend\r\nend\r\nend\r\nend\r\n\r\nSixDoF_AltitudePID = PID.new(SixDoFPIDConfig.Altitude, -30, 30)\r\nSixDoF_YawPID = PID.new(SixDoFPIDConfig.Yaw, -30, 30)\r\nSixDoF_PitchPID = PID.new(SixDoFPIDConfig.Pitch, -30, 30)\r\nSixDoF_RollPID = PID.new(SixDoFPIDConfig.Roll, -30, 30)\r\nSixDoF_ForwardPID = PID.new(SixDoFPIDConfig.Forward, -30, 30)\r\nSixDoF_RightPID = PID.new(SixDoFPIDConfig.Right, -30, 30)\r\nSixDoF_DesiredAltitude = 0\r\nSixDoF_DesiredHeading = nil\r\nSixDoF_DesiredPosition = nil\r\nSixDoF_DesiredThrottle = nil\r\nSixDoF_CurrentThrottle = 0\r\nSixDoF_DesiredPitch = 0\r\nSixDoF_DesiredRoll = 0\r\nSixDoF_LastPropulsionCount = 0\r\nSixDoF_PropulsionInfos = {}\r\nSixDoF_LastSpinnerCount = 0\r\nSixDoF_SpinnerInfos = {}\r\nSixDoF_UsesHorizontalJets = (JetFractions.Yaw > 0 or JetFractions.Forward > 0 or JetFractions.Right > 0)\r\nSixDoF_UsesVerticalJets = (JetFractions.Altitude > 0 or JetFractions.Pitch > 0 or JetFractions.Roll > 0)\r\nSixDoF_UsesJets = SixDoF_UsesHorizontalJets or SixDoF_UsesVerticalJets\r\nSixDoF_UsesSpinners = (SpinnerFractions.Altitude > 0 or SpinnerFractions.Yaw > 0 or SpinnerFractions.Pitch > 0 or SpinnerFractions.Roll > 0 or SpinnerFractions.Forward > 0 or SpinnerFractions.Right > 0)\r\nSixDoF_UsesControls = (ControlFractions.Yaw > 0 or ControlFractions.Pitch > 0 or ControlFractions.Roll > 0 or ControlFractions.Forward > 0)\r\nSixDoF_ControlAltitude = (JetFractions.Altitude > 0 or SpinnerFractions.Altitude > 0)\r\nSixDoF_ControlPitch = (JetFractions.Pitch > 0 or SpinnerFractions.Pitch > 0 or ControlFractions.Pitch > 0)\r\nSixDoF_ControlRoll = (JetFractions.Roll > 0 or SpinnerFractions.Roll > 0 or ControlFractions.Roll > 0)\r\nSixDoF_NeedsRelease = false\r\nSixDoF = {}\r\nfunction SixDoF.SetAltitude(Alt)\r\nSixDoF_DesiredAltitude = Alt\r\nend\r\nfunction SixDoF.SetHeading(Heading)\r\nSixDoF_DesiredHeading = Heading % 360\r\nend\r\nfunction SixDoF.ResetHeading()\r\nSixDoF_DesiredHeading = nil\r\nend\r\nfunction SixDoF.SetPosition(Pos)\r\nSixDoF_DesiredPosition = Vector3(Pos.x, Pos.y, Pos.z)\r\nend\r\nfunction SixDoF.ResetPosition()\r\nSixDoF_DesiredPosition = nil\r\nend\r\nfunction SixDoF.SetThrottle(Throttle)\r\nSixDoF_DesiredThrottle = Clamp(Throttle, -1, 1)\r\nend\r\nfunction SixDoF.GetThrottle()\r\nreturn SixDoF_CurrentThrottle\r\nend\r\nfunction SixDoF.ResetThrottle()\r\nSixDoF_DesiredThrottle = nil\r\nend\r\nfunction SixDoF.SetPitch(Angle)\r\nSixDoF_DesiredPitch = Angle\r\nend\r\nfunction SixDoF.SetRoll(Angle)\r\nSixDoF_DesiredRoll = Angle\r\nend\r\nSixDoF_Eps = .001\r\nfunction SixDoF_Classify(Index, BlockInfo, IsSpinner, Fractions, Infos)\r\nlocal CoMOffset = BlockInfo.LocalPositionRelativeToCom\r\nlocal LocalForwards = IsSpinner and (BlockInfo.LocalRotation * Vector3.up) or BlockInfo.LocalForwards\r\nlocal Info = {\r\nIndex = Index,\r\nUpSign = 0,\r\nYawSign = 0,\r\nPitchSign = 0,\r\nRollSign = 0,\r\nForwardSign = 0,\r\nRightSign = 0,\r\nIsVertical = false,\r\n}\r\nlocal UpSign = Sign(LocalForwards.y, 0, SixDoF_Eps)\r\nif UpSign ~= 0 then\r\nInfo.UpSign = UpSign * Fractions.Altitude\r\nInfo.PitchSign = Sign(CoMOffset.z) * UpSign * Fractions.Pitch\r\nInfo.RollSign = Sign(CoMOffset.x) * UpSign * Fractions.Roll\r\nInfo.IsVertical = true\r\nelse\r\nlocal ForwardSign = Sign(LocalForwards.z, 0, SixDoF_Eps)\r\nlocal RightSign = Sign(LocalForwards.x, 0, SixDoF_Eps)\r\nInfo.YawSign = RightSign * Sign(CoMOffset.z) * Fractions.Yaw\r\nInfo.ForwardSign = ForwardSign * Fractions.Forward\r\nInfo.RightSign = RightSign * Fractions.Right\r\nend\r\nif Info.UpSign ~= 0 or Info.PitchSign ~= 0 or Info.RollSign ~= 0 or Info.YawSign ~= 0 or Info.ForwardSign ~= 0 or Info.RightSign ~= 0 then\r\ntable.insert(Infos, Info)\r\nend\r\nend\r\nfunction SixDoF_ClassifyJets(I)\r\nlocal PropulsionCount = I:Component_GetCount(PROPULSION)\r\nif PropulsionCount ~= SixDoF_LastPropulsionCount then\r\nSixDoF_LastPropulsionCount = PropulsionCount\r\nSixDoF_PropulsionInfos = {}\r\nfor i = 0,PropulsionCount-1 do\r\nlocal BlockInfo = I:Component_GetBlockInfo(PROPULSION, i)\r\nSixDoF_Classify(i, BlockInfo, false, JetFractions, SixDoF_PropulsionInfos)\r\nend\r\nend\r\nend\r\nfunction SixDoF_ClassifySpinners(I)\r\nlocal SpinnerCount = I:GetDedibladeCount()\r\nif SpinnerCount ~= SixDoF_LastSpinnerCount then\r\nSixDoF_LastSpinnerCount = SpinnerCount\r\nSixDoF_SpinnerInfos = {}\r\nfor i = 0,SpinnerCount-1 do\r\nlocal BlockInfo = I:GetDedibladeInfo(i)\r\nSixDoF_Classify(i, BlockInfo, true, SpinnerFractions, SixDoF_SpinnerInfos)\r\nend\r\nif DediBladesAlwaysUp then\r\nfor _,Info in pairs(SixDoF_SpinnerInfos) do\r\nlocal UpSign = Info.UpSign\r\nif UpSign < 0 then\r\nInfo.UpSign = -UpSign\r\nInfo.PitchSign = -Info.PitchSign\r\nInfo.RollSign = -Info.RollSign\r\nend\r\nend\r\nend\r\nend\r\nend\r\nSixDoF_RequestControl = MakeRequestControl(1/30)\r\nfunction SixDoF.Update(I)\r\nlocal AltitudeCV = 0\r\nif SixDoF_ControlAltitude then\r\nlocal AltitudeDelta = SixDoF_DesiredAltitude - C:Altitude()\r\nif not DediBladesAlwaysUp then\r\nAltitudeDelta = AltitudeDelta * C:UpVector().y\r\nend\r\nAltitudeCV = SixDoF_AltitudePID:Control(AltitudeDelta)\r\nend\r\nlocal YawCV = SixDoF_DesiredHeading and SixDoF_YawPID:Control(NormalizeBearing(SixDoF_DesiredHeading - C:Yaw())) or 0\r\nlocal PitchCV = SixDoF_ControlPitch and SixDoF_PitchPID:Control(SixDoF_DesiredPitch - C:Pitch()) or 0\r\nlocal RollCV = SixDoF_ControlRoll and SixDoF_RollPID:Control(SixDoF_DesiredRoll - C:Roll()) or 0\r\nlocal ForwardCV,RightCV = 0,0\r\nif SixDoF_DesiredPosition then\r\nlocal Offset = SixDoF_DesiredPosition - C:CoM()\r\nlocal ZProj = Vector3.Dot(Offset, C:ForwardVector())\r\nlocal XProj = Vector3.Dot(Offset, C:RightVector())\r\nForwardCV = SixDoF_ForwardPID:Control(ZProj)\r\nRightCV = SixDoF_RightPID:Control(XProj)\r\nelseif SixDoF_DesiredThrottle then\r\nForwardCV = 30 * SixDoF_DesiredThrottle -- PID is scaled, so scale up\r\nSixDoF_CurrentThrottle = SixDoF_DesiredThrottle\r\nend\r\nlocal PlanarMovement = SixDoF_DesiredHeading or SixDoF_DesiredPosition or SixDoF_DesiredThrottle\r\nif SixDoF_UsesJets then\r\nSixDoF_ClassifyJets(I)\r\nif SixDoF_UsesHorizontalJets and PlanarMovement then\r\nif not YLLThrustHackKey then\r\nfor i = 0,3 do\r\nI:RequestThrustControl(i)\r\nend\r\nelse\r\nI:RequestComplexControllerStimulus(YLLThrustHackKey)\r\nend\r\nend\r\nif SixDoF_UsesVerticalJets then\r\nif not APRThrustHackKey then\r\nI:RequestThrustControl(4)\r\nI:RequestThrustControl(5)\r\nelse\r\nI:RequestComplexControllerStimulus(APRThrustHackKey)\r\nend\r\nend\r\nfor _,Info in pairs(SixDoF_PropulsionInfos) do\r\nif Info.IsVertical or PlanarMovement then\r\nlocal Output = Clamp(AltitudeCV * Info.UpSign + YawCV * Info.YawSign + PitchCV * Info.PitchSign + RollCV * Info.RollSign + ForwardCV * Info.ForwardSign + RightCV * Info.RightSign, 0, 30)\r\nI:Component_SetFloatLogic(PROPULSION, Info.Index, Output / 30)\r\nelse\r\nI:Component_SetFloatLogic(PROPULSION, Info.Index, 1)\r\nend\r\nend\r\nend\r\nif SixDoF_UsesSpinners then\r\nSixDoF_ClassifySpinners(I)\r\nfor _,Info in pairs(SixDoF_SpinnerInfos) do\r\nif Info.IsVertical or PlanarMovement then\r\nlocal Output = Clamp(AltitudeCV * Info.UpSign + YawCV * Info.YawSign + PitchCV * Info.PitchSign + RollCV * Info.RollSign + ForwardCV * Info.ForwardSign + RightCV * Info.RightSign, -30, 30)\r\nI:SetDedibladeContinuousSpeed(Info.Index, Output)\r\nend\r\nend\r\nend\r\nif SixDoF_UsesControls then\r\nSixDoF_RequestControl(I, ControlFractions.Pitch, NOSEUP, NOSEDOWN, PitchCV)\r\nSixDoF_RequestControl(I, ControlFractions.Roll, ROLLLEFT, ROLLRIGHT, RollCV)\r\nif PlanarMovement then\r\nSixDoF_RequestControl(I, ControlFractions.Yaw, YAWRIGHT, YAWLEFT, YawCV * Sign(C:ForwardSpeed(), 1))\r\nSixDoF_RequestControl(I, ControlFractions.Forward, MAINPROPULSION, MAINPROPULSION, ForwardCV)\r\nend\r\nend\r\nif PlanarMovement then\r\nSixDoF_NeedsRelease = true\r\nend\r\nend\r\nfunction SixDoF.Disable(I)\r\nSixDoF_CurrentThrottle = 0\r\nif SixDoF_UsesSpinners then\r\nSixDoF_ClassifySpinners(I)\r\nfor _,Info in pairs(SixDoF_SpinnerInfos) do\r\nI:SetDedibladeContinuousSpeed(Info.Index, 0)\r\nend\r\nend\r\nif SixDoF_UsesControls then\r\nSixDoF_RequestControl(I, ControlFractions.Forward, MAINPROPULSION, MAINPROPULSION, 0)\r\nend\r\nend\r\nfunction SixDoF.Release(I)\r\nif SixDoF_NeedsRelease then\r\nif SixDoF_UsesSpinners then\r\nSixDoF_ClassifySpinners(I)\r\nfor _,Info in pairs(SixDoF_SpinnerInfos) do\r\nif not Info.IsVertical then\r\nI:SetDedibladeContinuousSpeed(Info.Index, 0)\r\nend\r\nend\r\nend\r\nSixDoF_NeedsRelease = false\r\nend\r\nend\r\n\r\nDriveMaintainer = {}\r\nfunction DriveMaintainer.new(Direction)\r\nlocal self = {}\r\nif Direction then\r\nself.Direction = Direction\r\nself.LastDriveMaintainerCount = 0\r\nself.DriveMaintainerIndex = nil\r\nself.LastReading = 0\r\nself.Resolve = DriveMaintainer.Resolve\r\nself.GetThrottle = DriveMaintainer.GetThrottle\r\nself.SetThrottle = DriveMaintainer.SetThrottle\r\nelse\r\nself.GetThrottle = function (_, _) return 0 end\r\nself.SetThrottle = function (_, _, _) end\r\nend\r\nreturn self\r\nend\r\nfunction DriveMaintainer:Resolve(I)\r\nlocal DriveMaintainerCount = I:Component_GetCount(DRIVEMAINTAINER)\r\nif DriveMaintainerCount ~= self.LastDriveMaintainerCount then\r\nself.DriveMaintainerIndex = nil\r\nself.LastDriveMaintainerCount = DriveMaintainerCount\r\nend\r\nlocal DriveMaintainerIndex = self.DriveMaintainerIndex\r\nif not DriveMaintainerIndex then\r\nlocal Direction = self.Direction\r\nfor i = 0,DriveMaintainerCount-1 do\r\nlocal BlockInfo = I:Component_GetBlockInfo(DRIVEMAINTAINER, i)\r\nif Vector3.Dot(BlockInfo.LocalForwards, Direction) > 0.001 then\r\nDriveMaintainerIndex = i\r\nself.DriveMaintainerIndex = DriveMaintainerIndex\r\nbreak\r\nend\r\nend\r\nend\r\nreturn DriveMaintainerIndex\r\nend\r\nfunction DriveMaintainer:GetThrottle(I)\r\nlocal DriveMaintainerIndex = self:Resolve(I)\r\nif DriveMaintainerIndex then\r\nself.LastReading = I:Component_GetFloatLogic(DRIVEMAINTAINER, DriveMaintainerIndex)\r\nend\r\nreturn self.LastReading\r\nend\r\nfunction DriveMaintainer:SetThrottle(I, Throttle)\r\nlocal DriveMaintainerIndex = self:Resolve(I)\r\nif DriveMaintainerIndex then\r\nI:Component_SetFloatLogic(DRIVEMAINTAINER, DriveMaintainerIndex, Throttle)\r\nend\r\nend\r\n\r\nPerlinOffset = 0\r\nfunction Evasion_FirstRun(_)\r\nPerlinOffset = 1000.0 * math.random()\r\nend\r\nAddFirstRun(Evasion_FirstRun)\r\nfunction CalculateEvasion(Evasion)\r\nif Evasion then\r\nreturn Evasion[1] * (2.0 * Mathf.PerlinNoise(Evasion[2] * C:Now(), PerlinOffset) - 1.0)\r\nelse\r\nreturn 0\r\nend\r\nend\r\n\r\nTerrainCheckPoints = {}\r\nCurrentMaxVerticalSpeed = 1\r\nfunction TerrainCheck_FirstRun(I)\r\nlocal MaxDim = I:GetConstructMaxDimensions()\r\nlocal MinDim = I:GetConstructMinDimensions()\r\nlocal Dimensions = MaxDim - MinDim\r\nlocal HalfDimensions = Dimensions / 2\r\ntable.insert(TerrainCheckPoints, 0)\r\ntable.insert(TerrainCheckPoints, -HalfDimensions.x)\r\ntable.insert(TerrainCheckPoints, HalfDimensions.x)\r\nif TerrainCheckSubdivisions > 0 then\r\nlocal Delta = HalfDimensions.x / (TerrainCheckSubdivisions+1)\r\nfor i=1,TerrainCheckSubdivisions do\r\nlocal x = i * Delta\r\ntable.insert(TerrainCheckPoints, -x)\r\ntable.insert(TerrainCheckPoints, x)\r\nend\r\nend\r\nif not TerrainCheckResolution then\r\nTerrainCheckResolution = HalfDimensions.z\r\nend\r\nif TerrainCheckMaxVerticalSpeed then\r\nCurrentMaxVerticalSpeed = TerrainCheckMaxVerticalSpeed\r\nend\r\nend\r\nAddFirstRun(TerrainCheck_FirstRun)\r\nfunction GetTerrainHeight(I, Velocity, MinAltitude, MaxAltitude)\r\nlocal Height = MinAltitude\r\nlocal Speed = Velocity.magnitude\r\nlocal Direction = Velocity / Speed\r\nlocal Perp = Vector3.Cross(Direction, Vector3.up)\r\nlocal LookAheadTime\r\nif TerrainCheckLookAheadTime then\r\nLookAheadTime = TerrainCheckLookAheadTime\r\nelse\r\nif not TerrainCheckMaxVerticalSpeed and Velocity.y > CurrentMaxVerticalSpeed then\r\nCurrentMaxVerticalSpeed = Velocity.y\r\nend\r\nlocal RemainingAltitude = math.max(0, MaxAltitude - C:Altitude())\r\nLookAheadTime = math.max(1, TerrainCheckBufferFactor * RemainingAltitude / CurrentMaxVerticalSpeed)\r\nend\r\nlocal MaxDistance = Speed * LookAheadTime\r\nlocal Distances = {}\r\nfor d = 0,MaxDistance-1,TerrainCheckResolution do\r\ntable.insert(Distances, C:CoM() + Direction * d)\r\nend\r\ntable.insert(Distances, C:CoM() + Direction * MaxDistance)\r\nfor _,Offset in pairs(TerrainCheckPoints) do\r\nlocal Side = Perp * Offset\r\nfor _,Distance in ipairs(Distances) do\r\nlocal TestPoint = Distance + Side\r\nHeight = math.max(Height, I:GetTerrainAltitudeForPosition(TestPoint))\r\nend\r\nend\r\nreturn Height\r\nend\r\n\r\nManualDepthController = DriveMaintainer.new(ManualDepthDriveMaintainerFacing)\r\nDepthControl_Desired = 0\r\nDepthControl_Offset = 0\r\nDepthControl_Min = 0\r\nDepthControl_Max = 0\r\nDepthControl_LastDodge = nil\r\nfunction Depth_Control(I)\r\nDepthControl_Offset = 0\r\nDepthControl_Min = -HardMaxDepth\r\nDepthControl_Max = -HardMinDepth\r\nlocal DesiredDepth,Absolute\r\nif ManualDepthDriveMaintainerFacing and ManualDepthWhen[I.AIMode] then\r\nlocal ManualDesiredDepth = ManualDepthController:GetThrottle(I)\r\nif ManualDesiredDepth > 0 then\r\nDesiredDepth,Absolute = (500 - ManualDesiredDepth*500),false\r\nelse\r\nDesiredDepth,Absolute = -ManualDesiredDepth*500,true\r\nend\r\nif ManualEvasion and C:FirstTarget() then\r\nDepthControl_Offset = CalculateEvasion(DepthEvasion)\r\nend\r\nelse\r\nif C:FirstTarget() then\r\nDesiredDepth,Absolute = DesiredDepthCombat.Depth,DesiredDepthCombat.Absolute\r\nDepthControl_Offset = CalculateEvasion(DepthEvasion)\r\nelse\r\nDesiredDepth,Absolute = DesiredDepthIdle.Depth,DesiredDepthIdle.Absolute\r\nend\r\nend\r\nif Absolute then\r\nDesiredDepth = -DesiredDepth\r\nelse\r\nlocal TerrainHeight = GetTerrainHeight(I, C:Velocity(), -500, -TerrainMinDepth)\r\nDepthControl_Min = math.max(DepthControl_Min, TerrainHeight)\r\nDesiredDepth = Clamp(DesiredDepth + TerrainHeight, -TerrainMaxDepth, -TerrainMinDepth)\r\nend\r\nDepthControl_Desired = DesiredDepth\r\nend\r\nfunction Depth_Apply(_, HighPriorityOffset, NoOffset)\r\nlocal NewAltitude\r\nif DepthDodgeMode > 0 and HighPriorityOffset then\r\nif DepthDodgeMode == 2 then\r\nif DepthControl_LastDodge then\r\nif Sign(HighPriorityOffset) == DepthControl_LastDodge[1] then\r\nNewAltitude = C:Altitude() + DepthControl_LastDodge[2] * math.abs(HighPriorityOffset)\r\nelse\r\nDepthControl_LastDodge = nil\r\nend\r\nend\r\nif not DepthControl_LastDodge then\r\nlocal Above = math.max(0, DepthControl_Max - C:Altitude())\r\nlocal Below = math.max(0, C:Altitude() - DepthControl_Min)\r\nif Below > Above then\r\nNewAltitude = C:Altitude() - math.abs(HighPriorityOffset)\r\nDepthControl_LastDodge = { Sign(HighPriorityOffset), -1 }\r\nelse\r\nNewAltitude = C:Altitude() + math.abs(HighPriorityOffset)\r\nDepthControl_LastDodge = { Sign(HighPriorityOffset), 1 }\r\nend\r\nend\r\nelseif DepthDodgeMode == 3 then\r\nNewAltitude = C:Altitude() + math.abs(HighPriorityOffset)\r\nelseif DepthDodgeMode == 4 then\r\nNewAltitude = C:Altitude() - math.abs(HighPriorityOffset)\r\nelse\r\nNewAltitude = C:Altitude() + HighPriorityOffset\r\nend\r\nelse\r\nNewAltitude = DepthControl_Desired + (NoOffset and 0 or DepthControl_Offset)\r\nDepthControl_LastDodge = nil\r\nend\r\nV.SetAltitude(Clamp(NewAltitude, DepthControl_Min, DepthControl_Max))\r\nend\r\n\r\nfunction PlanarVector(Origin, Target)\r\nlocal NewTarget = Vector3(Target.x, Origin.y, Target.z)\r\nreturn NewTarget - Origin, NewTarget\r\nend\r\n\r\nfunction GetBearingToPoint(Point)\r\nlocal Offset = Point - C:CoM()\r\nreturn Mathf.DeltaAngle(C:Yaw(), GetVectorAngle(Offset))\r\nend\r\n\r\nfunction Commons:MissileWarnings()\r\nif not self._MissileWarnings then\r\nlocal Mainframe = CommonsWarningConfig.MissileWarningMainframe\r\nlocal Warnings = {}\r\nfor i = 0,self.I:GetNumberOfWarnings(Mainframe)-1 do\r\nlocal Warning = self.I:GetMissileWarning(Mainframe, i)\r\nif Warning.Valid then\r\nlocal Info = {\r\nId = Warning.Id,\r\nMainframeIndex = Mainframe, -- Only 1 mainframe for now...\r\nIndex = i,\r\nPosition = Warning.Position,\r\nVelocity = Warning.Velocity,\r\nRange = Warning.Range,\r\n}\r\ntable.insert(Warnings, Info)\r\nend\r\nend\r\nself._MissileWarnings = Warnings\r\nend\r\nreturn self._MissileWarnings\r\nend\r\n\r\nfunction RaySphereIntersect(Position, Velocity, RadiusSquared)\r\nlocal a = Vector3.Dot(Velocity, Velocity)\r\nlocal b = 2 * Vector3.Dot(Velocity, Position)\r\nlocal c = Vector3.Dot(Position, Position) - RadiusSquared\r\nlocal Solutions = QuadraticSolver(a, b, c)\r\nlocal ImpactTime = nil\r\nif #Solutions == 1 then\r\nlocal t = Solutions[1]\r\nif t > 0 then ImpactTime = t end\r\nelseif #Solutions == 2 then\r\nlocal t1 = Solutions[1]\r\nlocal t2 = Solutions[2]\r\nif t1 > 0 then\r\nImpactTime = t1\r\nelseif t2 > 0 then\r\nImpactTime = t2\r\nend\r\nend\r\nif ImpactTime then\r\nlocal ImpactPoint = Position + Velocity * ImpactTime\r\nreturn ImpactPoint, ImpactTime\r\nelse\r\nreturn nil\r\nend\r\nend\r\n\r\nLastDodgeDirection = nil\r\nLastDodgeProjectile = nil\r\nSqrVehicleRadius = nil\r\nfunction Dodge_FirstRun(I)\r\nif not VehicleRadius then\r\nlocal MaxDim = I:GetConstructMaxDimensions()\r\nlocal MinDim = I:GetConstructMinDimensions()\r\nlocal Dimensions = MaxDim - MinDim\r\nlocal HalfDimensions = Dimensions / 2\r\nVehicleRadius = math.max(HalfDimensions.x, math.max(HalfDimensions.y, HalfDimensions.z))\r\nVehicleRadius = VehicleRadius * VehicleRadiusPadding\r\nend\r\nSqrVehicleRadius = VehicleRadius * VehicleRadius\r\nend\r\nAddFirstRun(Dodge_FirstRun)\r\nfunction CalculateDodge(Projectile)\r\nlocal RelativePosition = Projectile.Position - C:CoM()\r\nlocal RelativeVelocity = Projectile.Velocity - C:Velocity()\r\nif Vector3.Dot(RelativePosition, RelativeVelocity) >= 0 then return nil end\r\nlocal Range,Speed = RelativePosition.magnitude,RelativeVelocity.magnitude\r\nlocal ImpactPoint,ImpactTime\r\nif Range > VehicleRadius then\r\nImpactPoint,ImpactTime = RaySphereIntersect(RelativePosition, RelativeVelocity, SqrVehicleRadius)\r\nif not ImpactPoint then return nil end\r\nImpactTime = ImpactTime + VehicleRadius / Speed\r\nelse\r\nImpactPoint = RelativePosition\r\nImpactTime = Range / Speed\r\nend\r\nImpactPoint = C:ToLocal() * ImpactPoint\r\nreturn { Sign(ImpactPoint.x, 1), Sign(ImpactPoint.y, 1), Sign(ImpactPoint.z, 1) },ImpactTime\r\nend\r\nfunction Dodge()\r\nif DodgingEnabled then\r\nlocal DodgeDirection,Soonest,ProjectileId = nil,math.huge,nil\r\nfor _,Projectile in pairs(C:MissileWarnings()) do\r\nlocal Direction,ImpactTime = CalculateDodge(Projectile)\r\nif Direction and ImpactTime <= DodgeTimeHorizon and ImpactTime < Soonest then\r\nDodgeDirection = Direction\r\nSoonest = ImpactTime\r\nProjectileId = Projectile.Id\r\nend\r\nend\r\nif DodgeDirection then\r\nif (not LastDodgeDirection or LastDodgeProjectile ~= ProjectileId or\r\nDodgeDirection[1] ~= LastDodgeDirection[1] or\r\nDodgeDirection[2] ~= LastDodgeDirection[2] or\r\nDodgeDirection[3] ~= LastDodgeDirection[3]) then\r\nLastDodgeDirection = DodgeDirection\r\nLastDodgeProjectile = ProjectileId\r\nend\r\nreturn Dodge_LastDodge()\r\nelse\r\nLastDodgeDirection = nil\r\nLastDodgeProjectile = nil\r\nend\r\nend\r\nreturn Dodge_NoDodge()\r\nend\r\n\r\nif not DodgePreferFront then\r\nfunction Dodge_LastDodge()\r\nreturn -45*LastDodgeDirection[1] * LastDodgeDirection[3],-LastDodgeDirection[2],true\r\nend\r\nelse\r\nfunction Dodge_LastDodge()\r\nreturn 45*LastDodgeDirection[1],-LastDodgeDirection[2],true\r\nend\r\nend\r\nfunction Dodge_NoDodge()\r\nreturn 0,0,false\r\nend\r\n\r\nfunction Commons:Friendlies()\r\nif not self._Friendlies then\r\nlocal Friendlies = {}\r\nfor findex = 0,self.I:GetFriendlyCount()-1 do\r\nlocal FriendlyInfo = self.I:GetFriendlyInfo(findex)\r\nif FriendlyInfo.Valid then -- Pointless check?\r\ntable.insert(Friendlies, FriendlyInfo)\r\nself._FriendliesById[FriendlyInfo.Id] = FriendlyInfo\r\nend\r\nend\r\nself._Friendlies = Friendlies\r\nend\r\nreturn self._Friendlies\r\nend\r\nfunction Commons:FriendlyById(Id)\r\nlocal FriendlyInfo = self._FriendliesById[Id]\r\nif not FriendlyInfo then\r\nFriendlyInfo = self.I:GetFriendlyInfoById(Id)\r\nself._FriendliesById[Id] = FriendlyInfo\r\nend\r\nreturn FriendlyInfo\r\nend\r\n\r\nAvoidance_MidPoint = nil\r\nAvoidance_VerticalClearance = 0\r\nAvoidance_CheckPoints = {}\r\nAvoidance_PreviousTAvoid = Vector3.right\r\nfunction Avoidance_FirstRun(I)\r\nlocal MaxDim = I:GetConstructMaxDimensions()\r\nlocal MinDim = I:GetConstructMinDimensions()\r\nlocal Dimensions = MaxDim - MinDim\r\nlocal HalfDimensions = Dimensions / 2\r\nAvoidance_MidPoint = MinDim + HalfDimensions -- Relative to Position and no rotation (local)\r\nAvoidance_VerticalClearance = HalfDimensions.y * ClearanceFactor\r\nlocal SideClearance = HalfDimensions.x * ClearanceFactor\r\ntable.insert(Avoidance_CheckPoints, 0)\r\ntable.insert(Avoidance_CheckPoints, -SideClearance)\r\ntable.insert(Avoidance_CheckPoints, SideClearance)\r\nif TerrainAvoidanceSubdivisions > 0 then\r\nlocal Delta = SideClearance / (TerrainAvoidanceSubdivisions+1)\r\nfor i=1,TerrainAvoidanceSubdivisions do\r\nlocal x = i * Delta\r\ntable.insert(Avoidance_CheckPoints, -x)\r\ntable.insert(Avoidance_CheckPoints, x)\r\nend\r\nend\r\nif not LookAheadResolution then\r\nLookAheadResolution = HalfDimensions.z / 2\r\nend\r\nend\r\nAddFirstRun(Avoidance_FirstRun)\r\nfunction GetTerrainHits(I, Angle, LowerEdge, Speed)\r\nlocal Hits = 0\r\nlocal Rotation = Quaternion.Euler(0, Angle, 0) -- NB Angle is world\r\nlocal MaxDistance = Speed * LookAheadTime\r\nlocal Distances = {}\r\nfor d = 0,MaxDistance-1,LookAheadResolution do\r\ntable.insert(Distances, d)\r\nend\r\ntable.insert(Distances, MaxDistance)\r\nfor _,Offset in pairs(Avoidance_CheckPoints) do\r\nlocal Blocked = false\r\nfor _,Distance in ipairs(Distances) do\r\nif Blocked then\r\nHits = Hits + 1\r\nelse\r\nlocal TestPoint = C:CoM() + Rotation * Vector3(Offset, 0, Distance)\r\nif I:GetTerrainAltitudeForPosition(TestPoint) >= LowerEdge then\r\nHits = Hits + 1\r\nBlocked = true\r\nend\r\nend\r\nend\r\nend\r\nreturn Hits\r\nend\r\nfunction FriendlyAvoidanceVector(UpperEdge, LowerEdge, Velocity)\r\nlocal FCount,FAvoid = 0,Vector3.zero\r\nif FriendlyAvoidanceWeight > 0 then\r\nlocal AvoidanceTime,MinDistance\r\nif C:FirstTarget() then\r\nAvoidanceTime,MinDistance = unpack(FriendlyAvoidanceCombat)\r\nelse\r\nAvoidanceTime,MinDistance = unpack(FriendlyAvoidanceIdle)\r\nend\r\nfor _,Friend in pairs(C:Friendlies()) do\r\nif (Friend.AxisAlignedBoundingBoxMinimum.y <= UpperEdge and\r\nFriend.AxisAlignedBoundingBoxMaximum.y >= LowerEdge) then\r\nlocal Offset,_ = PlanarVector(C:CoM(), Friend.CenterOfMass)\r\nlocal Distance = Offset.magnitude\r\nif Distance < FriendlyCheckMaxDistance and Distance > FriendlyCheckMinDistance then\r\nlocal Direction = Offset / Distance -- aka Offset.normalized\r\nlocal Collision = false\r\nif Distance < MinDistance then\r\nCollision = true\r\nelse\r\nlocal RelativeVelocity = Velocity - Friend.Velocity\r\nlocal RelativeSpeed = Vector3.Dot(RelativeVelocity, Direction)\r\nif RelativeSpeed > 0.0 and Distance / RelativeSpeed < AvoidanceTime then\r\nCollision = true\r\nend\r\nend\r\nif Collision then\r\nFCount = FCount + 1\r\nFAvoid = FAvoid - Direction\r\nend\r\nend\r\nend\r\nend\r\nif FCount > 0 then\r\nlocal VNorm = Velocity.normalized\r\nlocal Rej = FAvoid - VNorm * Vector3.Dot(FAvoid, VNorm)\r\nif Rej.sqrMagnitude == 0 then\r\nFAvoid = Vector3.Cross(Vector3.up, VNorm) * FriendlyAvoidanceWeight\r\nelse\r\nFAvoid = Rej.normalized * FriendlyAvoidanceWeight\r\nend\r\nend\r\nend\r\nreturn FCount, FAvoid\r\nend\r\nfunction TerrainAvoidanceVector(I, LowerEdge, Velocity, Speed)\r\nlocal TCount,TAvoid = 0,Vector3.zero\r\nif TerrainAvoidanceWeight > 0 then\r\nlocal VelocityAngle = GetVectorAngle(Velocity)\r\nlocal ForwardHits = GetTerrainHits(I, VelocityAngle, LowerEdge, Speed)\r\nif ForwardHits > 0 then\r\nlocal LeftHits = GetTerrainHits(I, VelocityAngle-LookAheadAngle, LowerEdge, Speed)\r\nlocal RightHits = GetTerrainHits(I, VelocityAngle+LookAheadAngle, LowerEdge, Speed)\r\nif LeftHits < RightHits then\r\nTAvoid = Vector3.left\r\nelseif RightHits < LeftHits then\r\nTAvoid = Vector3.right\r\nelse\r\nTAvoid = Avoidance_PreviousTAvoid\r\nend\r\nAvoidance_PreviousTAvoid = TAvoid\r\nTCount = ForwardHits + LeftHits + RightHits\r\nTAvoid = Quaternion.Euler(0, VelocityAngle, 0) * TAvoid * TerrainAvoidanceWeight\r\nelse\r\nAvoidance_PreviousTAvoid = Vector3.right\r\nend\r\nend\r\nreturn TCount, TAvoid\r\nend\r\nfunction AvoidanceVectors(I)\r\nlocal PositionY = C:Position().y + Avoidance_MidPoint.y -- Not necessarily Altitude\r\nlocal UpperEdge = PositionY + Avoidance_VerticalClearance\r\nlocal LowerEdge = PositionY - Avoidance_VerticalClearance\r\nlocal Velocity = C:Velocity()\r\nVelocity = Vector3(Velocity.x, 0, Velocity.z)\r\nlocal Speed = Velocity.magnitude\r\nlocal FCount, FAvoid = FriendlyAvoidanceVector(UpperEdge, LowerEdge, Velocity)\r\nlocal TCount, TAvoid = TerrainAvoidanceVector(I, LowerEdge, Velocity, Speed)\r\nif (FCount + TCount) == 0 then\r\nreturn nil\r\nelse\r\nreturn FAvoid + TAvoid\r\nend\r\nend\r\n\r\nfunction Avoidance(I, Bearing)\r\nlocal Avoid = AvoidanceVectors(I)\r\nif not Avoid then\r\nreturn Bearing\r\nelse\r\nlocal NewTarget = Quaternion.Euler(0, C:Yaw()+Bearing, 0) * Vector3.forward\r\nNewTarget = C:CoM() + NewTarget + Avoid\r\nreturn GetBearingToPoint(NewTarget)\r\nend\r\nend\r\n\r\nMTW_ThrottlePID = PID.new(WaypointMoveConfig.ThrottlePIDConfig, -1, 1)\r\nif not WaypointMoveConfig.MinimumSpeed then WaypointMoveConfig.MinimumSpeed = 0 end\r\nif WaypointMoveConfig.StopOnStationaryWaypoint == nil then WaypointMoveConfig.StopOnStationaryWaypoint = true end\r\nfunction MTW_MatchSpeed(Velocity, TargetVelocity, Faster)\r\nlocal Speed = Velocity.magnitude\r\nlocal TargetSpeed = TargetVelocity.magnitude\r\nlocal VelocityDirection = Velocity / Speed\r\nlocal TargetVelocityDirection = TargetVelocity / TargetSpeed\r\nlocal CosAngle = Vector3.Dot(TargetVelocityDirection, VelocityDirection)\r\nlocal MinimumSpeed = WaypointMoveConfig.MinimumSpeed\r\nif CosAngle > 0 then\r\nlocal DesiredSpeed = TargetSpeed\r\nDesiredSpeed = DesiredSpeed + Sign(Faster) * WaypointMoveConfig.RelativeApproachSpeed\r\nreturn math.max(MinimumSpeed, DesiredSpeed),Speed\r\nelse\r\nreturn MinimumSpeed,Speed\r\nend\r\nend\r\nfunction MoveToWaypoint(Waypoint, AdjustHeading, WaypointVelocity)\r\nlocal Offset,TargetPosition = PlanarVector(C:CoM(), Waypoint)\r\nlocal Distance = Offset.magnitude\r\nif not WaypointVelocity then\r\nif Distance >= WaypointMoveConfig.MaxDistance then\r\nlocal Bearing = GetBearingToPoint(Waypoint)\r\nAdjustHeading(Bearing)\r\nV.SetThrottle(WaypointMoveConfig.ClosingDrive)\r\nelseif WaypointMoveConfig.StopOnStationaryWaypoint then\r\nif V.GetThrottle() > 0 then V.SetThrottle(0) end\r\nelse\r\nlocal Bearing = GetBearingToPoint(Waypoint)\r\nAdjustHeading(Bearing)\r\nlocal CV = MTW_ThrottlePID:Control(WaypointMoveConfig.MinimumSpeed - C:ForwardSpeed())\r\nlocal Drive = Clamp(V.GetThrottle() + CV, 0, 1)\r\nV.SetThrottle(Drive)\r\nend\r\nelse\r\nlocal Direction = Offset / Distance\r\nlocal Velocity = C:Velocity()\r\nVelocity = Vector3(Velocity.x, 0, Velocity.z)\r\nlocal TargetVelocity = Vector3(WaypointVelocity.x, 0, WaypointVelocity.z)\r\nlocal TargetPoint = QuadraticIntercept(C:CoM(), Vector3.Dot(Velocity, Velocity), TargetPosition, TargetVelocity)\r\nlocal Bearing = GetBearingToPoint(TargetPoint)\r\nAdjustHeading(Bearing)\r\nif Distance >= WaypointMoveConfig.ApproachDistance then\r\nV.SetThrottle(WaypointMoveConfig.ClosingDrive)\r\nelse\r\nlocal Faster = Vector3.Dot(C:ForwardVector(), Direction)\r\nlocal DesiredSpeed,Speed = MTW_MatchSpeed(Velocity, TargetVelocity, Faster)\r\nlocal Error = DesiredSpeed - Speed\r\nlocal CV = MTW_ThrottlePID:Control(Error)\r\nlocal Drive = Clamp(V.GetThrottle() + CV, 0, 1)\r\nV.SetThrottle(Drive)\r\nend\r\nend\r\nend\r\n\r\nAttacking = false\r\nLastAttackTime = nil\r\nDodgeAltitudeOffset = nil -- luacheck: ignore 131\r\nAttackPID = PID.new(AttackPIDConfig, -1, 1)\r\nfunction Evade(Evasion)\r\nif AirRaidEvasion and C:FirstTarget():Elevation(C.I) >= AirRaidAboveElevation then\r\nEvasion = AirRaidEvasion\r\nend\r\nreturn CalculateEvasion(Evasion)\r\nend\r\nfunction AdjustHeadingToTarget(I)\r\nlocal TargetPosition = C:FirstTarget().Position\r\nlocal Distance = PlanarVector(C:CoM(), TargetPosition).magnitude\r\nlocal TargetAngle,Drive,Evasion = EscapeAngle,EscapeDrive,EscapeEvasion\r\nlocal ScaledDrive = false\r\nif AttackRuns then\r\nif not LastAttackTime then\r\nLastAttackTime = C:Now()\r\nend\r\nif Distance > MaxDistance then\r\nTargetAngle = ClosingAngle\r\nDrive = ClosingDrive\r\nEvasion = ClosingEvasion\r\nAttacking = true\r\nLastAttackTime = C:Now()\r\nelse\r\nif Attacking then\r\nTargetAngle = AttackAngle\r\nDrive = AttackDrive\r\nEvasion = AttackEvasion\r\nend\r\nend\r\nif Attacking and Distance <= MinDistance and (LastAttackTime + MinAttackTime) < C:Now() then\r\nAttacking = false\r\nelseif not Attacking and (LastAttackTime + ForceAttackTime) < C:Now() then\r\nAttacking = true\r\nLastAttackTime = C:Now()\r\nend\r\nelse\r\nif Distance > MaxDistance then\r\nTargetAngle = ClosingAngle\r\nDrive = ClosingDrive\r\nEvasion = ClosingEvasion\r\nelseif Distance > MinDistance then\r\nTargetAngle = AttackAngle\r\nDrive = AttackDrive\r\nEvasion = AttackEvasion\r\nif AttackDistance then\r\nlocal Delta = AttackDistance - Distance\r\nif AttackReverse then\r\nDrive = AttackPID:Control(Delta) * -AttackDrive\r\nScaledDrive = true\r\nelse\r\nlocal BroadsideAngle = 90 - AttackAngle\r\nTargetAngle = 90 + AttackPID:Control(Delta) * BroadsideAngle\r\nend\r\nend\r\nend\r\nend\r\nlocal Bearing\r\nlocal DodgeAngle,DodgeY,Dodging = Dodge()\r\nif Dodging then\r\nBearing = DodgeAngle\r\nDodgeAltitudeOffset = DodgeY * VehicleRadius\r\nif DodgeDrive then\r\nDrive = DodgeDrive\r\nelseif ScaledDrive then\r\nDrive = Sign(C:ForwardSpeed(), 1)\r\nend\r\nelse\r\nBearing = GetBearingToPoint(TargetPosition)\r\nBearing = Bearing - (PreferredBroadside or Sign(Bearing, 1)) * TargetAngle\r\nBearing = Bearing + Evade(Evasion, Bearing)\r\nBearing = NormalizeBearing(Bearing)\r\nDodgeAltitudeOffset = nil\r\nend\r\nV.AdjustHeading(Avoidance(I, Bearing))\r\nV.SetThrottle(Drive)\r\nend\r\nfunction NavalAI_Reset()\r\nAttacking = false\r\nLastAttackTime = nil\r\nDodgeAltitudeOffset = nil\r\nend\r\nfunction Control_MoveToWaypoint(I, Waypoint, WaypointVelocity)\r\nMoveToWaypoint(Waypoint, function (Bearing) V.AdjustHeading(Avoidance(I, Bearing)) end, WaypointVelocity)\r\nend\r\nfunction FormationMove(I)\r\nlocal Flagship = I.Fleet.Flagship\r\nif not I.IsFlagship and Flagship.Valid then\r\nControl_MoveToWaypoint(I, Flagship.ReferencePosition + Flagship.Rotation * I.IdealFleetPosition, Flagship.Velocity)\r\nelse\r\nControl_MoveToWaypoint(I, I.Waypoint) -- Waypoint assumed to be stationary\r\nend\r\nend\r\nfunction NavalAI_Update(I)\r\nV.Reset()\r\nlocal AIMode = I.AIMode\r\nif AIMode ~= \"fleetmove\" then\r\nif C:FirstTarget() then\r\nAdjustHeadingToTarget(I)\r\nelseif ReturnToOrigin then\r\nNavalAI_Reset()\r\nFormationMove(I)\r\nelse\r\nNavalAI_Reset()\r\nV.AdjustHeading(Avoidance(I, 0))\r\nend\r\nelse\r\nNavalAI_Reset()\r\nFormationMove(I)\r\nend\r\nend\r\n\r\nShieldManager = Periodic.new(ShieldManager_UpdateRate, ShieldManager_Control, 3)\r\nMissileMain = Periodic.new(Missile_UpdateRate, MissileMain_Update, 2)\r\nDepthControl = Periodic.new(DepthControl_UpdateRate, Depth_Control, 1)\r\nNavalAI = Periodic.new(AI_UpdateRate, NavalAI_Update)\r\nSelectHeadingImpl(SixDoF, RollTurnControl)\r\nSelectRollImpl(SubControl, RollTurnControl)\r\nSelectHeadingImpl(RollTurn)\r\nSelectThrottleImpl(SixDoF)\r\nSelectAltitudeImpl(SubControl)\r\nSelectPitchImpl(SubControl)\r\nSelectRollImpl(RollTurn)\r\nfunction Update(I) -- luacheck: ignore 131\r\nC = Commons.new(I)\r\nFirstRun(I)\r\nif not C:IsDocked() then\r\nDepthControl:Tick(I)\r\nif ActivateWhen[I.AIMode] then\r\nNavalAI:Tick(I)\r\nI:TellAiThatWeAreTakingControl()\r\nelse\r\nNavalAI_Reset()\r\nV.Reset()\r\nSixDoF.Release(I)\r\nend\r\nDepth_Apply(I, DodgeAltitudeOffset)\r\nSubControl.Update(I)\r\nSixDoF.Update(I)\r\nMissileMain:Tick(I)\r\nelse\r\nNavalAI_Reset()\r\nSixDoF.Disable(I)\r\nend\r\nShieldManager:Tick(I)\r\nend"],"BlockStringDataIds":[3],"GameVersion":"v2.16","PersistentSubObjectIndex":1,"BlockCount":4006}}