gpu-lexer 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shu Ding
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # gpu-lexer
2
+
3
+ A tiny experimental language-agnostic WebGPU syntax lexer. One learned model parses source from any language into display-oriented spans; there are no language arguments or grammar packs.
4
+
5
+ ```sh
6
+ pnpm add gpu-lexer
7
+ ```
8
+
9
+ ```js
10
+ import { parse } from "gpu-lexer";
11
+
12
+ const spans = await parse("const answer = 42");
13
+ // [{ type: "keyword", start: 0, end: 5 }, ...]
14
+
15
+ for (const span of spans) {
16
+ console.log(span.type, source.slice(span.start, span.end));
17
+ }
18
+ ```
19
+
20
+ `parse(code: string): Promise<SyntaxSpan[]>` is the package's only export. `gpu-lexer` uses the tree model, which also powers the website. Import from `gpu-lexer/lite` to use the lite model. Each entry bundles only its own runtime, weights, and shader. `start` and `end` are half-open UTF-16 code-unit offsets, and the spans cover the source in order.
21
+
22
+ WebGPU and a secure browser context are required. The first call acquires a device, compiles pipelines, uploads the model, and runs inference; later calls reuse those resources.
23
+
24
+ The output is probabilistic and trained for agreement with normalized Shiki labels. It is not a parser, compiler, linter, or security tool. See the [project repository](https://github.com/shuding/gpu-lexer) for architecture, benchmarks, and model limitations.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var x=[23968,.0541586299,24e3,.0057660572,24384,.0557118462,24768,.065317723,25152,.0312961244,25536,.0308361823,25920,.0195166853,26568,.0420909774,26952,.0418975276,27336,.047354825,27720,.0373829026,28104,.0413190626,28488,.0187972976,28872,.0458890546,29256,.0265615102,29640,.0297521603,35400,.082732847,35472,.0079024468,35856,.0667879658,35865,.00678773369,36889,.087580004,36905,.0380158386,37065,.0554504625,37129,.0270735256,38153,.028419793,38185,.0038484008,39209,.0662292511,39241,.111957104,41289,.044876814,41321,.0171665492],EA="ABCDBCFIACDDECCBABCCBAABEACBECFFCADCEEECBIHHBCBCFBHAEHFEABBCACDECACABAKFIEOIFAIFGGACBACFDDKDHCABFEAACEDCDAHBDAACEAFEBCAGDGDCEDCICACCAAAABGBAAACAGDBBDDACEADCBBAGAFFABAACAABAGECACBCEBCAAIIEDAABEGBBAACCEFABDCGCCDBECCAAHEIBCAFAAIMDBAACEHEBFBGAADBCBKDCJEMHIGDBDEQJAEDDEHGABDECBCDAEIHCHGSFGKBAHYOjSGGBGFEdRRCLCaHABUdAZHQAUHJHEAVMiCRQNUXhmAFEWVcaHRGcPdLaNfCKJCUEFDSDFPGKCBAkFPMeIAWkSGkHICRERCACCBDCAEDADAABBBCACDCADCCACEDBBBCBCDEECECABACCBEAABEDACCABAEABEABDCABCEBDEBDBDCEACBEAACAAEACEDCABBCADCBCAECCADBCCECCECBBAACBBEDCCDDBAEEBEBCBAAAEDAAEABBCEABDBAEBCBEBAACBEACCCCADDABBDBEDCAEAABABDBDCBDEEDBACDBAEACCBACCDCECACBBDBBEBCBBAACBCCCCEABADEECACBACCDBADAABCEDBBDCEDBDABBCBDAADAAEBBECIFBEECOCBBFEAGHDBCHCCHHFHHCCAGABAEBCECIHIEMGDEEDEAEDACABCDIDFCBDACCABABCBCADCDAABCAACEDEDBBBACCBEEBEEBACCEBAACDCBCADDCCCCEDABCAAHIABCDMOEEKICBCEEMBJCFJKRVEMLBGCBBBACACBBDAAEDBECAACBEEAABDAAAECCEDEBEEACCACBBBACAAAACEBAEBBBCDEBACECCBADAACABCABEEABCCABDCECCABCDEEECCCDEBCCCADDCBCBDAACBDBEEEEBAEACDCAACBBCDDADAEABDEAEEABECABDDECAAABACDEDEADADBBBDCADEAAACBDDBCBBBBADABBABCABBCAECCCDCAAEBCCACCBCEACABDCBDCCBDACBDBECABBADCCBBCAAAEAAAEBBAAEDDECBECBCEACAEBBCEDBBDCCCDBBCECDACADCCACBBADAAACEAECCDCABAECCBCAADCAECABECADBCCDCBEBDBDCACCEACCCEADCCDBEBEAEBCAEEDDCECCDAAEAACCEBCBCBEBBCCBBABCDIIKWEDARFaWQKFQOPNFJJPCHSFBRHGENEAABACCBCEBEECCDAEADBABABDBBDBABAACDAEDAADBDACCBCEBEBBCCDBDEDADAACEBBCECABBACBBCBAABBAEBEEDBACBACCACBCBDEDEEADCDEACBCBEDBCEBCDBCAAHAAEGACIFHCGDBADFEEHDEBDBCCABGBDDEOEAEGLHCAGHMADEGEFCCGDIFGJHKQIAMGIFGVKCEDEEHBIKEJBFHFACCCCDEBLACFTDAHEDGBAIJFJHEDLCDONEGdADACIBJAGBGFJFBIFCEEBCCAGAECJBMDGOHAHDIABFMAGECFBHCQBDJCCCMGCEDDKBDODBDFJLMABAFCCEHDAEHAAECDGOUAAEcMQDKAGLMROBIDBEDHCBBFDBFHDBAEAECYAMJCRRFUFLQDDGWGIBISBTfDILECIQJNFBEAFGGNEGCJADARBFBAHQMACBUQDWPTBIDHECIKQRRGCBEGACOBBCCIAGDMCBUAAAPEQBGMHBRDNFBHPOHABHeBKMFBCEeHKLDPCGDBFPIHDEFEAFNIPBECDAGEHFCBABBMSAIGHBHDGAFACGIFBEDEKAJLCLgAABGDEIDGAAACKAJCCJBEYKEMKJFDIAHFADCKBACACDBFEECACACFCECBIAAFAFMJIHEMEbSWCJLnLABJIYNRVITBLBTAXFPEAFCQQVCUKNJbDCELGIIZDIADCBHMTDPKCJGGCZEMQLPXIUEJCAAVNQIDIABCHHNABLKAONCMSBHjAUBCBEHlFGGAKLDGRLRSETBOITAOOFLfMBDBGQIfEMGEDEFQdAZSAbQcITASYFJjHQINLIMNFAAGMNEMNLTGKPBAADDMIBNZHMKDPSBZdOKEHPIKfPZWJHKOMDBIoCHdFGOBAIGRDCMCKLEODPNFMJCAGPHEQNfXICFKDSOTLECFOPMGFEbGILIOUJBMeCTdKBAAIUcXGMCGQTKMLFXFDAKCMKDKFEFEUEAGEADDFMCAKDHDQCDALFFBAOHADDCJFBCGDDGEEBFFHDFCDGAAHGKCAFJAHKPCGDBBABEGHBAAIABBBNIBEQADBDAQBBDDAGAIFLCBCEkBGWAAAJGDJIHLIFCGGKFABAHDIAIAABMBIECABDICEGHBKNAKFVAAECJBAAEJBBBEAOCBHBBAJDHCJJMFDDBOEGGFHCDJHICBAGMXCREHGBCHLJMLCIHIJMFMICBHHGDGFCNFBIGCIBZVCHGDOQBEHGJCQKEEGJASEXUGDDIDDEDFHFKBKCJAAICECAKJDEDEIDQBIAIJFCBLBIGHKCFCGSHIEPENIIFOIVIKAAALHIHFAFEBGJTEIBBMDDMHCBDEBFEAILKPFLHHDBEEKAXOEPJDJMOFCAJAONMPEOFdRPDFLNABGBNMIBHCDOBQKFHAIXTDCMDLCBBDJLKAJBHAEGFVMFWENDFECtAAbBeABILDBAGESPZAEHFBEOODBERIBJFEBOGFLECBIHCVSINYJBCDKLgIMANMiLQFBFJFJITNKADBOCHiHAZIGNBBHDRSGPIQIMGCHDCERHQHMDJNDKIKGLGCBKHBMVDIJCCDGAFDNCCGOGTGFCLCAADHBAAIORCNANEIFEKAJJKDCHLKBKCLHELBLFACNGGGCBWBREKHFBCDKPFQAGOCLKDBLAHEJJJMHBMRCKDDCJEAOBFMCGFDGAGFBDFGDZQIIKKYHWLLIQMJYCWQKMGFSWDZFSBUKbXVDBENAKHHBFIAGARDGCLYKKKARMHDEHMIEAOHICNPHCCJCFDYIAFMOIGHACFEILMEGFAFGGFFCFCDMLDOAOHESEMHFIFEDHFAEAMHQCACDDCBaEHEICDEBACDDGFGELGDKCMAGLJREKAHFFAEGHDFOQNDXHRJMVDTNRMFTHDFBJGCHBHDBQFGRHFDEFFACBGILDECMjQOFFQNEJDaJTNFQGJKLEbIAZLMAGFBCNBGbFILeQQLBFGVQCEGFQNAQbGIlBPZGIDnqGFWMXIQMIPDBeDSfElUJZAUFLQGUQNIDKPTUROIFTBWODRAVNJUIRJEnaXCBDFHFBGlDfCEADOCEAEHBCAAUCFBDEGGRZKVICKKDMQMPxKEESWEFJCDBNWWMlJSCKMAHBJDYJDGiPEQEFCCQDKFKFMIEIWEHCDEHHBJBCKEEIBJHEKGAKBKBPBEDBFJOKHaGAOBFEABCJEPBEEHFLNJALDBXIUFJCCAEBCAHDEIBBBGFECAGABEECCIAEBEGNBGDBGJAACABDAGCLFAHCFGELRDCCBEACFEBBABAECCFACEBCAEEHEIAADECDHGCACACIGDJAGGDKCBDDFAIHBECCCBAHFADDCGBDBBHAEGDIBAFCCBECAAFECGBENECCBFEGGALBEQFCIFDCBCEAABCKDGDCJAACDGDHMDHGEIHEBEFKAAAIKIACHIICAGDFAEFBIAFCAGDFAEGDANKGKEINDDDDAIFEAACBABJFEKBAAACBCCBCBACIGGECAMCLLIMCACKMADDNAJJDAAEJDBCHFAHMJOWTEREJIGIHKIKBGKDJDKHUGBMAAAAMNEBDCECCECBDCGHDEEHCACGFAABADGABHFKFJADEABFGEGBGDGBGEBGICAKHFBAHHDSLFLFDCECEDGICDEBEHKAEGFGAOCEECICBFCKDBHICDDFPFEDADIDADICFAKCADEAFEBDABABGCKADAKFADEAGAEBBAGKADGEGMYAAGLGJMSIiLWVHELKNEHWDOQIBAAFCCIIACFDCGHACFCBCCAGBDBABEBFDHDBEBCAEAADCBBBBDICFBAECBBBFEGADBEAACCDAECBBFDBBCBJHDEGKCBCEGEIBFBHGHLKFEEAFAGDIALFCGADMFEGBIABIJFFBAABCEGLDEIPBBCFGJCGHBBAGDEFCAAJFDGGEADACGBBAFCFABIAFAICGHEMLDQHDDZMQJKAIEaAUFAMMFKDABKIFEOCJCUDKAEJHECGFCQPBCFHPFEAJINOEWAHJBBWTKSPEEOWEIOERACGCGGHAAAEdPDGEHILHJOWEFACEJAVFQMBALiEOFPFABPBKDWJBLFDACEOAHKIFKFAABHIGMAEMKECGMEBDBJNDNJPDHDXADJNTOCKABDRGAKDJFEBpEAJCEGHDKCEDGFCCSFgDGIAAFaPCIACBDDDEDBBCCCCBCBABBBCDAABDCAEDDCBABACAAEDDDEBCCABEABCBAACCCBBCCEBACEAEBCCCCDBECADECEAAACCBECCBDCBCBCCBEBBBBCBACBEAECDEEACBAAAABEDACEDECABECCCCBEBDAACADDCBACBCAEBCDACCBCACCAADACCCDCAADBABEBCEAEEACCECDADAAEAEEDDBAAACBEAAEAADAEEDAACACAAEABCBDADBDABBCDEBBCCDACABAADAECCDACDECDAACBDDDEBAACCBCBBAABEBBEABCEDDCBDDBACDBBBCBBBACKACBKGIBBAEDCCHBAAHGGCHARDDBFDCAABADABMBEAOEAAIBAAADABCDDDMDDBACBAAACCAAABDEABEAEBBACCCDBBBCADCAABDCAADCDACCEBCBCCADCBCDCBCCCDCEBAABCDEEBAACACDECABDDCBACDAAADAABABCACACDEEDEECCCADCACCCCDCACBCDBEAEBCABACACACBCCBCCCDBADEBDACCEBDCDEBDDCEECCABEBBBAECECAAEAADDEBECECCCCCCBABBCCBDBCCBDECBDBCDDABCEADDAEBECAEDCCCBCBAABCCEEADCCEDCACACCCAAACEABAABBCCEECACBAACBEABCCAECCABACBDBBBAEAEBEABDBACBCBCBBCECDCCCBBCCBBCCAAADCCABBAAAACEEEECBBADADCBEACBACACCAEBABACABEBCABACDBBDEEBDCBBCEECDABAEBCABAAABBEBBBABCBACCBAADAABCCADECACCCCCBDDCBBCECEEAAECBCACADCCBBBEEACCCDAEADBCBACBCCCBCADBADABDCAEBECAIMGWGHAPLYQOKFOIRPDJLTBHSJHJLKALCADDDDABBABBBBAEDDBCABCBDDCECDBADEDADACDBCDAABCBBDBCDEBDAEBBDECBCCABCCABEABACEEEAEEBADEDCAAEEDCBADCBABBBCCEDACBEBCDACCCADDBBDCCDACBECCKAEIHFCIBAABFEIBDDAFEADBDCDHDKMGCKGHABAEAGEAGAIAGKKDKBIDDISIAQIIJIROCCBBGFEIGGJCAFFABIGCAIDPAAHLFFHGJCHEEFBJDEBHCHOJGCdDDACQBJACBIBDLACDAIBCDBDKCCCPDKBIQDAFBKAHFKAEGBHDBASJCFAGCOGCGHFIBDOFFFAFJIDBDFGBCFDADHECBBDIOUABBaMYHMGELIVMAECAEBHIBEFFDFDBDFEBCAYEIHGPTJQDNQAFCWGKCGQHVfFIJEDCQHLDFAAHGCPGICJBDBPBFDGFUQDDCUUFYPVDODFGCKKOTNGEGAIAAOBDCCMGKJICDUABCNCOFBQNERAFDDDPIBBAFgDIKHEDGcJKHBNCMADDPKHBEACBBHGLFIDEFACFFDAAFDMOBIGHCFDGIFEAGGBCKCCOBNLCLcEGCCFEICACCGEMDHDBNECcKEOKJCBCDBBEBCKDCMCDAAACGDBDBBFEBBAECBFDHMIGLAIGJFADDRLAEABFHQKEQEAAbEIBEEGIIFAJDAABBFBKBHFACIACDIECJIMKCCECMCFJFCCEEHCEADDCRGAIIOACBGGCBGCCIDEHISGOAHCJHECJBCGDLBODPAAECBEEHRLBCBFIDGGHAHAFSGFBKCMMFFFQDBBOECFOEEECCHFNFHGHDCEABCMCNDKEBHABCAJAAGBIEBJDARCFBMHHMEDWRALBDFJODFDFBECIGRNBBFBFHQEBGBCIPQUIBEDDHHHHABCFGLFJMVJDGADAEFGCVKBCKXFJDBCWFGFeGXBZAHKODeZGGGGHPWMKACBABODQKDIJBFIUEBEBCJDDGBBIADDOADANHCFGIBDADEDACEGACGACAFJFBDEBKFADEIIAHFEFMLBBHCCCACKHCGAEAEABPOHCQBFEFFUDAHFCCBGFNFDAEkBAWBBAFMBFCFNKBEKMEJCDDDCEAIBCAOCGEABAFMCEGHCKHAOAZFAGCHFCFCJACBGBKABDAADNFHAJHIDBFEQEBGDHBBJNEABBCMXGNGGaJODGBAJODIIGOEAMEHUAIFFQnhIIINDYNIXHDFKqEQIQGGMMKXKfQBIHXVaGBIEAQCBEJMBaHOUBQIHHHQAQMIKGPDSEGLEEJHPJCIDFHDYDOELFOXFUfGLQKUBBJJICMJDBFKHCCAKFOOACKHLBHMKDMLFECPCOHKBIHDTDWCEQPDNEYPaGbCHBWDJHJFEBGOECLQBADKABWIJNKLLLBALKOIHQQNSORNMDJSEaMOKXNGLJMRSJRIGRHDIcMENKJJDcGGVLAQGDHTNbALAAELIWjDTJLAWOhcgKJEVJTPUVKJYICLDibbEBHMHPOJMDNJPQHRIATEMDCPAOCGLKAHACHBALFXeJOKIGIMHKNAOIVQPKACPKHFBCKKFRCVQVMJKNJDQQASFHTLKCIHIOAGFAUCAAFGHKCIICJOFFAIGBUDINODFMLEDDWuKOURHEIHJcAHDCHDEKIDLTDJHOCEKAQDFYRPQAgETMYMDYMGOFEFOeGEFSYHaOTRHRTTUfLQBgBDbVGIBjMTISFfAcURDLAILTXYEBYNPAIQBUPWKFIKLLUNNQDKDIUoCJFdJBUEDIIWFAEGSFWGPJSAFAJEKJODGBALWDLOKIAMFEJQOBgQFOBJXMNAOAQDFKGROSZCLOGIFAVCBIGPFIHVJDERHkjIJPVGLBDFIIGJKYFJINSPcLFWHGFLPKEWBKKXAUGODGILDcIEFMOEJHWQMILGJYCLYWGFAATKQKFKEEAGBCMCBJDMHBJDCCbOROMIONKIOATKADACDNGWHPGNDGPGNBOaFIAVWiPENGVCHDAiBAHCbEGdWBjDJAAJUIKKGWOPGBOTPQPMKLTFWMBVCdRDYETLKhaZAFDHHFAIlFfEEBCEDIACBECDBYAJFFCIGRfKVICMIHIWKNrKCCYSGAFCJHJaWInNOGKMAJADDeJBBiVKOEBDGQAODMFGGECQINLDMAJOBACFANFCQADEBQRCEAfJEVKGLMEDUEBOCBEBABDAPCCGLFPRFCJAEZGQMBHFEJBQFAEAELAKDDBGEAEJGDNPIBEDFFIHDCECLPDAIDQBEEKDBBACGABMKAJCCCCCDLDCAAHJIFCACIMFHEFCDCBFICCFCADCACFAAAADBACBABAAAAEAIDDGBAABCACBFBACAFADGBAABACADDCDEABGCBCDCIADDGABFFCGCMGBBFMJCCKCHCOQMGFMGLCEAIAAHBHBBDCEFECCCFGHGETCGDJFBAFGCBAEEBAFADCGMDBBEABBEACDGHADKITHHOBEVSCFGGEAAAEIAEOCKBTEDCAFDDCGOBIFJKKTLHEQBNNMMLUACNVGwFDNDKHTCADBBEHJNCIHMIGEAEEBDKCDAAFECCFRAFBEIHGJDDAABBECFCCDMCHPABEADFABEFDAJDDFBCHBCFGBBBFBEDFBGDLCBDCBABAECBBEIBEEACBCBBEACDBLBDDBNBBECBDCBEFGBDEAEFFFCAGBGMDGCADDFFCBGCDCCDCAIAGCDEAAAHEAEAXACEACEVOAGAJJFGKKBWQGKKGEGNDKNCEDNJXCEBDCBCAEBCBAADABIAFBAADAICDIAEHBDDDBDBBABCDDCDABIBDABCCCGCHCACABFCBFEABEBHBFDDCAKCACAADFCECDGCADOKHAEAAEMDTCFCKLFfGCOIGBKKDJJHPBKIFDGCAADAEACEAELCIUIBSDIIXECJDAAFCDECDCHHGDBGGCMBFEDQQLHHEGIEIICFBMOEEABDFHDAEAIBHCDEFDCCPGADDANDCDACGECFCHCBCGGACGDCIFAGHEBGBDHABTFWHGCNcNaNFOLKBHCFMGHOJDMWPBCLBDMSGHEAIFFXLKOAENiBOFNAFDVBIDSFBLFABEGUBFQEDCCCCAJMGECIMKBDCKDAJAFJDRJNBLCRFJLVNOBIBFJPMDKBFDIBrCEFDEMHHIAAFCCAESAiAAICCAaNBGBBDDAACCCCAECBBAECDAECEBDBAACAACQPLEEGFABSAGKKFEAKSBKGOIPGAJGMGBMGEFKJHOPIJGNFBCOABCEDJGCDFBCEHAGFDNFSPHHERCACHAEDBGBAICEQDILEFXACFAHBFJBDIDDMAACDAHBAEDXIDQDCFHFEABAFFEOQBAGKALGJANAAEGECAGMGAKKIDEGLJCGBBFGCMDLIDAFBECLRDDAHGIBFBBCOCENDHBGNMEGDEFDGBHHFFMMBGTEDCFBBBBEMAALCKDDEKBEFCEGGIZLFAADACEAMBCFBHHBASEGLCIJMCFOHKCGAOFHQGGAFJGBJGENBAEQIUEGIAHPKBJEPCAMHCEAQBCCOFJDFAKMLLAFAECGIEJEMFAGSVCBAEOLGJKMGJHIAARDBIFDGJIFKEAGGADEHMGJDGFGSBCRLSJAKEDGJHWACVNBEMPEDBFAAHHNCCEcCBCDGNKECCHGLPNGGCPDDMCNBIBKDAEGHMBBQEHIFIGEDLBJIOFBGEEEBCBBMHAFHJFCAEANAKDLMFCGCHPIDICHCJTAAFDEBGFDGIJDCRKGGIICBALEBEHKUKCAONKCKUGCCCIKGMFLDECKQDBFDACACHIEEIBAAJIDGUDSDNJDIEFJKIPCJDGHKMALAGHQGHPOOHILBFEGDHGEDLHFMIAJJFGBDJFDEDFJCNHBEEACRHPAHJOIGHEFFNHMEDGGGHFDBDEBAAHDFBGGEGOHNCCBHEHCJQNDDCRCNSFLIAUEGLLDCHAKJAEIEGFEHKJUIBFCMBICIJBHAMGHNAEEEBBAGBIFHHADHFJJMPDBCECIAEEMFBGFNHECQGAELEGCBBFMECCMHLDUCICJEGGJENGAAIELFYKCBBCBGQEFAFIKFDDBFDCGGFBLALMADABBEFLEGDBFKNHDBFDDDCFIDAIFEXDHAGBKEAMCICAEMJAACJBBIDCBFECAEAXDBCEeCBMELIJHAEQCMJCHDEADIEIGGAFLHAEMDCCKEDGEEESFBHDGCAJLHAEIDGBUAMIEICHEHIAAABLHCAAIDGJGAJEGGLHEHSXGGDAEGGIDJEmKUCIKLADFCHACaDCQFKHKROGGAAGEBDFEMIIBHKFQAAIDGDBJCGGEGICBJJGHBDVBATGOJDIMHHGDKGBDIBAKGAEJMDOADGNACIAUDAANCCCEFHDEHMGHEEUCCAFGJHUEACDEDFEEDACHTKABDCJJLCBDJKFBICDBZEHGJBBBDABHCFBBGMEIABBBCCGKBIIKCJIBEBFECFEDFGDJCCDABBJBBGAIBJOGEACAGGNEEECCABAUOPJHLOFFFKAFQCKDGBDGRBQABBMRGICMCBMBNIBAABEIIBMBBDDFHGBMIIKKHBRGFFCNBPcFMEDAHDDEIECJHAIELJEECKKEBIGIACBBEGOCAJBHABFCBTACCKGLIDHECDAAKDIEGJAKSVDFCDBSHCCACDAPMNJBODCJBBIFMAAAIMFGGCGELABFMKCBBIAPAFRPFDCDCEDWFHTHEHPGNCJBAGGAFFAKDICDBEQHBAOBKADLEAFFFSFFMAFIHDBREIDEAGJCPDDHBDGIADAKGNAEGBEHCBEMCCAKBHAFQAEECFMMMGFDDCJPMRADIFKIBSCGGAWGDDGJJAEIADBAMCFHKAAKFBGEAGDEVGFVBIBHLLFDBKBJACFBEDGEMHAIBEDELNHLIKCMENEAEGEBNAJCBBAFCHJBBDBGFFOHWMFIGdLUIOEELMREAHAAEDEEBICHKASFEEIFELFCBGKALIFCHJECSEAFPSGAHJIBIAEFGBFAGDCFBFVFAJIDCFCYLURBBFOJHKBEL9WDUDFKKFBDTCILYCAKIAGGTCEAGAFCCDEIAAHNOIBFEEEFHIAKGCCKCJNHPAECMVaHAJBBIFVGBHGAFHCJADBDBJEFFKCEDAKDFFHEFAAKABIFAHFJFKIBPDDLBMGLGDGHIFDFBKDICFCCMCVCFHNAINKAECBADIYIBFHFDAAGABOFHGFDJGDDRBCDBGBDKHDJBEJEEGLFOEDLDLLFCBFOMAEBHJJBECQQEAJVCGDNEAUKDONFLHNAFCTJJEBICBODGHHKABRGAOEIKKEFKHLEIHOBEeHGGEPEBCECJFECADAFBLCIDKIDIAGGGCABEBEICACABKDHJBIALHFSBABBLDRFBEAICTMQKECLABAGDCMAJBCBBBFKJSDFMEAFEQSFECBAANJLGBGEICFEFQNOEPDBDIQDMLLAGAAMCLFBMGGKHFHBCHGABFABCHJFGHGHIEKEAFFCECEGQBLMFHHLGGJKENGIDLEAEBKQAHJLDAMIIAHCJEBCEAEABBBIKFGEBDBNNSCJIIFBLBACBIMDOHHDCGANMODHHNDDGBBGGBDIFFXAEJCKABHFHAAFFBBCDCDBFIBFEFDFEIMBAILJFICBKGKFCRGFINFMPJNNIMACCEMBIFHAHBGMIGAWAKKSMJASREDLDEADOFGEEEABFBGCCQDMAHDIBNTCKABGQDCBCTHALCBEDFCBDBBAHCWCQAFJCEBLFDBHCEDQENDUIAEGLAHFUBGAEDJCBBIJDKHFADLLGMDGEEFEACACGIFABPNFYLEERBIFDCASDGCGCCKEGADKEFECDIJGDVAIAEIJRDGCDCQHEBFDGBFEEDGALCDOILABJHMCQBJIADCEJLDBDCBFARCDBILHRBALQDAANFCGHKHFCAMJHBLMHHSDGMDMCHABKFGDKIGADBHYCAMFDFEGBCASKAGLDHBAHBGMDJIDLFPPAAHGACJBDbTNNBEKNAIBGABLHGEFAKAMAKLICFBAAEEOFJFKAGMDBCCQAAXOBBDRHIBKJCLIDPFEHAGGBLCEDAEJAGAEDFCEBKODAICQJFYABCDQHQRGFHMDFFGGLIIFDDCKAAJKDPMFJABSDGIMKGFJIDBDMACHEIKEPDHHNFHOFBBHBGKUHBEBECNHBEAMBASCACCISLNINAHGCMTEPGGBBKLAFNGNEAIBEQDLCXCEADFFIDJPLHMDEBBIBIBMFALANDBQQCESOMEFIFTAFHABAJAHKADKMBDFCGJFBEAILMKFDNKGCCGEIBEJAHEOEGDKGNCBMLTMJAEDSEFHAKCBFCBQBJNISCHAEALODJAOCHDFCIPBCFCGGJHAHICKFDUHDAIAKVFCDECLCBLBKDIGODAPDIBMDDCOHBDGBDMIKGGKACAGABAFCPCLAGCICJAFAIIKGFCCGHPCBEGFCFEMBBCqBECLDEIFIBCMGFAGAICJGCLDIAIIBBIDPADEFACADGHKIDFEBFNKGXCBDMALJUcSWEIHPKIBLICYLFNOCAPCCKNUFNIBAFLNEGGEACQFCEMGBFPACFGJIKGHMGIFDCPAAEACTDEEEGJJGDFOEAHJMLFCEJBBCDRHDLGULHBAECBOKDEFBEHHBBEIMEGAGAKKABAMBDMHPGCCGVKFJEHEHMPDBEIBMDICEDKBJDCDKIACFTGFFABKBHGGLDCFLRENRFCHEKHBAEHGBHEIBFLDRADAAECIDFBQFCCCFIACGEDDGDHAABFQMCNDJBKHKEGAEDCGGUCCKCAKENAIDKCBJGAHOEKCFGDFJAFEDGCKBDFMCASBADCBFJADADEBEHIQAIDNGEOBBBCBMAMAAGBEKBFBACGFJGCIFBFBGAKAJKBCITRAGHPQFFCCBGKFKDBACBOIEQINBFOCKDTCCDIFKGABBJMLFBQAGFGIRGAGDQFFJFEMDEEEASGAFCEVPLCCQFTKHHBDQTDFBMQKMJRJEFDJIHGADEEGAMAEBEDFBCGJIEALLAFEEICHCGCGIAEEBMBKQFJEIQGDBACEMRLCWILFBEKIDHPaDJDJGCBBNMCDBINDADHTFAIOIGAGTdCOJGNTKLLGLGAPJRBCLTGABHDHDDKJGAMGEHNIFBKEIQFMCFFCMEGGJDEILDAGCEJACGCFHIDHDAAABJAGEIELCRGIFBIALHIAHFBAJBICEKFHNDINJBJCONBHBGOBDKAIFEFHCANBLOGECMIMEBAHGGJGMDBEGRAeDNAAAADFMFAMJCHOBKACBTGFGAFBHEBBGCPCLGIEBDBGIBICFCCUJLGGIDGASDEKOFGDGQBGEIILCCHGKGBMGAFMNFQTMFEJJDCMBDCECFCDBBBEELCEHFPDQLCHCNCACFGAHCIBAMEMQBGJGBNCGDADADHDFIBFKBAACBDBCEBRMAQDDDHHEAEEFFAQWBBGKDJBNCJAAGKGAIKOIDKGGDAELJGEBBBGDKHHGADBDIAJPHDBJBIAHCBAMAAHAHACDEECBEDDICFDAHMKAETCHEBBDCICMCAJBOFBDIECFDIGCGVHBBCFACCIIDACHBDJBMCKNDMJOCBMFIECEGDCOCCADJGBHEGLABGSIUGEADFNIDJELIAOBBICUDAAQJHDFBEIJDBAAKKIKGFCKNEEUREBFEMJKHQKENHIAGNDFMDDENCLMIBEMFHBLOCNBEDCOCGPPSLAKEJIFFQCCTLACMNDDBJCEJJHICAUCIAHERGEDMHILJRAKEHBCKEFHKBECCECJGBEOGHOFBEBDFCFKIFAGACDDDBAIHBJFLDACAFLCEAJKHCEBDTCBEEFKHTIEHAGAGFDCGNJCHGIGEGEABLICIBIWICAQLGGKSGAAAIQKEHTFGAKMHDFHBIBEFKOAIDDALGACSBMHHFFIAFLMGJAHFGFGICHHKJMIBPIMLGJFDBGFFECFNFAKGFJJFEFFNADAEHJIHLDKFACNFRGFDKAGBCDDJDGGFCIGLHDAFMCDHJABAGKEMQDFCABHKHBHSJFBARBLMDNGBSCEJJFGHAQJCIGECDIJENWEBABGBOIIPFCBQGFTEGCGDICCCGJDHBHFJFFIPAACHCKDGEMFBODJJGEWGBCHEDECALIECAQHRCWEKEBAGEFGNCEHCAJDWEGDHABEUIFGDIIDHBDHDAECDENANKBFCCEEBNEIBBAGNHCFBAJBFAEDCKDCTDLBIBKGDKAGACBELCAEHDHMFADLGEAGAXFBDIaAGMGJCFNEBKEOHCJBICFKCIIEAJHBCAKDGAGEHEGDISDFABKEFLFJBDCDGCQLCMDIEFAFKBKBJPHDAFEACJGHRCIKJJAHYdIIBAAEGKFJCkMeGMEJAAHGDAAaBEQFGFIPOAACEKIBHBEKEIBBIDKBDQBKHAHAGGIIAEAHPIJCPTCDPAQLDBGBDEDICABEABMCHCBKDMGACJEECHUDAALBHKMDFJKFOCRCKQDBBDBLDWIDIBEHDCCBCGDTAFBFELLNABDDIHBMDBDRADKHDCABDABDNBHAIDGCFAACBKICIKGEHKBICJGAFGBBGDJDGLHFEHBDKGMBLMMGEKCICLEGEDCBBEQMLDJHMBDBMDFMAIFGDAMPCIBCBITCEAKEAOBLIFAEDIIMBMABLHDNIDOKKMSHBRMDHCRBPYDQGJIJAFBICALDCMELJECCIKCFIGADACFGIMBCFCFCADEANEECKGJKFDBGDABIDIEGHAGYXHFCBDKJADCGFBPELHDMABHBBIBMBEDMKDGEAEGLCBIKIECDKGPDFNNDJEBAAHODCXHCAHKLEFCCEGCFHDKDEEFBEQFAFMBIBDJKECFHSFBGABIJDBNAIJGBCLCTFFFBBICDJDKCPCEEAEHABIMCEAEBJBFQDBBBEOMQMHDAEHFONCBEDOGESBGKCQEDDEJDJCBCAAHIGFJIBDIJEICCEBERGHXFEFLLDJDCKDRBGLDCAEGKJAIDACCJLJJEGAGELCDGIBCRIJCDDBJDJJEDFAAADODWIHKDXJOGKBCJONEAJACGCAIDEEFOASDEKEJGTJCAAKEJGBDFJMAQGCHPUADFLIDOGCFGCDAIDAFEHPPBHEAADCUJUJHABMPHOGKH5SHWABEGDBEPKEHOKGIGBCGLBEEOABEEAFGBCNROIEFCGKHFQBQGBDEILLHHGCEIXYJBLBAEHTIFHEEFFMHCJBCAFBJHQIGHJIJAAJIFAGKBHOFAHJPLIKFNACLFQELIDCPBBFLGMCGCFCCGCRHFFDDKJGBGBBCBBOECBBDFAACAAQFHIHDDMDBRDCHDKBFGBBNBAJAAELFKADHFNLFBELOIBAAPRJFCKSMCBLPBMGJEBOMLMLJLHNDHCRHDEBMGDKJAHJKAAPICQIGMKADKFFAIHOFAiHAGGNCFMGBFFCCADEJDNCGAMADCEGCCKCDEFGKBEFABKFJDCGDNFAQDACALBPHACBEBLKOGADDCBBGFDKCHBCBACBMJODDMAEAEIUBGBBDALBHCBGGAAECFQJKGPHDDEIJIFDAEBHOEJHBOGGMDFHBDHIDBDBBBLLACJBJCACEDJDCIGEKOFDMJBFJGENKMNGEJJIECDGMCFFHBCQKDCHBJADCAABAABBGOLIIEAAJLQCJKKACNFBAAGKBOHHFAKEDMEBHHNCDEBJCMFHCDDLEBDEMBAABAEAFDNGAAGHHBEDBKJFHIKGDCOLCFBCBOEEHCHQHEJHQNFHNIICBGKKAEBFAFEKMIIAUGIMOMNEULEFJAECBKFMGBEBACCACGQCIEHDKCFNEIEAIODEDBNDEPAAGHDEBDDCBJBUIUCFDEGAJDAAJGIAKCHFUGAKGHCHDSHBDGFHCFAIJFGBHCBDHIMBGAEDACEDBAMDABNPJcHEGXLQDBKCSFKCGGCIGCDDMGFECJIJGARCKCAGJRBEABCMHABBFGDHCCBKAHCDIOJCEHJMESCBGFABINRAIHGCFEPEDFGNFTBAFSBAAPFGINMJHIBMLLBLILEYDEOJGEDEFMDECEIIDADFUCCGAHFCMBADQKDEHFAADBACOAFMBNJPRIBDGMCLCAfTLHDEKPCGDEDEPLCGHBMBOHEJEAFIECAGICHDGCGGABAHICDXOFFCJLEAQFCJGCNBGFAAIDDBBADCFBICEDCEIDGMAAKCIHBWDDBAQFONGDBEDLLECNIGLABCIACFKALKFPBDSHCKMICBHIHADODGFBGIGNDJFLLJMDLFFBEKSFDMCABNLACDMEFMGAACEQLLALADEMIRIPKMAEMJDFRGNEGIDASDLIZBCBCFBGHHHJHCCGBEIFGCIHBHDFBCQKIAWKICDOJPCDJADBBALEDBMIADFGADADEDEJOMEBTKEGCKCMDBHCJIOGCBQGJABOPPQPBABQGDFGKEACAASBLPMQCHCBDNOHJEKCBFJDMPDABCKILJAJIGGCDOLBACGOdHBCAIJGCJAODKGGAANFEFKDECOLCDABCIIMKCKBGFDDHGFEJCFFGEIEHDDDMIMBAEEKFNBAAIDAFMQFAAqEMCVAGEFKBAICDBCDGAJEGRNMEICFBGFRCGEBBCGCGLKMAJCHFRIIVEBBKCNFOYMYEGFLIKBLGBQHNNKBANACKNYJLGDCBFJDEIAEGGFGAIBDDTBADBHIKGDICIAFAHFEEDCTAAEAGHBKLESEGJHIJHBCHBBEAPDBNESLNDADABMECGBBBLFCCCEIBIBIAEKCAAECDMHLIBGETSDLEFCJMPLDIMIMFEECEKLHCCJICCALbGHBIBMDJAKJFADJPCJLDCFBMHGBIJCECIGHFHBNEEGAABGHDDEBACGAGAAACFBCJFAAABIOBTBFAOJKCACCFBKAQGEIGAIGRBMBGABJEJLGCEADKBFPEDCBKBBBBHMBIUEECBDDFAECFECBDKOCGBJEBMCDCCBQFMAAIDGKBBBDAABFECCAAAEIDKAPKDEEPTAGHLMFDACDEEAGFAFCAKCGKGJGFOEMFPCCFGJKGCBCJOHDDMEEDKIPEAIDMFDPDGODEBCGQIABDIPPHABIBRKFDDFONAFEEQIIJPFCFAHKFECBAECGKAIACFHBGGJKBEJLCFEEIAFCGACMBGGASCIODDCMQGHCDICITJCYEJFBKKGDDNWFFAJGECFNMCFDANFCBFLFBIUGADEPfBODEPLKFHGHIBJLHABLPICBHBHCBIFIBKEEJNGFFOCKMLSBAFCIKBGJDEEJDBIDAFIEGAJDKFLFDEBADCEIOENCLMGAFGELCICHBCCHBEFCIBFRNKLPAHAOFADBBCAAIACDIBBIFJCJAEBGKCIGBGFGKHBMBDCINCYDNEAEBBHGBCOFAHSDIIEDbGHACFCHKBLKETCLKCBBACAGEIAFAAAAAAABACDCAABCABABCABBABAAACCCACCCAACADCABCACDBCBCBAAAADBCADABABECABAACBDBACBACBAACABBBABBGABBCBAACCEAAAEBCCABCBCCACAGCABCBBAABEABGABCCAAABBAAACEAAACABACAABBBAAACADBACAEECFBGCADDCAACCAEAAECAAACABEAADDCCABBEACEBBCDDAACBDAACBDCCEBCEAEBCBABCBACBAABBCCCEFACCCEACABABABAADAADAAACAAABAAACCABBBABCBACACCACABDCCBABDEEAGACAACAAAEACCBBADECCCBACCBABACCDCAACCBACAABBCABAAAAACCDAACCCADBABADACCDACBAAABAAABBBBBBBBCBDABAABAACCACAABAAACACABCBAACBAFCABEACABACEDAAAAAABBAAABBBABCABCACDACABBABBBABAAAEBEABBEEABABCCBECDAEBAAGAEBACCGABBAEABBBAABAAEAACCABACBCCCECAACDABCABCBACACAACABAAADBCABACCABAAADABACGBDCAABACCABAEADEEBCCAADAADCAAECABAAAAAAAECBBBACCAACFCCBABACDAEEBAAACEABBAAABGEACACADABAEBBAADEBABAABACAAGBAGBBCDBBACDAAACAABCABEBEACCADABCBABAABDBACCACADACADAEAAACAACAACCDAABAAAAAAACAAACBAEACCBAABCAFACBAAAACAAACEAACABACADDBAAABDEACAAADABCBACACDABGEBBCCCDBACCDABCABBABEFAEBACCBAGCBCBCBACBCCBADCADBBBBAABABAACBBAAABACEDAAAECABCAACAAAABAADBEFCAECCACAEBADBABCAAABCCADACAAAACCAAAABAAABAABAACBBACECCBAADBBBACADBDBBEAABECBAAADCGBABCBBEAACAAECADADCCBBBECCABCDBACABCCCBBACBABCHAAAAAAAEBDDCBCACCCCBBABAAABCBBBABBAADDCBCCABBBEBABCBBEBAACAAAAEFCBCCAAAACADCBACCABCDCCGAEABBCBAABBAEBDCDCECABAABCBACAEBABEAABEAFBBCCEACCCBAEAGBAAAEADDDABABBEAAAEAAAEBDABDCCCCABBBACAACBACBACACAAACABCCACCDCAEAEADAEEBBABACBCAABFBBBCBBABBCADDAECECAAGBBCEACACBAAAAAAEBBCACCEBCACAAADCEAAADAAAAAEACAAEAACBAACBCCACEEABABCABEAAABAACCCAACAABBBAAAABBABCABBAAADBCCCAAABCADAAAAABCABAABBCACAACDAEBCAADABABAAACACDABBBDABCAEBAEACCBDAADBCBBCCBAAAAAAABBBBDAAABACCAEAAAAAAAAABAABDBAAACAACAAAAAAAACCAACAABBEDEGBBBAABCADAACCADABCCBADCACBBABCBBBCBCEBCABACCBBEACACBAECACBAABABEABBBABCAAABCCCBAAAAABBAACBAAABAECBCCBAACBCBBDBACABABEAAABABAADECAACDBABBABBCACDEBAABCFABABABABBCCBACBDBEFCCCCEBCABABGNCABBBBACCBCCECAEBAEBBDCGAACEBEBAABCABBBDCAACCBEBEBECCABEACDCCCABCCAAAAAABDAAABBAAEAACDAACBAACAAABDCACBBCCABAABBBBAABAFACCBCABABFCAACCBBAAAAEADAABCBABACBAABBDDACCABACCAAAAABBBCAAAABBBAAAAAADBBCAABDBACAACBDCCABABCAFAABCDCAEBAACABBADAADBBBABEADAABCABCCAADDBAGCCACBDCAAAADAAAAADCBBACCBACCCDAAACDCDECDCBECCIAAFCECCFBBCCBCAACDEABEBABAAAAAABDAACBAAAACBCAAABBBABBBBAABACCABDABAAABBABDCEAEAAADCAAADBBBBBACCEABDABBACCCAABCCAAAAGCCAECACAEBABABCBABAAAABAEBCDEBCABBBCBAAABADCAAACCEAABCACAAABBCBAAABCAAACACCBCBAACCBCAAAAABAAAAECCCCCACCBABACAACABCAAAACBBBAEBBACAAAABCBBCBCBACBCABAACAAACCCBBAACAAEABAAAEBAACCBCABAAAABAAABCAAECBAFAAAAACADACCCABACACABBABADBCACAAAECACCAADBCBCABAAADAABACCBDCCAAACAABABAAACAABCBAAECBBACCCECDABCBDEAAABAABCACCCBAECAAACACABAAAACABEBBCAACBCAACABACCADCACDBCADBACCDCACABABBACCCACACAAABABBCBCHBBABECCAEBEFCAABDAADDCCCDCABAABGAFACABCACDCCCBCABBECEDAABDAAACEFBBAAAFBAABBBAAAABAADABACBCBCACADEEBABCCABGDDEABBEDDDDBAAAACDEABABBAECAABBCBCEAACABAEBCBACCAGBCBBEABCCBBEAABACAAABBECABBACACECCCBCBCCAAAABCBABBACBBAABAAAACCACACAAABAABABBABAAABAACBCCBACAAABCAAHAAABBCAABEAACACBCECDBAAACACEACBBAACBAAAAADBCBBACAAAACCBABCBACDAAAAABCAAACAECABAACAABAACAAAACCCCFAAAACDCACCCBABACDAEAAACECCACBCBBCBCBAACCBACAABAABEACAAAAABAGCABBBACAAEBCACACCEBAAABBBBBBACAAAACBBDEDACABCBECCCCAAAEAACCCBBADAADABAAABAABACCBEACBAAABCBACADEBAGGBAEDDCBDGDCDAABAABEABCDABCEABAAECDBADCEBBACACBAAAADBCBACBCCBBAAAECAECBCBCBCAAGCEBAECAACAECFADAEAACACACABCCBBAACABEADAABCCCBEAEECABCBBACBBBDCCCCACACBEBCAAABBCBCBEABCBBACACBABBABCBBAABDCCBDADADBBABBCCAACAACBACDACCACAADABACACACDBCEBABAAACABEBCAABBAGAADCACACCBFAAACEAAABAACAAAAACAAACBAABAAABAABCABACABDCCACABBBCBAABCBBBABACCCAAAABCECCDBCBEABCDBCADEAAADAAAEFBBACDAEAAABCCAABACCCAEBAAABBABAAABACEEADDEAABFAAAICFDFCCDACADCABCBECBACCBACCBACCACCBDCBBABAEABDAAECCBDDBBABAACCCCCBCAGCCCCEEAABECCAACBBCCACAAAACEBAADDEGAACGCCACCBBCFCCCBAAAECAABAAAACBAAEAAAACAAACBBAACADCBAAAABBAACCBHCBCAACDBAAEAAABBAAAABABBFCBBACAAACBCCAADAAAFAAAABBACBABACBBBAACAAAAADBBCAABCBAACBAABAABAABACCACAABABADBAAAACACAACBBCGGCABECBBBCAEBBBBABAEECCEACAAAAAACBBCACCCAACACBACCAAAACEAABDDAECACBCAABBDAAAGCGABAAFAACAACABAAAAEEABEEABBBAAADCBCBBFABACADAAECAACABBADBCAEBEEAAAAACFBADBCCCECCAABDCACAADCFCAADAABACCCAAACBBAAAABAAABACACACAAAABBABAEAABBAADCGGAADADGACCAEABHCAACCBDDBACGEAABBBCABCABBDAAAEEABACCAEAHCCAACBGICCADIBCBCCCEAECAAAAAACAHBAEEAAAAACCBEGBBAEBCACBBACCABCADCACBABABEACAEAEAEAEECAADEACABECBABCBFABADDABBAACBGBEDEABBCBEBCEHEGECEFACPCFBEGHABEHBEGDHGAIAGDFZEBBCBGADJCAHICMBDJBCGCCEGFBACAFHBKDDFEDEACCDFEBDCQCKDCDSHCDCKCDHOBECEGCBHCDOFCDUQCGAEADAGEECEJFGEBABFGCAAECMBACDLHBDDCBLCCDNBJDHECDDIABBDBHBElAdGKCFKBEABFEBAAWBDDFEMNPIGFFSDIBDBVCBDEBHCCJaFGPnGJKBKMIJOiIGLCAGIVPKIIRFODZCDELtBfSEaAFFhCLPCMNOKPDHEpSFjFUBRhAJKMFIJjCOCGHGBAGCKDBBMOAFQEEJGLHEXKCGBWHBHGCxVAAMLCGIFFKVRODXDCIIHJLPjGLKNCjbKCGGMDbWEkBAgQOFAiBKLQiICHESLNFElACoFKUHEJGFPEIHGMkFLKBTOSWOUCeSLBODPHMKFJLWCFPDNgAOTDHePKBJTQNEYPBPBQCPWKDNAHEHDMhUDFINQGAKCTEOJBFIONCSBKBcHHCCFDGNAEECHlXMTHJFBHPFSDkKHkeLlAsHRBhDPONHFXCHFIIKDDRedPBFCYVDFKJKFPKFCNRDQHVNHEIIJNTOGATWOmEBOAHEAZTIBPOEFDDDNSbDFNGTHFVNEKCEPcMTSTFJNDHSUEJGKFFUJCDdFdEEAICBGOFCbFNAGjBFBERTSMLYJOBEGFLCBDUBFMfATHPKAZIEHHIKNFEHOGGLGrCUMbMhjFGZTNGRQqSMCHFACDJBACEREDBGBIbDGKJFDGNFCWEGGURTNvkRJTJBVOJMAXGIJFJnWDXcNBBHnONEXCdFKLIjIHDWLaMEIEDIFSRIWaZRKDLKHHAkaKPEHCXGCAHPIBINJEKFAEPJHmKIBTCBDJaAWUKKDLIBLuNCBeCAHQGAeEFQDgJJEXUSBCKLaAAJiaFIBEBYIQBCWDEIEPCYINJAJNBgAVPWDYEALAIIJDAZLSANnGAUAJRzQAGKtMIZlQRHLfXMSHgTCzEDKBGOEDhkDNJXMEQQJOCIGhEFVPBDoBRPSEBGBFVGELHSVaBXEOX2HNDLNbWBHPNRBWXLIVEGbEZXCFQQXQEVFRZBbFNAAAABAABACBDBABCAAABAAACAABAACCCCABAAACAAAAAAAABACBAAAAAABAABAAAAABACACAAABAAAAAAAACAAACAAAAAAAAAACAAAAACAAAABCBAAAAAAAAAABADAAAAAAAAAAAAAAABAAAAACCAAAAAAAAAABACAAAAAAAAABAAAAAAAAAAAAAAAACBBAAAAAACABABAAACAAAAAABACBBACAABAAAAAAAAAAAAAAAABAAAAABAAAAAAACBBBAABBABCBACAABABACACAAABABABABCAAABAAABAABBACAAAABAAAAAAABACBACAAAAAAAAAACCAACAAAAAABBAACAAAAACAAAACACAACAAAAABACAAAAAAAAAAACAAACACCAAAABAACCBAAABCACECCBCCCACAABCAAAAAAAABCABABCBAACCABAAAACAAABAABADACAABCACBABAABABDAAACAAAAAACAAABBBABCBACBABCBABBBCCBABAAAAAAABBCCABCAAABAAACBABAACACAACCCAABAAAAABAACCABBCBAAAAACBABBACABCABBAABBAABAABAACAAAAAACAABCCBAAABACABAACBDCBCCAAACBBAACAAAACACABAAAAAAACAABAEABAABAAAAABBAAABAAAAACBABACAAAAACAAAAABCABBAABCAAABAAABAAABAACACBBACABAACBAAAAACBCAAAADCAAACAACACAAABABABAABCAACAAAABACCCABACAAAAAAAABAAACBABAAACCACACBCAABDBEBABCCAABAACACBBAACAAAACBACBACAACCAAAAAAAAAACCCAABCAABBACACAAABAAAACABAAAAAAAAAAAABAACCCAAAACAACCBAAACACAAAAAAACCACCCBBAAAAABABACAACAACAAAAAACCABAABAAABCACACABABACADACBACBBACCAACCACCDBCFCABBADAAACBBAAACBACABAAAAABAAABBCAAACABBACACABACAAABAACCAABAAAAAACAAAACAAACCAAAAABBAABABAABAAAAAACAABBCBCAAAAAAAAABACBAACAAAAADBAAAACCABACDBAAAAECACAACAAABAAAAAAACABAACAACAACAAAAAAAAACAAAACCABABCAAAAAAACACAAAAAAAAAAAAABCAAAAAAAAAAABACCAAAAAAACAAEACAACBABEAAABAAABAAAACCBAAAACAACAAAAAACACBBBBCABBACAAAABACAABACCBABAAAAAAAAAACABAAAAAACAAAAAAAAABAAAAAAAACBAAAAAAAAAAACCAAAABAABAAAAAAAAAAAABABCBAABBBAACBABCAABCCAABCABAAAAAABABCCACBABAAAAAAAABCAAABAACBABBABAACBAAABAAABABBAAABAABAAAABBAABABAACCBBBCBBBDACABABCCAAAAAABCBADBCAAACAAAACACAACCAAAABBABBBAAABCABBACBAAAABCCAAABACCAAEAABABABAAAACBBBBCAABCCAAAAAACCBAABAAAABAAAAAACABAAAAADBAACCBEABABABBBAAAAAACCCAAAAACCAABABBBBAABAAADAAAABCAACACAACAAADAAAAAABBAAAACAAAAABAACBBAABBBACAACAAABCACBBAAAAACCBCACAAAABCBAACCAAAAABCAABACAACCAAABEBAAEAAABAACAABAAACAABAABABAABAAACAAAAAABACBCAABAABAACABBABAACAABABAABACAAAACABAAAAAAAAAAAAAAAAAAAAABAAAAACAACCCAAAACCAACCBABCAECCBAAAAABAAAAAAAAACABBBAAACABCACABBABEAAAAAACBECAAAAAAAEEAAAAACBACBACAAAAAAAAABAABCCCABAB0JJfSQSmGocCUUev-jhUHhJBAFEeOXCGmckSKQWGUkWaWWiaaYkeakUeeWYaScqeecgaIWUcaSgQascgaUieeiWYoYgaSekucoWcAWSQiYaQgseceMmWgcSaaoccWigwUYWSSUSasiiUykagiOaIQmKWccwceYq0SSUWgWQmmgiWeacYcWySOaOcaWqmmMq-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DEANEGBEEEBAIOCJCKXCHGAEGCEFADAHHDHLABEBCAQCDBCBQLCNDLFAACCEFIEAEABAHHBAAFAADEJFKCGGBDGJEGAEADEHBLEYDOCBCHDAJEBBNCANLGDJBBJIABJCCJBEIADIGAJCBCCDFCDGHLHFGIDFDDCACBDCEPFEICIHKCCCOOYAISGFEKFBQGHICBENBGDBJKGKCAOEEEAODECBCBIVBBCFBFBBGDGCJAACBBOCAGEGBADECADNDBGKAKTKBRAFEAFECBDDBCGHIFBBGMEDCBFGEDHCHCIBAFDDDBHFGDCBFHCEIDABGDIAEAFEJHADFACEPHCDSHEJOIAJHAFLFCDAABBCBAPDAFFDCDJIEBJSFKBCCLDOAHJAICDGJEFFGDAGBIGCBAFQHEGAHDJBJAJCJiPIKDDAGSFCEFCDFAIBMSFFEFAALCAGADAEBEMGLGANCGEDDIBBEUCGAGIFKFGIHIAFCEKCLCHGEECCRAJFDIAGEEIKHBKALCGFIMDDEAEMIFBEGNKHFAICBFFLFFBCKABBICADIACGADAKBFDADBGABJHCEGOIJYsKIeGCEGGIJEHHADCFFKCDCHAGDFBCIGCHAAEAIDBHBGBFAEAHDGCDBBAABDCBAEDGBCCCCAFOBUCYDBGlEJCAGJCCCIMHBNHECBQFAAFAFEZCIDMFCLMIPCCDBNKEDCLEGKGABIDGABJDDFEAEBECFHAHQLQBCNCDRSBLADZhEEOBBARJADDFLBDGFCFEDFAAGDBGEDCLBJOBABLDBDDDADAEHDHABLCBECFBGBEHGTKCKHgOICHCBIAEEOFDACDNNJDQEHMDGEKDHIEDICbFHBGPBEAEGDHJCADEGICBDDABAFBICBCCCBGJDBDHKOeFCREBECCBCFIDKEBKABCKOFGACECMCCBECDIDJEJNAHICGAGGDFEBEDBCABFECABECLBMJELAABUATHOQGMIAGEAFJCHGCAHTBMADABEMCDGFHGEADQJCFDFFACCEADJCBAHACGECCEKHDODAFKDDCDNBTBICA2GQLFHKABGGDEBHABJTLFJLFLGMCBAAIHCFDINIGBCIBEADDIDEJNEHBJIEAEAIEHBEBGFAKBKBBEKAaqokMLECGaBDDNDPFCAJFJGIAJCJDCLCIHBNCLNABDJLCABAAAECEGIGHEBCDGLGDFFBGBCCBDCAOFPIJJLKEQCCBEAFBBALLEIDBGEEJCBEAAHDEJERIHCDCGDJCCBCJBDAGDBAJBAAHAIABCABAGAHIBAAKIGFEEObEKHAAABFCFGDJHCKBCIBKHFFHADAKHEDCHOCBDIKCBCABCCBNADMIDAEAKJGEHAAACCGICDDCCIKBDAFMVAAEBBDGAAMBEBFLKACDCEGFCDBEEDJCAGGFGBOGCCBLCCOHGGHBCBBDCABBIACAEHBABAAMGBKOBJHBYAGIACHJBBEJACTEEEABOCHFBABBCBAGGLEAEIMBCGGCBDCADHBCEECFDAAFCGBDGDDGDKCDCJFANWOAHACBBADGOQABCQIODGDCMIAFBEAACFUBGJAHEOBMDBAFKAEMAHBIAIABDFGFCFJCHKaAJGBESEDBKYCWWIKaGBDJGCEKBGAANAMGGGJMBDFAGAAACABABGCDKECQBAFCBDEEBHDEAIDDMACFAEEAFFGHDPLAKdPBbAHEDCADBHAKIENIBLHGMAGBFGBBCAGBIbEDFBDBECCCECAEGGLABAEGDGDBEAAFDDAPCDKFFEODYBKFGBLBBFGBDBAAAACJEFIAGBBKGNCODFHGJHGAEHGCCFDDFHFCJFCDIEHFDHEIFDLEBLAKECFIAJHINMRAOCEAACBAECCABAQAEKBHJBGBHDFCEAHDCEAAEDICADAGBAADFDAFHFEDGHECBBEAGEBCDGODMFLMDPLHADIBBBAHBAJDDGTDEOHIBBJBAFDDJAFEHBBCDCFBEIEADDBCGCAGEBGFGBCBFEDAACAGABJENHEFHMEGHDHAACDKGAGBDAIUAFHDSFBFCKBCBBGIDYAAAOUGEBDDCAAEDABJIBCABJBCAAAEBABBEAEIFHFKGhJFNBECBBDDDFECEAFFBIDFOGBFACHCABCIEJHFABIAABBFFADGAEEDIBBADADFAGBDAABEBIAEALBKXcFLUDHFGBBDFCGCAIOCGBDNHEEAHFCHFABDLQGGBFKBCBADCAAEDAABBEECEBEDHCFEBCACEHBIIOHEVNBCGEAEFEDCAAJCAGEJFAIEFCBEDCAHGHBAGRBECKFADHBFEEAJHGBEFAEAEKDDEHKAABBCCBAJADUJHMdOREAAADHICBGKBGIDIOGBCACBADAEGGLDBCBEKDFCCCEBGCGFGBFEACCGGCBJKCBEAGEAADSGOCIADJVELEACBBABDAEHDEPEHFPGMLEFGOFDLEEDEJBBNKYADDCAFEFABIAAACDBDAFIHCABCDADFDAHNHCAUQMBNHBACEEKCCBFBENFDHGQCAFCCIABKAFEKREFCBIBCCEACEGBGCBKFBBGAJECCABACACHIDEFEEKTEMQEHAIBEECQEHJGDBBGDEGOAAKDIJGIANCHDGCABEHIJLBBAHBFHCDCDABEEDAGAHIABEKBIDEPJGCFQCPKAICKBDLBFEFFCBFJKELEHBKDBCBEAENAFQCKBAFBFGDBGECJBBDGACGAGFABAFMCDDBFGDBAAMYFA-wAGKIIBCHNEHCBGMKDMILSMBJBCNABHIDCABCDBAUAIFBDBAEECJPFDEDBDIEDMGPBACDCACGGBDBCNQJEBBBECIDDBDFBDBECNGGKKJBCIJEEJBKHCSDDIHZCEDEADFCCAJAOCBACDGCAAAEDDGBCCCJNBCDIVEGYGEJAFBAAAFECEBEHGBBDNABNBGDDEAKMBKABGBUGICAFFBIFEBAFDBAECGFDKGBCACGGACBGABLHSVGDBBBGDCBFBBAHCHGHACBKNBCCADBFIGRBDECBCETABEEGDFHCCBCKAAEBKCBAFBBFAGDEBABCIELEMDRQCAEEAEEKCGAGACDFGBGFBGLEBECLGDUDDJBCHCAABCABECEFBIDFBFFFFCBAIFGADDEHFLOQIAGDABEDgDEFCDGBBBLDFAAADEDOIBEKELDOHBBFABABEJBDDADKAAJCFDGCAADDDBBCFBCFAFAEAGFRBNIGNIDGGCADAAEEBAFBGEGAGHIACABGBLAADBBACGBGEFcIFAAGBBDFIOEAREICAFACDBEADBEADEIHGBFXFDhAeAGCGCACAFCEKAGGDLIJOEFCAFCDLDIAJKFGIBBAIAFDAAAAFBCBDABABBGICAKDLBDEAGBUFMAAERIYCCBCGAGDEBIKECAOFELGCFJPGMEHOEKBFQEHCKQACEBBCBGCCGFEDEADFCDDKGCCDBIBBAKHARJCRvnHJDCDBACDDBFCKCJJIADCAIIABCCLKBVEENAIHDBCBIHDBDEBQCCBDEGCIABHGEBBIEAECDDEHMNDQiAGBBBCDECDDBDHBCVDMEHGHAIBDAHBAAFDHCGCDCJBGCGCCDCCEEEOCACAGDHCCECABCBFCHFLHBCBDiIFHEFBAADIBAAQACGGFGECHKEDFBDEKEBAGEEBCMFEIABDBAFECBACJEIAEGAFGBACKICCABFFIJHAJHDIMADGEFFICCIGCFIEBFDFDDCIAHDAAGODKGFGGLKGIEBKBBDAJJFKDCBBCGDECEIABDAGEBARCMLMCADEGFDAFDBFBGCBBDDHAFEGDDBLFKEFKGFGHEGHABMCCAFJEDCDEJACACECEQGFMECGAEEDDDKDOADBBNACXEBDBECBFALBIBCDHKGYODFCCFMSFJRIKDCEBMKCCBANCFABDJHAGAABHMCBEDLBIADIBDCQHEDEGGCEWAFCEBBACGEFBBBGAEJMKBDHEHDEACKEGBKICCSCKEEDFDCAPBFGGADCBDBDDCCBBFGGECDDEHHOHFBHEAHECBHBHGCBBBeECFOHFCHFALEAFCPEHMACCIIAFCFGDGDCGQDBHBGBKHGBLGCAADBAFEASEDEFfHOGBAKCCGHHFEGEGAJMEIBKGFICBEBCEBBHMQHECPNCDICMDAEBFDEKCFDBGDCIAEHDCGBJGDDHDKXDCBABGCEDFEHCDDCBAKMDFBOFBBHCEAECEBAKEFFCAIDCJBCGBECFCGMJDBAAIFECBBGACDGACCGSBDIAIPFQGDGACCFCCBGFBMQCHFHFTFVBEOEFCIMHHGBABIHCBGDFAICEAADABDDBDKEGCACFDBBEBHHABJGAbVWGDCCDHGAACECNBBPCACNKEDCJBBHBGABAEPCGFMIDCGDBDBAEMICKDAGBGDHBEEGCACEIHGGLFbKLHbnBCHCCJDAFGGECEFJGBEBIGDKBHAAJEAKEDKGFCFBAGABHAFMBHFPGGCDEEEEJIFIABCGHBJCAMCEKhVGBMADCHAAFECDCDJFIFHNTDAICEFFDCGBFEFHCDLHBABEKAECCBBEBABFDBDJICICCBGEGCGDBNAPKBGBBKBHDJFBCHGFBCFRGKDDIGBCIACECFADFMEGFAFOBDEFBBDBHIGKEGCCDDCBIHACBBFGFECDBJKMJFcILFCACIAGADEBCBJJAAGGJKGYDCFBAEJNIMAAJGBLAAAEADEGGGDIBGCCFDCBBKBPBBCBAAGEBBEVEVBDEaAABABAFACDIEBAIGGHKEBEBIJAMCDADCYFECFACFCCAAHBIECEBEDBBCGCABIACGFBCDFCCBGAKOCLFUHBIECCDKBIDCGCDDJBTJAIFFGEHBAMGJNBGJEAEGKCLAGKDMAFFJBCGFCGDEBFBJBHFFCIBQHMJPDWKFCBEDGBDDEEAAGDGBHAFGBAEHOAFDEEBKBFADDIEMCEEGGEJHHHFEDDABGEEGGEDKHFIEBBMCEKDQFBGBDGAAEHHEBCAFGFDMELNCCEACGDNAOQCDFJAEJHBHFBKBADDAMAAEEECBJFDBAMDJDGAACFIABQGOBRGPEAAAHCHFDCAAAHDOAFDCCLBBBEJFBBCCBABAHSAHCABBICFGEEDDHDEGNBCNBCBKFHNMDECFJMFWZFIfFHNACAFDEDHCALMIEGNKAABDDAHABNGGBDKECNADCFFDEBANFCJGHFBGHCGDADDHFACCCAMCBCERfPIIAIBHGBABEACAFBLKADCOBECEBDAAQABGFEBALFFDGCACDEFEEHAGBEIADDDGGDCKBFEBJJDGCEEiSAFHHFCDGEaEVHYK3FhVM4mOAOGgPgKLiSL-XZXPFBfaEePMEUUHHaAReOdGHKJUWVYLSKbQ5BNPiaPTILi2mss0eoqswmmmuysU4-ummkuc-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-cYCSgeCCYZkdJYbdhHfZFcKnKB";var SA="enable f16;struct ve{a:u32,b:u32,c:u32,d:u32}struct we{start:u32,count:u32,e:u32,c:u32,f:u32,g:u32}struct xe{start:u32,count:u32,stream:u32,h:u32}@group(0) @binding(0) var<storage,read> M:array<u32>;@group(0) @binding(1) var<storage,read_write> Fd:array<atomic<u32>>;@group(0) @binding(2) var<uniform> F:ve;@group(0) @binding(3) var<storage,read> N:array<we>;@group(0) @binding(4) var<storage,read> i:array<f32>;@group(0) @binding(5) var<storage,read_write> ua:array<f16>;@group(0) @binding(6) var<storage,read_write> r:array<f16>;@group(0) @binding(9) var<storage,read> va:array<xe>;@group(0) @binding(10) var<storage,read_write> ib:array<f32>;@group(0) @binding(11) var<storage,read_write> l:array<f32>;@group(0) @binding(12) var<storage,read_write> G:array<vec2<u32>>;var<workgroup> j:array<vec4<f32>,1024>;var<workgroup> m:array<f32,2016>;var<workgroup> Wb:array<f32,128>;var<workgroup> Xb:array<f32,576>;var<workgroup> jb:array<f32,72>;fn X(Yb:vec3<u32>)->u32{return Yb.x+Yb.y*65535u;}fn Ub(Zb:vec3<u32>)->u32{return Zb.x+Zb.y*4194240u;}fn fb(Gd:f32)->f32{return 1./(1.+exp(-Gd));}fn gb(wa:u32,Hd:u32,Id:u32,t:u32)->f32{if (wa<Hd||wa>=Id){return 0.;}let Y=M[wa*2u];let O=M[wa*2u+1u];let ac=Y&3u;var u=i[0u+ac*32u+t];u+=i[0u+(4u+((Y>>2u)&7u))*32u+t];u+=i[0u+(12u+((Y>>5u)&127u))*32u+t];u+=i[0u+(140u+((Y>>12u)&127u))*32u+t];if (ac==0u){u+=i[0u+(268u+(((Y>>19u)&255u)&255u))*32u+t];u+=i[0u+(524u+((O>>15u)&127u))*32u+t];}let Jd=652u;let Kd=O&127u;for(var xa=0u;xa<7u;xa++){if ((Kd&(1u<<xa))!=0u){u+=i[0u+(Jd+xa)*32u+t];}}let bc=(O>>7u)&15u;let cc=(O>>11u)&15u;if (bc!=0u){u+=i[0u+(659u+bc-1u)*32u+t];}if (cc!=0u){u+=i[0u+(673u+cc-1u)*32u+t];}let dc=(O>>22u)&31u;let ec=(O>>27u)&31u;if (dc!=0u){u+=i[0u+(687u+dc-1u)*32u+t];}if (ec!=0u){u+=i[0u+(718u+ec-1u)*32u+t];}return u;}fn Ed(kb:u32,H:u32,ya:u32,za:u32,fc:vec2<f32>)->f32{var Aa=i[23968u+H];for(var P=0u;P<5u;P++){if (kb+P>=ya+2u&&kb+P<za+2u){Aa+=gb(kb+P-2u,ya,za,H)*i[36905u+P*32u+H];}}Aa+=gb(bitcast<u32>(fc.x),ya,za,H)*i[37065u+H];Aa+=gb(bitcast<u32>(fc.y),ya,za,H)*i[37097u+H];return tanh(Aa);}fn Vb(Ld:u32,Ba:u32)->vec2<f32> {var gc=i[38153u+Ba];var hc=i[39209u+Ba];for(var Z=0u;Z<32u;Z++){let ic=j[Ld*32u+Z].x;gc+=ic*i[37129u+Ba*32u+Z];hc+=ic*i[38185u+Ba*32u+Z];}let jc=fb(hc);return vec2<f32>(jc,(1.-jc)*tanh(gc));}fn hb(kc:f32,lc:f32,Md:f32,Nd:f32,mc:u32,Od:u32)->f32{let aa=min(Od,11u)*32u+mc;let Pd=tanh(kc*i[24000u+aa]+lc*i[24384u+aa]+Md*i[24768u+aa]+Nd*i[25152u+aa]+i[25536u+aa]);let Qd=select(lc,kc,mc<16u);return (Pd+Qd)*.5;}fn ta(nc:f32,Rd:f32,Sd:f32,Td:f32,Ud:f32,Vd:f32,Wd:u32,Xd:u32,Yd:bool)->f32{let A=min(Xd,11u)*32u+Wd;let Zd=select(i[28872u+A],i[29256u+A],Yd);let ae=tanh(nc*i[35472u+A]+Rd*i[26568u+A]+Sd*i[26952u+A]+Td*i[27336u+A]+Ud*i[27720u+A]+Vd*i[28104u+A]+Zd);let oc=fb(i[28488u+A]);return nc*oc+ae*(1.-oc);}@compute @workgroup_size(64) fn a(@builtin(global_invocation_id) be:vec3<u32>){let lb=Ub(be);if (lb>=F.c){return;}let pc=va[lb];var mb=0xffffffffu;var qc=0xffffffffu;for(var nb=0u;nb<pc.count;nb++){let ob=pc.start+nb;let rc=M[ob*2u]&3u;if (rc!=1u&&rc!=2u){if (mb==0xffffffffu){mb=ob;}qc=ob;}}G[lb]=vec2<u32>(mb,qc);}@compute @workgroup_size(64) fn b(@builtin(global_invocation_id) ce:vec3<u32>){let sc=Ub(ce);if (sc>=F.a){return;}let Ca=N[sc];var tc=0xffffffffu;for(var pb=0u;pb<Ca.c;pb++){let uc=Ca.e+pb;let vc=G[uc];G[uc].y=tc;if (vc.y!=0xffffffffu){tc=vc.y;}}var wc=0xffffffffu;for(var qb=Ca.c;qb>0u;qb--){let xc=Ca.e+qb-1u;let yc=G[xc].x;G[xc].x=wc;if (yc!=0xffffffffu){wc=yc;}}}@compute @workgroup_size(32) fn c(@builtin(workgroup_id) de:vec3<u32>,@builtin(local_invocation_id) ee:vec3<u32>){let ba=X(de);if (ba>=F.c){return;}let s=va[ba];let rb=N[s.stream];let q=ee.x;if (q<s.count){let zc=s.start+q;var Ac=G[ba].y;var Bc=G[ba].x;for(var Da=zc;Da>s.start;Da--){let Cc=M[(Da-1u)*2u]&3u;if (Cc!=1u&&Cc!=2u){Ac=Da-1u;break;}}for(var Ea=zc+1u;Ea<s.start+s.count;Ea++){let Dc=M[Ea*2u]&3u;if (Dc!=1u&&Dc!=2u){Bc=Ea;break;}}j[q*32u].y=bitcast<f32>(Ac);j[q*32u].z=bitcast<f32>(Bc);}workgroupBarrier();for(var Q=0u;Q<s.count;Q++){let Ec=Ed(s.start+Q,q,rb.start,rb.start+rb.count,j[Q*32u].yz);ib[(s.start+Q)*32u+q]=Ec;j[Q*32u+q].x=Ec;}workgroupBarrier();for(var ca=0u;ca<s.count;ca++){let Fc=Vb(ca,q);j[ca*32u+q].y=Fc.x;j[ca*32u+q].z=Fc.y;}var da=vec2<f32>(1.,0.);for(var sb=0u;sb<s.count;sb++){let tb=j[sb*32u+q];da=vec2<f32>(tb.y*da.x,tb.y*da.y+tb.z);}var ea=vec2<f32>(1.,0.);for(var ub=s.count;ub>0u;ub--){let vb=j[(ub-1u)*32u+q];ea=vec2<f32>(vb.y*ea.x,vb.y*ea.y+vb.z);}let Fa=(ba*32u+q)*4u;l[Fa]=da.x;l[Fa+1u]=da.y;l[Fa+2u]=ea.x;l[Fa+3u]=ea.y;}@compute @workgroup_size(256) fn d(@builtin(workgroup_id) fe:vec3<u32>,@builtin(local_invocation_id) I:vec3<u32>){let Gc=X(fe);let Hc=Gc>>2u;if (Hc>=F.a){return;}let fa=N[Hc];let wb=I.x&31u;let Ic=(Gc&3u)*8u+(I.x>>5u);var xb=0.;var yb=0.;for(var zb=0u;zb<fa.c;zb+=32u){let Ab=zb+wb;let ge=fa.c-1u-Ab;let Jc=Ab<fa.c;let Bb=((fa.e+Ab)*32u+Ic)*4u;let Cb=((fa.e+ge)*32u+Ic)*4u;var x=vec4<f32>(1.,0.,1.,0.);if (Jc){x=vec4<f32>(l[Bb],l[Bb+1u],l[Cb+2u],l[Cb+3u]);}j[I.x]=x;for(var ga=1u;ga<32u;ga=ga<<1u){workgroupBarrier();var ha=vec4<f32>(1.,0.,1.,0.);if (wb>=ga){ha=j[I.x-ga];}workgroupBarrier();x=vec4<f32>(x.x*ha.x,x.x*ha.y+x.y,x.z*ha.z,x.z*ha.w+x.w);j[I.x]=x;}workgroupBarrier();var ia=vec4<f32>(1.,0.,1.,0.);if (wb>0u){ia=j[I.x-1u];}if (Jc){l[Bb+1u]=ia.x*xb+ia.y;l[Cb+3u]=ia.z*yb+ia.w;}let Ga=j[I.x|31u];xb=Ga.x*xb+Ga.y;yb=Ga.z*yb+Ga.w;workgroupBarrier();}}@compute @workgroup_size(32) fn e(@builtin(workgroup_id) he:vec3<u32>,@builtin(local_invocation_id) ie:vec3<u32>){let Db=X(he);if (Db>=F.c){return;}let y=va[Db];let Kc=N[y.stream];let k=ie.x;for(var Ha=0u;Ha<y.count;Ha++){j[Ha*32u+k].x=ib[(y.start+Ha)*32u+k];}workgroupBarrier();for(var ja=0u;ja<y.count;ja++){let Lc=Vb(ja,k);j[ja*32u+k].y=Lc.x;j[ja*32u+k].z=Lc.y;}let Mc=(Db*32u+k)*4u;var J=l[Mc+1u];for(var Eb=0u;Eb<y.count;Eb++){let Nc=Eb*32u+k;let Oc=j[Nc];J=Oc.y*J+Oc.z;j[Nc].w=J;}J=l[Mc+3u];for(var Fb=y.count;Fb>0u;Fb--){let Pc=(Fb-1u)*32u+k;let Qc=j[Pc];J=Qc.y*J+Qc.z;j[Pc].z=J;}workgroupBarrier();for(var ka=0u;ka<y.count;ka++){let Rc=y.start+ka;var Sc=ib[Rc*32u+k]+i[41289u+k];let Tc=39241u+k*64u;for(var la=0u;la<32u;la++){let Uc=j[ka*32u+la];Sc+=Uc.w*i[Tc+la]+Uc.z*i[Tc+32u+la];}let Vc=f32(f16(tanh(Sc)));j[ka*32u+k].y=Vc;ua[Rc*32u+k]=f16(Vc);}workgroupBarrier();var Gb=32u;var Ia=y.count;var ma=0u;loop{if (Gb<=1u){break;}let Wc=Gb/2u;for(var na=0u;na<Wc;na++){let Ja=na*2u;var Ka=0.;if (Ja<Ia){let La=Ja*32u;let Ma=(ma&1u)==0u;let Xc=select(j[La+k].x,j[La+k].y,Ma);Ka=Xc;if (Ja+1u<Ia){let Na=(Ja+1u)*32u;let Oa=k^(1u<<ma);Ka=hb(Xc,select(j[Na+k].x,j[Na+k].y,Ma),select(j[La+Oa].x,j[La+Oa].y,Ma),select(j[Na+Oa].x,j[Na+Oa].y,Ma),k,ma);}}if ((ma&1u)==0u){j[na*32u+k].x=Ka;} else{j[na*32u+k].y=Ka;}}workgroupBarrier();Gb=Wc;Ia=(Ia+1u)/2u;ma+=1u;}let je=Kc.f+Kc.g-1u+y.h;r[je*32u+k]=f16(j[k].x);}@compute @workgroup_size(256) fn f(@builtin(workgroup_id) ke:vec3<u32>,@builtin(local_invocation_id) Yc:vec3<u32>){let Zc=X(ke);let o=Yc.x&31u;let Pa=Yc.x>>5u;if (Zc>=F.a){return;}let p=N[Zc];let le=p.f+p.g-1u;for(var Hb=p.c+Pa;Hb<p.g;Hb+=8u){r[(le+Hb)*32u+o]=f16(0.);}storageBarrier();workgroupBarrier();var v=p.g;var Qa=p.c;var Ib=5u;loop{if (v<=1u){break;}let Jb=v/2u;let me=p.f+Jb-1u;let Ra=p.f+v-1u;let ad=o^(1u<<min(Ib,4u));for(var Sa=Pa;Sa<Jb;Sa+=8u){let R=Sa*2u;var Kb=0.;if (R<Qa){let bd=f32(r[(Ra+R)*32u+o]);Kb=bd;if (R+1u<Qa){Kb=hb(bd,f32(r[(Ra+R+1u)*32u+o]),f32(r[(Ra+R)*32u+ad]),f32(r[(Ra+R+1u)*32u+ad]),o,Ib);}}r[(me+Sa)*32u+o]=f16(Kb);}storageBarrier();workgroupBarrier();v=Jb;Qa=(Qa+1u)/2u;Ib+=1u;}if (Pa==0u){l[p.f*32u+o]=f32(f16(f32(r[p.f*32u+o])));}storageBarrier();workgroupBarrier();v=1u;var S=4u+(31u-countLeadingZeros(p.g));loop{if (v>=p.g){break;}let cd=p.f+v-1u;let K=p.f+v*2u-1u;let dd=p.g/(v*2u);let ed=(p.c+dd-1u)/dd;for(var oa=Pa;oa<v;oa+=8u){let B=oa*2u;if (B>=ed){continue;}let Lb=l[(cd+oa)*32u+o];let fd=f32(r[(K+B)*32u+o]);if (B+1u<ed){let gd=f32(r[(K+B+1u)*32u+o]);let Mb=o^(1u<<min(S,4u));let hd=l[(cd+oa)*32u+Mb];let id=f32(r[(K+B)*32u+Mb]);let jd=f32(r[(K+B+1u)*32u+Mb]);l[(K+B)*32u+o]=f32(f16(ta(Lb,fd,gd,hd,id,jd,o,S,false)));l[(K+B+1u)*32u+o]=f32(f16(ta(Lb,gd,fd,hd,jd,id,o,S,true)));} else{l[(K+B)*32u+o]=f32(f16(Lb));}}storageBarrier();workgroupBarrier();v*=2u;S=select(0u,S-1u,S>0u);}}@compute @workgroup_size(64) fn g(@builtin(workgroup_id) ne:vec3<u32>,@builtin(local_invocation_id) Ta:vec3<u32>){let kd=X(ne);if (kd>=F.c){return;}let D=va[kd];let ld=N[D.stream];let Ua=Ta.x<32u;let n=Ta.x;if (Ua){for(var Va=0u;Va<D.count;Va++){m[(31u+Va)*32u+n]=f32(ua[(D.start+Va)*32u+n]);}}workgroupBarrier();var w=32u;var Wa=D.count;var z=0u;loop{if (w<=1u){break;}let Nb=w/2u;let oe=Nb-1u;let Xa=w-1u;if (Ua){for(var Ya=0u;Ya<Nb;Ya++){let T=Ya*2u;var Ob=0.;if (T<Wa){let md=m[(Xa+T)*32u+n];Ob=md;if (T+1u<Wa){let nd=n^(1u<<z);Ob=hb(md,m[(Xa+T+1u)*32u+n],m[(Xa+T)*32u+nd],m[(Xa+T+1u)*32u+nd],n,z);}}m[(oe+Ya)*32u+n]=Ob;}}workgroupBarrier();w=Nb;Wa=(Wa+1u)/2u;z+=1u;}if (Ua){let pe=ld.f+ld.g-1u+D.h;m[n]=l[pe*32u+n];}workgroupBarrier();w=1u;z=4u;loop{if (w>=32u){break;}let od=w-1u;let L=w*2u-1u;let pd=32u/(w*2u);let qd=(D.count+pd-1u)/pd;if (Ua){for(var pa=0u;pa<w;pa++){let C=pa*2u;if (C>=qd){continue;}let Pb=m[(od+pa)*32u+n];let rd=m[(L+C)*32u+n];if (C+1u<qd){let sd=m[(L+C+1u)*32u+n];let Qb=n^(1u<<z);let td=m[(od+pa)*32u+Qb];let ud=m[(L+C)*32u+Qb];let vd=m[(L+C+1u)*32u+Qb];m[(L+C)*32u+n]=ta(Pb,rd,sd,td,ud,vd,n,z,false);m[(L+C+1u)*32u+n]=ta(Pb,sd,rd,td,vd,ud,n,z,true);} else{m[(L+C)*32u+n]=Pb;}}}workgroupBarrier();w*=2u;z=select(0u,z-1u,z>0u);}let E=Ta.x/8u;let Za=Ta.x%8u;for(var Rb=0u;Rb<4u;Rb++){let ab=Rb*8u+E;let qa=D.start+ab;let Sb=ab<D.count;let wd=select(1u,M[qa*2u]&3u,Sb);let bb=Sb&&wd!=1u&&wd!=2u;for(var ra=Za;bb&&ra<16u;ra+=8u){var xd=i[36889u+ra];for(var U=0u;U<32u;U++){let qe=f32(ua[qa*32u+U]);let re=f32(f16(m[(31u+ab)*32u+U]));let yd=35865u+ra*64u;xd+=i[yd+U]*qe+i[yd+32u+U]*re;}Wb[E*16u+ra]=fb(xd);}workgroupBarrier();for(var V=Za;bb&&V<72u;V+=8u){var Tb=i[35400u+V];for(var W=0u;W<32u;W++){let se=f32(ua[qa*32u+W]);let te=f32(f16(m[(31u+ab)*32u+W]));let zd=29640u+V*80u;Tb+=i[zd+W]*se+i[zd+32u+W]*te;}let ue=29640u+V*80u+64u;for(var cb=0u;cb<16u;cb++){Tb+=i[ue+cb]*Wb[E*16u+cb];}Xb[E*72u+V]=tanh(Tb);}workgroupBarrier();for(var sa=Za;bb&&sa<9u;sa+=8u){var Ad=i[35856u+sa];for(var db=0u;db<72u;db++){Ad+=i[25920u+sa*72u+db]*Xb[E*72u+db];}jb[E*9u+sa]=Ad;}workgroupBarrier();if (Za==0u&&Sb){var Bd=0u;if (bb){var Cd=jb[E*9u];for(var eb=1u;eb<9u;eb++){let Dd=jb[E*9u+eb];if (Dd>Cd){Cd=Dd;Bd=eb;}}}let ignored=atomicOr(&Fd[qa/4u],Bd<<((qa&3u)*8u));}workgroupBarrier();}}",fA="abcdefg",RA=A=>A?SA:SA.slice(11).replaceAll("f16","f32");var UA=["plain","comment","string","number","keyword","type","function","constant","operator"];var HA=512,ZA=4,eA=[],MA=0,W=1,X=2,KA=4;function yA(){return[HA,new Uint32Array(HA*2),new Uint32Array(HA*2)]}function vA(A){let B=A[MA]*2,C=new Uint32Array(B*2),E=new Uint32Array(B*2);C.set(A[W]),E.set(A[X]),A[MA]=B,A[W]=C,A[X]=E}function WA(A){let B=eA.pop()??yA(),C=0,E=0,u=!0,I=-1,H=-1;for(;E<A.length;){let r=E,J=A.charCodeAt(E),e;J===10||J===13?e=2:sA(J)?e=1:lA(J)?e=0:e=3;let O=u?16:0,a=JA(J),L=a,c=0,n=0;if(e===0){c=2166136261,n=2654435769;do{let t=JA(A.charCodeAt(E));L=t,c=Math.imul(c^t,16777619),n=Math.imul(n^t,2246822519),t>=97&&t<=122?O|=1:t>=65&&t<=90?O|=2:t>=48&&t<=57?O|=4:t===95&&(O|=8),E+=1}while(E<A.length&&lA(A.charCodeAt(E)))}else if(e===1)do{let t=A.charCodeAt(E);L=JA(t),t===9&&(O|=32),E+=1}while(E<A.length&&sA(A.charCodeAt(E)));else e===2?(E+=1,J===13&&A.charCodeAt(E)===10&&(L=10,E+=1)):(J===92&&(O|=64),E+=1);C===B[MA]&&vA(B);let P=E,i=P-r,S=C*2;if(B[W][S]=e|xA(i)<<2|a<<5|L<<12|(c&255)<<19,B[W][S+1]=O|(e===0?(n&127)<<15:0),C>0){let t=jA(I,a);if(B[W][S+1]|=t<<7,B[W][S-1]|=t<<11,e===3||H===3){let p=qA(I,a);B[W][S+1]|=p<<22,B[W][S-1]|=p<<27}}B[X][C*2]=r,B[X][C*2+1]=P,C+=1,I=L,H=e,e===2?u=!0:e!==1&&(u=!1)}return[B[W].subarray(0,C*2),B[X].subarray(0,C*2),Uint32Array.of(0,C),C,B]}function qA(A,B){return 1+((Math.imul(A+1,131)^B)>>>0)%31}function aA(A){A?.[KA]&&(eA.length<ZA&&eA.push(A[KA]),A[KA]=null)}function sA(A){return A===9||A===11||A===12||A===32}function lA(A){return A>127||A===95||A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122}function JA(A){return A>127?95:A}function xA(A){return Math.min(7,31-Math.clz32(A))}function jA(A,B){return A===47&&B===47?1:A===47&&B===42?2:A===42&&B===47?3:A===45&&B===45?4:A===61&&B===62?5:A===58&&B===58?6:A===60&&B===47?7:A===123&&B===123?8:A===36&&B===123?9:A===125&&B===125?10:A===45&&B===62?11:A===63&&B===63?12:A===63&&B===46?13:A===60&&B===62?14:0}function LA(A,B,C=0){let E=[];for(let I=0;I<A.length>>1;I++){let H=A[I*2],r=A[I*2+1],J=C+I,e=B[J>>2]>>(J&3)*8&255;u(H,r,UA[e]??"plain")}return E;function u(I,H,r){let J=E.at(-1);J&&J.type===r&&J.end===I?J.end=H:E.push({type:r,start:I,end:H})}}var _A=1,zA=4,g=8,$A=64,U=128,j=32,AB=16384,bA=5,_=0,TA=1,BB=2,T=3,Y=4,w=5,rA=6,tA=7,k=8,z=9,uA=10,Z=-1,OA=0,CB=1,cA=2,EB=0,DB=1,GB=2,FB=3,IB=4,HB=5,dA=6;function YA(A=globalThis.navigator?.gpu,B,C,E){let u=!1,I,H,r,J,e,O=[],a=new Uint32Array(4),L=[],c=0,n=!1,P=!1,i=new Uint32Array,S=new Uint32Array,t=E??VA;async function p(){if(!H){if(I)return I;I=(async()=>{if(B)u=B.features.has("shader-f16");else{if(!A)throw new Error("WebGPU unavailable");let D=await A.requestAdapter();if(!D)throw new Error("WebGPU unavailable");u=D.features.has("shader-f16");let F={};for(let M of["maxBufferSize","maxStorageBufferBindingSize"])F[M]=D.limits[M];B=await D.requestDevice({requiredFeatures:u?["shader-f16"]:[],requiredLimits:F})}C===void 0&&(C=RA(u));let G=B.createShaderModule({code:C}),K=D=>B.createComputePipelineAsync({layout:"auto",compute:{module:G,entryPoint:D}});H=await Promise.all(Array.from(fA,K));let N=eB();r=B.createBuffer({size:N.byteLength,usage:U|g}),B.queue.writeBuffer(r,0,N)})();try{await I}catch(G){throw I=void 0,G}}}async function VA(G,K,N){return await p(),mA(G,K,N)}async function mA(G,K,N){let D=G.length/2,F=D+3&-4,M=o(_,G.byteLength,U|g),Q=o(TA,F,U|zA|g),f=o(BB,F,_A|g),V=o(T,16,$A|g),R=e=KB(K,e),s=R[GB],m=R[FB],l=R[IB],b=R[HB],pA=o(Y,s.byteLength,U|g),XA=o(w,m.byteLength,U|g),nA=u?2:4,hA=D*32*nA,wA=b*32*nA;o(rA,hA,U),o(tA,wA,U),o(k,Math.max(l*32*16,b*32*4),U),o(z,l*8,U),o(uA,D*32*4,U);try{B.queue.writeBuffer(M,0,G),B.queue.writeBuffer(pA,0,s),B.queue.writeBuffer(XA,0,m),a.set([K.length/2,D,l,b]),B.queue.writeBuffer(V,0,a);let y=B.createCommandEncoder();y.clearBuffer(Q,0,F);let AA=J??=NA(),v=y.beginComputePass(),BA=(CA,q,iA)=>{v.setPipeline(CA),v.setBindGroup(0,q);let PA=Math.min(65535,iA);v.dispatchWorkgroups(PA,Math.ceil(iA/PA))};return[l+63>>6,K.length+127>>7,l,K.length*2,l].forEach((CA,q)=>BA(H[q],AA[q],CA)),BA(H[bA],AA[bA],K.length/2),BA(H[6],AA[6],l),v.end(),y.copyBufferToBuffer(Q,0,f,0,F),B.queue.submit([y.finish()]),await f.mapAsync(1),N(new Uint32Array(f.getMappedRange(),0,F/4))}finally{f.mapState==="mapped"&&f.unmap()}}function o(G,K,N){let D=O[G];if(D?.[CB]>=K)return K>D[cA]&&(D[cA]=K,J=void 0),D[OA];D?.[OA].destroy();let F=B.limits.maxBufferSize;if(K>F)throw new RangeError(`WebGPU buffer limit: ${K} > ${F}`);let M=JB(K,F),Q=B.createBuffer({size:M,usage:N});return O[G]=[Q,M,K],J=void 0,Q}function NA(){let G=D=>D===Z?{buffer:r,size:r.size}:{buffer:O[D][OA],size:O[D][cA]},K=(D,F)=>B.createBindGroup({layout:D.getBindGroupLayout(0),entries:F.map(([M,Q])=>({binding:M,resource:G(Q)}))});return[[[0,_],[2,T],[9,w],[12,z]],[[2,T],[3,Y],[12,z]],[[0,_],[2,T],[3,Y],[4,Z],[9,w],[10,uA],[11,k],[12,z]],[[2,T],[3,Y],[11,k]],[[2,T],[3,Y],[4,Z],[5,rA],[6,tA],[9,w],[10,uA],[11,k]],[[2,T],[3,Y],[4,Z],[6,tA],[11,k]],[[0,_],[1,TA],[2,T],[4,Z],[3,Y],[5,rA],[9,w],[11,k]]].map((D,F)=>K(H[F],D))}function kA(G){let K=WA(G),[,N,,D]=K;if(D===0){let M=LA(N,new Uint32Array);return aA(K),M}let F=new Promise((M,Q)=>L.push([K,M,Q]));return c+=D,c>=AB?oA():QA(),F}function QA(){n||P||(n=!0,queueMicrotask(()=>void oA()))}async function oA(){if(P||L.length===0)return;P=!0,n=!1;let G=L.splice(0);c=0;let K=G.reduce((F,M)=>F+M[0][3],0),N=G[0][0][0],D=G[0][0][2];if(G.length>1){let F=K*2,M=G.reduce((R,s)=>R+s[0][2].length,0);i=$(i,F),S=$(S,M),N=i.subarray(0,F),D=S.subarray(0,M);let Q=0,f=0,V=0;for(let R of G){let[s,,m,l]=R[0];N.set(s,Q);for(let b=0;b<m.length;b+=2)D[V++]=f+m[b],D[V++]=m[b+1];Q+=s.length,f+=l}}try{await t(N,D,F=>{let M=0;for(let Q of G){let[f,V]=Q,[,R,,s]=f;V(LA(R,F,M)),M+=s}})}catch(F){for(let M of G)M[2](F)}finally{for(let F of G)aA(F[0]);P=!1,L.length>0&&QA()}}return{h:kA,i:p,r:t,e:o,g:NA,b:O,p:a,get d(){return B},get f(){return u},get c(){return H},get q(){return J},set q(G){J=G},get l(){return e},set l(G){e=G}}}function KB(A,B){if(B?.[dA]?.length===A.length){let a=!0;for(let L=0;L<A.length;L++)if(B[dA][L]!==A[L]){a=!1;break}if(a)return B}let C=A.length/2,E=0,u=0;for(let a=0;a<C;a++){let L=A[a*2+1]+j-1>>5,c=gA(L);E+=L,u+=c*2-1}let I=$(B?.[EB],C*6),H=$(B?.[DB],E*4),r=I.subarray(0,C*6),J=H.subarray(0,E*4),e=0,O=0;for(let a=0;a<C;a++){let L=A[a*2],c=A[a*2+1],n=c+j-1>>5,P=gA(n);r.set([L,c,e,n,O,P],a*6);for(let i=0;i<c;i+=j)J.set([L+i,Math.min(j,c-i),a,i>>5],e*4),e+=1;O+=P*2-1}return[I,H,r,J,E,u,A.slice()]}function $(A,B){if(A?.length>=B)return A;let C=16;for(;C<B;)C*=2;return new Uint32Array(C)}function gA(A){return 2**(32-Math.clz32(A-1))}function JB(A,B){let C=256;for(;C<A&&C<=B/2;)C*=2;return C<A&&(C=Math.ceil(A/4)*4),C}function eB(){let A=new Float32Array(EA.length),B=0;for(let C=0;C<x.length;C+=2){let E=x[C],u=x[C+1];for(let I=B;I<E;I++){let H=EA.charCodeAt(I),r=H>=97?H-71:H>=65?H-65:H>=48?H+4:H===45?62:63;A[I]=(r&1?-(r+1)/2:r/2)*u}B=E}return A}var MB;async function RB(A){return(MB??=YA()).h(A)}export{RB as parse};
1
+ var x=[23968,.052426742,24e3,.00562379437,24384,.0558252142,24768,.0654091374,25152,.029780957,25536,.030970439,25920,.0207765122,26568,.043128879,26952,.0438055031,27336,.0473673228,27720,.0365106175,28104,.041048,28488,.0194216582,28872,.0471233822,29256,.0268734367,29640,.028757472,35400,.0822482494,35472,.0074656481,35856,.067295467,35865,.0079350673,36889,.0855105154,36905,.0387961134,37065,.0543272341,37129,.0258721344,38153,.0295154625,38185,.00369845884,39209,.066800602,39241,.11293668,41289,.044981922,41321,.0170244921],EA="ABCDBCFIACDDECCBABCCBAABEAABECFJCADCEEECBIHHBCBCFBHAEHFEABBCACDECACABAKFIEOIFAIFGGACBACFDDMDHCABFEACEEDCDAHBDAACEAFEBCAIDGBCEDCMCACCAAAABGBAAACAGDBBDDACEABCBBAIAFFABAACAABAGECACBCEBCABIICDAABCGBBAACCEFABDCGCCDBECCAAHEIBCAFAAIMDBAACEJEBFBGAADBCBKDELEMJIGDBDEQJAEDDEJGABDECBCDAEIHCHGSFGKBAHYOjSGGBGFEdRRCLCaHABUdAZHQAUHJHEAVMiCRQNUXjmAFEWVcaHRGcPdLaNfCKJCUEFDSDFPGKCBAmFPMeIAWkSGkHICRERCACCBDCAEDADAABBBCACDCADCCACEDBBBCBCDEECECABACCBEAABEDACCABAEABEABDCABCEBDEBDBDCEACBEAACAAEACEDCABBCADCBCAECCADBCCECCECBBAACBBEDCCDDBAEEBEBCBAAAEDAAEABBCEABDBAEBCBEBAACBEACCCCADDABBDBEDCAEAABABDBDCBDEEDBACDBAEACCBACCDCECACBBDBBEBCBBAACBCCCCEABADEECACBACCDBADAABCEDBBDCEDBDABBCBDAADAAEBBECIFBEECOCBBFEAGHDBCHCCHHFHHCCAGABAEBCECIHIEMGDEEDEAEDACABCDKDFCBDACCABABCBCADCDAABCAACEDEDBBBACCBEEBEEBACCEBAACDCBCADDCCCCEDABCAAHIABCDMOEEKICBCEEMBJCFJKRVEMLBGCBBBACACBBDAAEDBECAACBEEAABDAAAECCEDEBEEACCACBBBACAAAACEBAEBBBCDEBACECCBADAACABCABEEABCCABDCECCABCDEEECCCDEBCCCADDCBCBDAACBDBEEEEBAEACDCAACBBCDDADAEABDEAEEABECABDDECAAABACDEDEADADBBBDCADEAAACBDDBCBBBBADABBABCABBCAECCCDCAAEBCCACCBCEACABDCBDCCBDACBDBECABBADCCBBCAAAEAAAEBBAAEDDECBECBCEACAEBBCEDBBDCCCDBBCECDACADCCACBBADAAACEAECCDCABAECCBCAADCAECABECADBCCDCBEBDBDCACCEACCCEADCCDBEBEAEBCAEEDDCECCDAAEAACCEBCBCBEBBCCBBABCDIIKWEDARFcWQKFQOPNFJJPCHSFBRHGENEAABACCBCEBEECCDAEADBABABDBBDBABAACDAEDAADBDACCBCEBEBBCCDBDEDADAACEBBCECABBACBBCBAABBAEBEEDBACBACCACBCBDEDEEADCDEACBCBEDBCEBCDBCAAHAAEGACIFHCGDBADFEEHDEBDBCCABGBDDEOEAEGLHCAGHMADGGEFCAGFIFGJHKUIAMGIFGVKCEDEEHBIKEJBFHFACCACDEBLACFTDAHEDGBAILFJFEDLCDONEIfADACGBJAGBEFJFBIFCEEBCAAGCECJBMDGOHAHBIABJOAGECFDHCQBDJCCCMGCCDDKDFODBDFJLMABAFCCEHDAEHAAECDGOUAACcMQDIAGLMRQBIDBEDJCBBFDBFHDBAEAECaAOJERTHUHLMDAGYGIDISAVfDIJECISHNFBEAFGGNEGCJADARBFBAHQMACAUQDWPTBIDHECKKQTRGEDEGACOBBCCIAIDMCCUAAAPEQBGMHBRDPFBHPQJABHgBKMHBCEeHKLDPCGDAFTIHDEFEAFNIPBECDEGGHFGBABBMUAIGHBHDGCFACGIFBEDEKBJLCLgBADGDEIHKAAACKAHACJBEYKEMKJFDIADFADCKBBEACDBHECCACACFCECBIAAFAFMJIHEMEbSWCJLpLABJIYNRVITBNBTAbFNEAFCQQVCUMNJdDCELGIIZDIADCBHMTDNKCJGGCZEMQLPZIUGJCAAVNQIDIABCHHNABLKAONCOSBHlAUBCBEHlFGGAKLDIVLRSETBOITAOOFLjMBDBGQIfEMGEDEFSfAZSAbQeITAUYFJnHQINLIMNFAAGMNEMPLTGKPBAADDOIBNbHMKDPSBZdOKEHPIKhPZWJHKOMDBIqCHfFGQBAIGRDCMCKLESDPNFMJCAGPHEQNfXICFKDSOTLECFOPMGFEdGILIOUJBMgCThKBAAIUcXGMCGQTKMLFXFDAKCMKDKFEFGUEAGEADDFOCAKDHDQCDALFDBAOLCFDAJDDCGDFGEEBBFFAFCDGEAHGKCAFLAJKPCGFDBCBEGFBAAIABBANIBEQAFBDAQABDDBGAIFLCBCEkBGWAAAJCBLIHJIHCGGKHABBHFIAIAADOBIGCABBICEGJBKNAKFVAAECJBAAEJBBDEAOCBHBDALDJCJJMFDDBOEGGFHCDJHICABGMXCTEHGBCHLJMLCIHIJMFMICBHHGDGDCNFBIGCIBbVCHGDOSBEHGJCQKEEGJASEXUGDFIDDGDFHFMBKCJAAICECAKJDEBEIDQBIAIJFCBLBIGHKCDCGSHIEPENIIFOKVIKCAALHIHFAFEBGJTEKBBMDDMHCBDEBFEAILKPFLHHDBEEKAXOEPJDLMOFCAJAONMREODdRPDFLNABGBNMKBHCDOBQKFHAIXTDCMDLCBBDJLKAJBHAEGFVMFWENDFECtACbBeABILDBAGCUPZAGHFBEOQDBERIBJFEBOIFLECBIHCVSINYJBCDKLiKMANMiLQFBFJFJIVNKADBQCHkHAZIGNBBHDTSGPIQIMGCHDCERHQHMDJNDKIKGLGCBKHBMVDIJCCDIAFDNCEGOGTGDCLCAADHBAAKQRCNANEIFEKAJJMDCHLKBKCLHELBLFACNGGGCBWBREKHFBCFKPFQAGOCLKDBLAHEJJJMHBMRCKDDCJEAOBDMCGFDEAGFBDFGDZQIIKKYHWLLIQMJYCWQKMGFSWDZFSBUKbXXDBENAOHHBFKAGARDGCLaKKMAROHDEHMIEAOHKCNPHCEJCFDYKAFMOIGHACFEILMEGFCFGGFFCFCDMLDOAOHESEOHFIFEDHFAEAOHQCACDDCBaEHEICDEBACDDGFGELGDKCMAGLJREKAHFFAEGHDFOQNDXHRJOVDTNRMFTHDFBJGAHBHFBQFGTHFDEFFACBGILDGCMjQOFFQNEJDaJTNFQGJKLEbIAZLMAGFBCNBGbFILgQQLBFGVQCEGFQNAQbGIlBPZGIDpqGFWMXIQMIPDBeDSfElUJZAUFLQGWQNIDKPTUROIBTBaODRAVPFUIRJEpcTCBDFHFBGlDfCEABOCEAEJBCAAUAFBDEGGRZKVIEIMDMQMP1KECSYGFJEDBNYYMlHSCMMAHFJDaJDGiPEQEFCCSDKFKJMIEIYEHCDEHHBJBCKEEIBJHEKGAKBKBPBEDBFJOKHaGASDFEABCNETBEELDLLJAHDBXIUFJCCAEBCAHDEIBBBGFECAGABEEACIAEDEGNBGDBGJAACABDDGCLFAHCFGELRDCCDEACFEBBABAGCCFACEBCAEEHEIABDECDHKCACACIGDJAGGDICBDDFAIHDECCCBAHHADDCGBDBBHAEGDIBAFCCAECAAFECGBENECCBFEGGALBEQFCIFDCBCEAABCIDGDCJAACDGFHMDHGEIHGBEFKABAIKIAAJIICAGDFAEFBIAFCAGDJAEGDANMGKEINDDDDBIFEAACBABJDEKBAAACBCCBCBAAGGIECBMCNLIMCBCKMADDNALJDADEJFBALFAHMJOWTEREJIGIHKIKBGKDJDMHUGBMBAAAMNEBDCECCECADCGHBEEHCACGFAABADGABLFKFJADEABFGEGBGDIBGEBGICAKJFBAHHDSLFLFDCECEBGICDEBEHKAEGFGBOCEEAICDFCKDBHICDDFNFCDADIDAFICJBKEADEAFEBDABABGCKADAKFADEAGAEBDAGKBFGEGMYAAGLGJMSIiLWVHELKNEHWDOQIBAAFCCIIACFDCGHACFCBCCAGBFBADEBFDJDBEBCAEABDCBBBBDICFBAECBBBHEGADFEAAACDAECBBDDBBCBJHDEGKCBCCGEIBJBHGHLKFEEAFAGDIALFCGADMFGGBIABIJFFBAABCEGLDEIPBBCFGJCGHBBAGDEFCAAJFDGGEADACGBBAFCFABIAFAICGHEMLDQHDDZMQJKAIEaBUFAMMFKDADKKHEQCLAUDKAELHECIFCQPBCFHPFEAJINOEWAHJBBYTKSPEEOWEIOERACGCGGHAAAEfPDGEJILHHQWEFACELAVFQMBALiEODPFCBPBKBWJBLFDACEOAHKIFKFABBHIGMCEIKECGMEBDAJNDNHPDHDXADHNVOEKAADTIAMDJDEBpEAJCEGHDOCEDGFCCUHiDCIADFcPCIACBDDDEDBBCCCCBCBABBBCDAABDCAEDDCBABACAAEDDDEBCCABEABCBAACCCBBCCEBACEAEBCCCCDBECADECEAAACCBECCBDCBCBCCBEBBBBCBACBEAECDEEACBAAAABEDACEDECABECCCCBEBDAACADDCBACBCAEBCDACCBCACCAADACCCDCAADBABEBCEAEEACCECDADAAEAEEDDBAAACBEAAEAADAEEDAACACAAEABCBDADBDABBCDEBBCCDACABAADAECCDACDECDAACBDDDEBAACCBCBBAABEBBEABCEDDCBDDBACDBBBCBBBACKACBKGIBBAEDCCHBAAHGGCHARDDBFDCAABADABMBEAOEAAIBAAADABCDDDODDBACBAAACCAAABDEABEAEBBACCCDBBBCADCAABDCAADCDACCEBCBCCADCBCDCBCCCDCEBAABCDEEBAACACDECABDDCBACDAAADAABABCACACDEEDEECCCADCACCCCDCACBCDBEAEBCABACACACBCCBCCCDBADEBDACCEBDCDEBDDCEECCABEBBBAECECAAEAADDEBECECCCCCCBABBCCBDBCCBDECBDBCDDABCEADDAEBECAEDCCCBCBAABCCEEADCCEDCACACCCAAACEABAABBCCEECACBAACBEABCCAECCABACBDBBBAEAEBEABDBACBCBCBBCECDCCCBBCCBBCCAAADCCABBAAAACEEEECBBADADCBEACBACACCAEBABACABEBCABACDBBDEEBDCBBCEECDABAEBCABAAABBEBBBABCBACCBAADAABCCADECACCCCCBDDCBBCECEEAAECBCACADCCBBBEEACCCDAEADBCBACBCCCBCADBADABDCAEBECAIMGWGHAPLaQOKFOIRPDJLTBHSJHJLKALCADDDDABBABBBBAEDDBCABCBDDCECDBADEDADACDBCDAABCBBDBCDEBDAEBBDECBCCABCCABEABACEEEAEEBADEDCAAEEDCBADCBABBBCCEDACBEBCDACCCADDBBDCCDACBECCMAEIHFCIBAABFEIBDDAFEADBDCDHDKMGCKGHABAEAGEAIAIAGKKFKBIDDIWIAQIIJIROCCBBGFEIGGJCAFFABIGCAIDPAAHLFFHGJCHEEHBJBEBHCHOJGCfDDACQBJACBGBDLACDAIBCDDDKECCPDKBIQDAFAKAHJMAEGBHFBASJEFBGCOGCEHFIDFOFFFAFJIDBDFGBCFDADHECBBDIOUABDaMYHKGELIVOAEEAEBJIBEFFDFDBDFEBCAaEKHIPVLQFNMABCYGKAGQHXfFIFEDCSFLDFAAHGCPGICJBDBPBFDGFUQDDGUUFYPVDODFGCMKOVNGIEAIAAOBDCCMGMJICAUABCNCOFBQNERAHDDDPKDBAFiDIKLEDGcJKHBNCMABDTKHBEACBBHGLFIDEBAEFFBAAFDMOBIGHCFDGKFEAGGBCKCAODNLCLaCGACFEIAACCGEMDFFBNECcKEOKJCBCDCBEBCKDCOCDAABCGDBDBBFEBBAECBFDHMIGLAIGJFADDRLCEABFHQKEQEAAdEIBEGGIIFAJDAABBFBKBHFACIACDIECJIMKCCECMCFJFCAGEHEEADDCRGAIIOACBGGCBGCCIDEHISGOAHCJHECHBCGDLBOFRAAECBEEHRLBCAFIDGGHAHAFUGFBKCMMFFFQDBBOECFOEEECCHFNFHGHFCEABCMANDKEBHABCAJAAGBIEBJDARCFBMHHMCDWRALBDFJODFDFBECIGRRBBFBFHQEBGBCIPQUIBEDDHHHHABCFGLFJMVJDGADAEFGCVKBCMXFJDBCWFGFgGXBZAHKODeZGGGGHPWMKACBABODQKDIJBFKUEBEBCJDDIBBIADDOADANHEFGIFBBDCDCAEGACGACABJDCDEBMBADEIIAHHEHMLDBJCCEACKFEIAEAEAAPOHCQBHEFFUBAHFACBGFNFDAEkBAWBBAFIAHCFLMDEMMELCDHDCEAIBCBQCGGABADMCEGJCKHAOAZFAGCHFCFCJACDGBKABDABDPFJAJHIDBFEQEBGDHBBJNEAADCMXGPGGaJODGBAJODIIGOEAMEHUAIFFQnhIIINDYNIXHDFKqEQIQGGMMKZKfQBIHXVcGBIEAQCBEJMBcHOUBQIHHHQAQMIKGPDSEGLEEJHPJCIDFHBYDOELHQZFUfILQKUBBJJICMJDBFKJCCCKFOOACKHLBHMKDMLFECPCOHKBIHDTDWCESPDNEYPaGbCHBWDJHJFEBGOECLQBADKABWIJNKLLLBALKOIHQQNSORNMDJSEaMOKXNGLJMRSJRIGRHDIcMENKJJDcGGVNAQGDJTNbALAAELIWjDVJLAYOjciKJEVJTPUVKJYICLDibbEBHMHPOJMDNJPQHRIATEMDCPAOCGLMAHACHBALFXgJOKIGIMHKNCOIVQPKACPKHFBCKKFRCVQXOJKPJDQQAUFHTLKCIHIOAGFAUCACFGHKCIICJOHFAKGBUDINODFMLEDDWuKQURHEIHJcAHDCHDEKIDLTDJHOCEKAQDFaRPQAgETMYMDYMGOFEFOeGEFUYHaQTRHRTTUfLQBgBDdVGIBjMTISFhAcURDLAILTXYEBYNPAIQBUPYKFIKLLUNPQDKDIUoCJFfJBUEDIIWFAEISFWGPJSAFAJEKJODGBALWDLOKIAMFEJQOBgQFOBJXMNAOAQDFKGROSZCLOGIFAVCBIGRFIHXJDERHklIJPVGLBDFIIGJKYFJINSPcLFWHGFLPMEWBMKXAUGODGILDcIEFMQEJHWQMILGJYCLaWGFAATKQKFKEEAGBCMCBJDMHBJDCCbOROMIONKIOAXKADACDNGYHPGNDGPGNBOaFIAXYiPENGVCHDAiBAHCbEGdWBlDJAAJUIKKGYOPGBQTPQPMKHTFaMBVCdTAYETLKjcVAFDHHFAIlFfEEBEEDIACBECDBYBJFFCIGRfKVIEKKHIWKNvKCAYUIAFEJHJcYInLOGMMAJDDDgJBBiVMOEBDGSAODMJGGECSIPLDMAJQBACFANFCQADEBQRCEAfJEVKELMEBUEBSABEBABFATCCGPDPPFCFCEZGQMBHHEJBOFAEAELBKDDBGEAELGDNPIBEHFFIHDCECLPDAIDQBEEKBBBACGADMKAJCCCCCDLDCAAHJIFCACIMFHEFCDCBFICCFCADCBCFABAADBACBABAAAAEAIDFGBAABCACBFBACAHABGBAABACADDCDEADGCBCDCIADFGAAFFCGCMIBDFOJCCKCHCMOMGFMGLCEAIAAHBHBBDCEFECCCFGHGETCGDJFBAFGCBAEEBAFADCGMDBBEABDEACDGHAFKITHHOBEVSCHGGEAAAEIAEOAKBTEDCAJDDCGOBIFJKKTLHEQBPNMMLUACNXGyFDNDKHTCADBBEHJNCIHMIGEAEEDDKCDAAFECCFRAFBEIHGJDDAABDECFCCDMCHPABEADFABEFDAJDDFBCHBCFGBBBFBEDFBGDLCBDCBABAECBBEIBEEACBEBBEACDBLBDDDNBBECBDEBEFGBDEAEHFFCAGBGMFGCADDFFCBGCDCCDCAIAGCDEAAAHEBEAXACEABEXOAGAJJHGKKBWQGKKGEGNDKNCEDNJZCEBDCDCAGDCBAADABIAFBAADAICFIAEHBDDDDDBBABCDDCDABIBDABCCAGCJCACADFCBFEABEBHBFDDCAKCACAADFCEADGCAFOKHAEAAEMDTCFCKLFfGCOIGDMMDLJHPBMIFDICBADAEACEBENCIUIAUFGIXECJDDAFCDECDCHHGDDGGCMBFEBQQLFHAGIEIICFBMOEEABDFHDAEAIBHCFEFFCCTGADDBNDCDACGECFCHCBCGGACIDCIFAGHEBGBDHABTFWHGCNcNcNFOLKBHCFMGHQLDMWPBCLBBOSGHGAIHFXLKOAENiBODNADDVBIBSFBLFABEGUBFQEDCCCAAJMGEGIIKBDCKDAJCFJDRHNBLCRFJLVPOAIBDJRODMBFBIBrCEFDEMHHMAAFCCAEUBkADICBAcNBGBBDDAACCCCAECBBAECDAECEBDBAACAACQPLEEGFABSAGKKFEAKSBKGOIPGAJGMGBMGEFKJHORIJINFBCOABCEDJGCDFBCEHAGFDNFSPHHERCACFAEDBGBAICEQDILEFXACFAHDFJBDIDDOAAEDAHBBEDXIDQDEFHFEABAFFEOQBAGKCLGJAPACEGECAGMIAGKIDEGLJCGDBFGCMDLIDAFBECLRDDAHGIBHBBCOEENDFBIPOEGDEHDKBHHFFKMBETCDCFBBBFEMAALCMDDEKBEFCEGGIZLFAADACEAMBEFBHHBASEGLCIJMCFOHKCGAOFHQGGAHJGBJGENBAEQIUEGIAJPKBJEPCBMHCEAQBCCOFJDFAKMLLAFAECGICJEMFAGSVCBAEOLGJKMGLHIAATBBIFFGJIFKEBGGADEHMGJFGFGSBCRLSJAKEDGJHYACVNBCKREFBFAAHHLCCEcCBCFGNIECAHGLRNGGCPDDMCNBIBKDAEGHMBBQEHIFIGEDLBJIOFBGEGEBCBBMFAFHJFAAGANAKDLMFCGCHPIDICJCJTAAFDEBIFDGIJDCRKGGIICBALEBEHKUKCBONKEKUGECCIOGKFLDECKQDBFDAEACHIEEIBAAJIDGUFSDNJDIEFLKIPCLDGHKMALAIHQGHPOQHILBFEGBJGEDLHFMIAJJFGBDJFDEDFJCNHBEEACRHPAHJOGGHEHFNHMEDGGEHFDBDEBABHDFBEIEIOHNCCBHEHCJQPDDCRENSFLIAUEGLLDCHAKLAIIGGFEHMJUIBFCMBGCIJBHAMEHNAEEEBBAGBIFHHADHFJJMPDBAECIAEEMFBGFNHECQGAELEGCBBFMECCMHLDUCICJEGGJENGAAIELFYKCBBCBGQEFAHIMFDDBFDCGGHALALMADABBEFLEGDDFKNHDBFDDDCFIDCIFEXDHAGBKEAOCICAEMLAACJBBIDCBFECAEAXDBCCgCBMELIJHAGQCMJCHDEADIEIGGAFLJAEMDCCKEDGEEASFBHDGCAJLHAGIDGBUAMIEICHEHIAAABLHCAAIDGJGAJEEGLHEJSXGGDAEGGIFJEmKUCIKLADFCHACaDCQFKJKROGGAAGEBDFEMIIBHKFQAAIDGDBJCGGEGICBJJGHBFVBAVGOJFIMJHGDKGBDIBAKGAEJMDOADGNACIBUDAANCCCEFHBEHMGHEEUCCAFGJHUEACDEDFEEDACHTKABDCJJLCBDJKHBIEDBZEHGJBBBDABHCFBBGMEIABBBCCGKBIIKCJIBEBFECFEDFGDJCCDABBJBDGAIBJOGEACAGGNEEECCABAUOPJHLOFFFKAFQAKDGBDGRBQABBMRGICMCBMBNIBCABEIIBMBBBDFHGBMIIKKHBRGFFCNBPcFMEDAJDDEIECJHAIELJCECMKEBKGIACBBGGOCAJBHABHCBTACCKGLIDHECDAAKDIEGJAKSTDFCDFSHCCACDARMNJBODEJBBIFMAAAIMFGGCGELABFMKCBBIAPAFRPFDCDCEDWFHTHEHPGNCJBAGGAFFAKFICDBEQHBAOBMADLEAFFFSFFMAFIHDBREIDGAGJCPDDHBDGIADAKGNAEGBGHCBEMCCAKBHAFQAEECJMMMGJDDCJTMRADIFKIBSCGGAaGDDGJJAEIADBAMCFHKAAKFBIEAGDEVGFVBIBHLNFDBMBJACFBEDEEMHAIBEDELNHLIKCMENEAEGCBNAJCBBAFCJJBBDBGFFOHWMFIGdLUIOEELMREAHCBEDEEBIAHKAUFEEIFEPFCBGIALIFAHJECSEAHPSGAHJKBICEFGBFAGDCFBFVFCJKDCFEYHUTADFOHJKBCL9WDUBFKKFBDTCILYCAKIAGGTCEAGAFCCFEIAAFNOIBFEEEFHIAKGCCKCJNHPAECMVcHAJBBIFVGBHEBFHEJBDBDCJEFFKCEDAKDFHHEFAAKABKFAHFJFKIBPDDLBMGLGDGHIHDFBKDICFCAMCVCFHNAIPMAECBABGaIBFHFDAAGABOFHGFDLIDDRACDBGBDMHDJBEJEEGLFOEDNDLLFCBFOMAEBHJJBECQQEAJVEGDNEAUKDONFLHPCFCTHJEBICBODGHHKCBRGAOEIKKEFKHLEIHOBEeHGGAPEBCECJFECADAFBLCIDKIDIAGGGCABEBEICACABKDHJBIALHFSBABBLDRFBEAICTMQKECLABAGDCMAJBCBBBFKJSDFMGAFEQSHECBAANJLGBGEKCFEFQNOEPDBDIQDMLLAGADMALHCMGGKHFHBCHGABFADCHLFGFGHIEGEAFFCECEGQBLMFHHLGGJKENEIDLEAEBKUAHJLDAOMIAJCJCBCEAEAABDIKFGEBDFNNSEJIIFBLBACBIMDOHFDCGANMODHHNDDGBBGGADIFFXAEJAKABHFHAAFFBBCDCDBFIBFEFDFEIMBAILJFICBKGKFCRGFINFMPJNNIMACCEMBIFHAJBGMIGAWAKKSMJASREDLDEADOFGEEEABFBGCCQDMAHDIBNTCKABGQDCBCTHANCBEDFCBDBBAHCWCQAFJCEBLFDBHCEDQENDUICEGLAHFUAGAEDJCBBIJDKHFADLNGMDGEEFEACACGIFABRNFYNEGRBIFBCAUDICGCCKEGADKEFECBIJGDVAIAEILRDGCDCSHEBFDGBFEEDGALCDOILABJHMCSBJIADCEJLDBDCDFARCDBILHTBALQDAANFCGHKHFCAMJHBLMHHSFGMDMCHABKFGDKIGADBFYCAMFDFEGBCASKAGLDHBAHBGMDJIDLFPPAAHGACJBDbTLNBEKNAKBEABNHGEFAKAMAKLICFDAAEEOFJFKAGMDBCCQACXOBBDRHIBKJELIDPFEHAGGBLCEDAEJAGAEDFCEBKODAICQJFYABCDQHQRGFHMDFFGGLIIFDDCKAAJKDTMFJABSDGIMKGFJIDBDMACHEIKEPDHHNJHOFBBHBGKUHBEBECNHBEAMBASCACCISNNIPAHGCMTEPGEBBKLADNGNEAIBEQDLCXCEADDFIDJPLHODEBBIBIFMFALANDBQQAESOMEFKFTBFHABAJAHKAFKMBDFCGJFBCAIPMKHFNKGCCGEIBEJAHEOEGDKGNABMLVMJAEDUEFHBKCBFCBQBJNISCHAEALODJAOCHDFCIPBCFCGGJHAHICKFBUHDAIAKVFCDECLCBLBKDKGODAPDIBMDDCOHBDGBDMIKGGKACAGABAFCPCLAGCICJAFAIIKGFCCGHPCBEGFCFEMBBBqBECLDEIHIBCMGHAGCICJGCLDIAIIBBIDPADEFACADGHKIDFEBFNKGXEBDMALJWcUWEIJPKIBLKAYPFPOEAPCCKNUFNIBAFLNEGGEACQFCEMGBHPACFGJIKGHMGIFDCPAAEACTDEEEGJJGDFOEAHJMLFCEJBBCDRHDLGWLHBAECBOKDEFBEHHBBEIMEGAGAKKABAMBDMHPGCCGVKFJEHEHMRDBEIDMDICEDKBJDCDKIACFTGFFABKBHGGLDCFLTENRFCHEKHBAEHGBJEIBFLDRADAAEEGDFBQFCCCFKAAGEDDGDHAABHQMANDJBKHKEIAEDCGGUCCKCAKENAIDKCBJGAHOEKCFIDFJAFEDGCKBDFMCBSBADCBFJADADEBEHIQAIDNGEOBBBCBMCMAAGFEKBFBACGFJGEIFBFBGAKAJKBCITTAGHPQFFCCBGKFKDBACBOIEQINBFOCKDTCCDIFKGABBJMLFBQAGFGIRGAGDQFFJHEMDEEEASGAFCEVPLCCQFTKJHBDQTDFBMSKMJRJEHDNIHGADEGGAMAEBEDFBCGJIEANLAFEEICJCGGEIAEEBMDKQFJEIQGDBDCEMRNCWILFBEKIDHPcDJDJGCBBNMCDBINDADHTFBIOIGAGTdCOJGNTMLNGLIAPJVBCNTGABHDHDDKJGAMGEHNIFBKEIQFMCFFCMEGGJDEILDAGCEJAEGCFHIDHDAAABJAIEICLCRGIFBIALHIAHFBAJBICEKFHNDINJBJCONBHBIOBDKCKFEFHCANBLOGECMIMEBAHGGJGMDBEGRAeDNAAAADFMFAMJCHOBKACBTGFGAFBHEBBGCPCLGIEBDBGIBICFCCUJLGGIBGASDEKOFGDGQBGEIILCCHGKGDMGAHMPFSTOFEJLDCMBDCECFCDBBBEELCEHFTHQLCHCNCACFGAHCIBDMEOQBGJGDNCGDADADFDFIBFKBAACBDBCEBRMAQDDDHHEAEEFFAQWBAGKDJBNEJAAIKGAIKOIDIGGDAELJGEBBBGDKHHGADBDIAJPHDBJBIAHCBAMAAHAHACDEECBEDDIEFDAHMKAETAHEBBDCKCMCAJDOFBDIECFDIGCGVHBBAFACCIIDACHBDJBMCMNDMJOCBMFGECEGDCOCAADJGBHEGJABGSIUGEADFNIDJELIBOBBICUDAASJHDFBEIJDBAAKKIKEFCKNEEUREBFEMJKHQKENHIAGNDFMDDENCLMIBEMDFBLOCNBEDCMEIRNULAKEJIFFQCCTJACMNHFBJCEJJHICAUCIBHERGEDOHKLLRAKEHBCKEFHKBECCECJGBEOGHOFDEBDFCFKIFAGACFBDBAIHBJFLDACAFLCEAJKJCEBDVCBEEFKHVIGHAGAGFDCGNJCJGIGCIEABLICIAIWICAQLGGKUGAAAIQKEHTFGAKMHDDHBIBEFKOAIDDALGACSBMHHFFIAFLQGJAHFGFGICHHKNMIBPIMNIJFHBGFFECFNFAKGFJJFEFFNADAEHJIHLDKFACNFRGFDKAGDCDDJDGGFCIGLHFAFKCDHJABBGKEMSDFCABHKHBHSJFBARBLMDNGBSCEJJHGHAQJCIGGCDKLENWEBABGBMIIRFCBQEFTCGCGDICCCGJDHBHFJFFIPAACJCKDGEMFBOBJJIEWIBCHEDECANIECBQHTCWEKCBAGEFGNCEHCAJDWEGDHABEUIFGDIIDHBDHDAECDENANKBFCCEEBNEIBBAGNHCFBAJBFAEDCKDCTDLBIBKGDKAGACBELCAEHDHMFADLGEAGAZFBDIcAGMGJCFNEDKEOHCJBICHKCKIEAJHBCAKDGAEEHEGDGSDFADKEFLFJBDCDGEQLCMDIEFAFKBKBJPHDAFEACJGHRAIMJJAHcdIIBABEGKFJAkMeGMEJAAHGDABcBEQFGFIPOAACEKKBHBEKEIBBIDKBDSBKHAHAGGIIAEAJPIJCPTCDPAQLDDGBDGDICABEABMAHCBKDMGABJEECHUDAANBHKMDFJKFOCRCKQDBBDBLFYIDIAEHDCCBCGDTAFBFELLPABDDIHBMDBDRADKJDADBDEBDNBHBIDGCFAACBKICGKGEJKBICLGAFGBBGDJDGLHFEHBDKGMBLMMGEKCICLEGEDCBBEQMLDJHMBDBMDFMAIFGFAMPCIBCBITCEAKEAOBLIFAEDIIMBMABLHDNIDOKKMSJBRMDHCRBPYDQGJILAFBICALDCMELJECCIKCFIGADCCFGIMBCFCFCADEANEECKGLMFDBGDABIDIEGHBGYXHFCBDKJADCGHBPELHDMCBHBBIBMBEDMKDGEBEGLCBIKIECDKGPDFNNDJEBAAHODCXHCAHKLGFCCEGCFHDKDEEFBCQFAFMBIBDJKECFHSFBGABIJDBNAIJGBCLCTFFFBBICDJDKCPCEEAEHABIMCEAEBJBFQDBBBEOMQMHDAEHFONCBEDQGESBGKCQEDDEJDJCBCAAHIGFJIBDIJEICCEBEREHXFEFLLFJDCKDRBGLDCAEEKJAIDACCLLJJEGAGELCDGIBCRIJCDDBJDJJEDFAAADODWIHKDXJOGKBCJONEAJACGCAIDEEFOAUDEKEJGVJCAAKEJGBDFJMAQGCHPUADFLIDOGCFGCDAIDAFEHPPBHEAADCWJUJHABMRHOGKH5SHWABEGDBEPKEHOKGIGBCGLBEEOABEEAFGBCNROICFCGMHFQBSGBDEILLHHGCEIXYJBLBAEHTIFHEEFFMHCJBCAFBJHQIGHJIJAAJIFAGKBHOFAHJPLIKFNACLFQELIDCPBBFLGMCGCFCCGCRHFFDDKJGBGBBCBBOECBBDFAACAAQFHIHDDMDBRDCHDKBHGBBNBAJABELFKADHFNLFBELOIBAAPRJFCKUMCBLPBMGJEBMMLMLJLHNDHCRHDEBMGDKJAHJMAAPICQIGMKADKHFAIHOFAiHAGINCFMCBFFCCADEJDNCGAMADCEGCCKCDEFGKBEFCBKFJDCIDNFAQDACALBPHACBEBLKOGADDCBDGFDKCFBCBACBMJODDMAEAEGUBGBBDALBHCBIGAAECFQJKGPHDDEIJIFDAEBHOEJHBOGGMBFHBDHIDBDBBBLLACJBJEACEFLDCIGEKOFFMJBFJGEPKONGEJJIEEDGKCFFHBCSKFEHBJCDCAABAABDGQNIIEAAJLQCJKKACNFBABGKBOHHFAKEDMABHHPCDEBJCMFHCDDLEDDEMBACBAEAFDRGAAGHHBEDBKJFHIKIDCOLCFBCBOEGHCHQHEJHQNFHNIGCBIKKAEBFAFEKMKIAUGIMQMNCULEFJAECBMFMGBEBACCACGQCIEHDKCFNEIEAIODEDBNDEPAAGHDEBDDCBJBUIUCFDEGAJDCAJGIAKCHFUGAKGHCHDSJBDGFHCFAIJFGBHCBDHKMBGAEDACEDBAMDABNPJcHEGXLQDBKCSFKCGGCIGCDDMGFECJIJGARCKCAGJRBEABCOHABBFGDHCCBKAHCDIOJCEHJMEUCBGFABINRAIHGCFEPEDFGNFTDADSBAAPFEKNMJJIBMLLBLINGaAEQJGEDEFMDECEKIDADFUCCGBHFCMBBDQKFEHFAADBACOAFOBNJPRIBDGMCLCAfTLHDEKPCGDEDEPLCGHBMBOHEJEAFIECAGICHDGCGGABAHICDXOHFCJLEAQFCJGCNBGFABIDDBBADCFBICEDCEIDGMAAKCIHBWDDBAQFONIDBEDLLECJIGLABEKACFKALKFPADSHCKMICBHIHADODGFBGKGNDJFNLJMDLFFBEKSFFMCABNLACDMEFMGAACEQLLALADEMIRIPKMAEMJDFRGNEGIBASDLIZBCBCFBGHHHJHCCGBEIFGCIHBHDFBAQKIAWKICDOJPCDJADBBALEDBMIAFFGADADEDEJOMEBTKEGCMCMDBJCJIOGCBQGJABOTPQPBBBQGDFGKEACACSBLPMQCHCBDNOHJEKCBDJDMPDABCKILJALIGGBFOLBACGOfHDCAIJGCJAODKGGAANHEFKDECOLCFABCIIMKCKBGFDDHGFEJCFFGCIEHDDDMIMBAEGKFNBAAIDAFMQFAAuEMCVAGEFKBAICDBCDGAJGGTNMEICFBIFRCGEBBCGCELKMAJCHBRIIVEBBKCNFOYMYEGFLIKBLGBQHNNKBANACKNYJLGDCBFJDEIAEIGFIAIBDDTBADBHIKGDICIAFAFFEEDETAAEAGJBKLESEGJJIJHBCHBDECPDBNESLNDADABMEAGBBBLFCCCEIBIBIAEKCAAECDMHLIBGETSDLEFCJMRLDIMIMFEECEKLHCCJICCALbGHBIBMDJAKJFADJPCJLDCHBMHGBIJCECIGHFHBNEEGAABGHDDEBACGAGAAACFBCJFAAABKOBVAFAQJKCBCCHBKAQGEMIBIGRBMBGDBJELLGCCADKBFPEDCBKBBBBHQBIUEECBDDFAECFGCBDKOCIBJEBMCDCCBSHMCAIDGKBBBDAABFECCAAAEIDKAPMDEEPTAGHNMFDBCDEEBGFAFCAKCGKGLGFOEMFPCCHGJKGCBCJOHDDMEEDKIPEAIFMFDRDGODEBCGQIABDIPPHABIBRKFBDFONAFEEQIIJPFCFAHMFECBAECGMAIACFHBGGJMBEJNCFEEIAFCGACMBGGASCIODDCMQGHCDICITJCYEJFBKKGDDNWFFAJGECFNOCFDBNFCBFLFBIUGADEPfBODGPLKFHGHIBJLHABLPICBJBHCBIFKBKEEHNGFFOEKONSBAFCIKBGJDECJDBIFAFGGEAJDKFLFDEBADCEIOENCLMGAFGELCICHBCCHBEFCIBFRNKLRAHAOFADABCBAIACDIBAIFJCJAEBGKCIGBEFGKHBMBBCINCYDNEAEBBHGBAOFBHSDIGEDbGHACFCHMBLKETCHKCBDBCBGEIAFAAAAAACBACDCAABCABABCABBABAAACCCACCCAACABCABCCCDBCACBAAAADBCADADCBECABAACBDBAEBACBAACABDBABBGABBCBAACCEAAAEBCCABCBCCACAGCABCBBAABEABGABCCAAABBAAACEAAACABACABBBBAAACADBACCEECFBICADDCAACCAEAAECAAACABGAADDCCABBEACEBBCDDAACBFAACBDACEBCEAEBCBABCAACBAABBCACEFACCCEBABBCBABAADACDAAACABCACABCCABBBBBCBAEACCAEABDCCBABDEEAGBCAACAAAECCCBBADECCCBACCDABACCDCAACABAAAABBCABAACAACCDACCCCADBABADACCDACBAACBAAABBBBBBBBEBDABABBAACCBCAABAAACACADCBAACBAFCABEACABACEDAAAAAABBAAABBBABCABAACDACABBABBBABABAEBEABBEEABABCCDECDBEBAAGAEBACCGABBAEABBBAABAAEAACCABACBCCCECAACDABCABCBACACAACABAAADBCABACCABAAADABACGBDCAABAECABAEAFEEBCAAADAADCAAECABAAAAAAAECDBBACCAACFCCBABACDAEEBAAACEBBBAAABGEACACAHBDAEFBAADEBABAABACAAGBAGBBCDBBACDAAACAABCABEBEACCADABCBABAABDDACCACADACADAEAAACAACAACCDAABAAAAAAACAAACBAEACCBAABCAFACBAAAACAAACEAACABACADDBAAABDGACCAADAACBACACDABIEBBCCCDBACCDABCABBABEFAEBACCDAGCBCBCBACBCCDADCADBBBBAABABBACDBAABBACEDBAAECABGAACAAAABAAHBEHCAECCACAEBADBADCAAABCCADACAAAACCAAAABAAABAABAACBBACECCBAADBBBACAFBDBBEAABECBAAADCGBABCBBEAACAAECBDADCCBBBECCABCDBACABCCCBBACBABCLAAAAAAAEBDDCBCACECCBBABAAABCBBBABBAADDCBCCABBDEBABCBBEBAACAABAEFCBCCBAAACAFCBACCABCDCCGAEABBABAABBAEBDCDCECABAABCBACAEBABEAADEAHBBCCEACCCBAEAGBAAAEADDFABBBBEAABEAAACBDABDCCCCABBBACAACBCCBACACAAACABCCACCDCAEAEADAEEBBABACBAAABFBBDABBABDCADDAECECAAGBBCEACACBBAAAAAEBBCACCGDCACAAADCEAABDABAADEACABEAACDAACBCCACEEABABCABEAAADAACCCABCAABBBAAAABBABCABBAAAFBCCCAAABCADAAAAABCABAABBCACAACDAGBCAADABABAAACAEFABBBDABCAEBAEACCBDAADDCBBCCBAAAAAAABBBBDAAABACCAEAAAAAAAAABAABDBAAACCACAAAAAAAACCBACAADBEDEGBBBAABCADAACCAFABCCBAFCACBBABCBBBCBCEBCABACCBBEACACBAECACBAABABEABBBABCBAABCCCBBAAAABBAACBAAABAECBCCBAACBCBBDBAAABABEAAABABAADECAACDBABBABBCACDEBAABCHABABABABBCCBACBDBEFCCCCEBCABABGRCABBBBACABCCECAEBAEBADCGAACEBEBAABCABDBDCAACCDGAEBECEABEABDEACABCCCBBAAADDAAABAAAEAACDAACDAACAAABDCBCBBACABBABBBBAAACFACCBCADABHCAAAABBAAAAEADAABCBABACBAABBDDACCABCCAAAAAABBBCAAAABBBEAAAAADBBCAABDDACAACBDCCABABEAFCABCBCAEBAACABAADAADBBBABEADAABCABCCAADDBAGCCACBDCAAAADCBAACDCBBACCBACCCDAAACDCFECFCBECCIAAFCGCCFBBCCBCBACHECBCBABAAAAABBDACCDAAAAEBCAAABBBABBBBAABACAABDCBCAABBABDCEAEAAADCAAADBBBBDACCEABDABBACCCAABCCAAAAGCCBECACAEDABABCAABAAAABAGBCDEACABBDCBAAABADCAAACCEAABCACAAABBCBAAADCAAACACCBCBAACCBCAAAAABAAAAECCCCCBCCBABACAACABCAAAACBBBAEBBACAAAABCBDCBEBACBCABAACAAACCCBBAACBAEABAAAEBAACCBCABAAAABAAABCAAECBAFAAACACADACCCABACACAABABADBCACAAAICACCAADBCBCABAAADAABACCBDACAAACAABABAACCAABCBAAECBBACCCECFABCBDEAAABAABCACCCBAECAAACACABAAAACABEBBCAACBCAACABACCADCACDBCAHBACCDCACABABBACCCACACAAABABBCBCHBBABECCAEBEFCAABDAADDCCEDCABAABGAFACABCACDCCCBCABBECEDAABDAAACEFBBAAAFBBABBBABAABAADABACBCBCACAHEEABBCCABGDDEBBBEDDDDBAAAACDEABABBAECAABBCBCEAACCFAEBCBACCAGBCBBEABCCBBEAABACAAABBCCABBACACEACCBCBCAAAAABCBABBACBBAABAAAACCACACAAABABBABBADAABAAACBCCBACAAABCAAJAAABBCAABEAACACBCECDBAAACACEACBBAACBAEAAADBCABACAAABCCBABCAAADAAAAABBAAACAGCABAACAAAAACAAABCCCCFAAAACDCACCCBABACDAEAAACEECCCBCBDCBCBAACCBACAABBABEAABAAAABAGCABBBACAAEBEACACCEBAAABBDBBBCCDAABCDBDEDACABCBECCACAAAEAACCCBBADAADABAAADAABACCBEAABAAADCBACAFEBAGGBAEDDCDDGDCDAABAABEABCDABCEABAAECDBADCGBBACACBAAAADBCBACBCCBBAAAECAECBCBCBCAAGCEBAECAACAECFADAEAACACACABCCBBAACABEADAABCCCBEAEECBBCBBACBBBDCCCCACACDEBCAAABBCBCBEABCBBACACBABDABCBBAABDCCBDADADDBABBCCAACAACBACDACCAEAADABACACACDBCEBABAABCABEBCAABBAGAADCACACCBFAAACEAAABABCABAAACAAAEBAABAAABAABCABACABDCCACABBBCBAABCBBBABACCCAAAADCECCDBCBEABCDBCADEAAADABAEFBBACDAEAAABCEAABACCCAEBAAABBABAAABAAEEADFEACBFAAAICFDFCCDACADCABEBECBACCBACCBACCACCBDEBBABAEABFAAECCBDDBBABAACCCCCACAGCCCCEEAABECCAACABCCACAAAACEBAAFDEGAACGCCACCBBCFECEBAAAGCAABAAAACBAAEAABACDAACDDAACADCBAAAABBAACCBHCBCAACDFAAEAAABBAAAAAABBFCBBACAAACBCCAADAAAFAAAABBBCBABAEBBBAACAAAAAFBBCAAACBAACBAABAABAABACCACAABABADBAAAACACAACFBCGGCABECBBBCAEBBBBABAEECCEACAAAAAACBBEACCCAACACBACCAAAACEBABFDAECACBCAABBDAAAGCGABAAHAACAACABAAAAGEABEEABBBAAADCBCBBFABACADAAECAACABBADBCAEBEEAAAAACFBADBCCCECCAABFCACAADCFCAADAABACCCAABCBDAAAAAAAAAACACACAAACBBABAEAABDAADCGGAADADGACCAEABHCAACCBDDBACGEAABBBCABCABBFAAAEEAAACCAEALCCAACBGICCADIBCBCCCEAECAAAAAACALBAEEBAAAACCBEGBBAEBCACBBAECABCAHCACBABABEACAEAGAEAEECAADEACADECBABCBHABADDABBAACBGBEDEABBCBEBCEHEGECCFACPCFBEEHABEHBEGFHGAIAGDFbEBBCBGADJCAHICMBDJBCGCCEGFBACAFHBKDDFEDEACCDFCBDEQCKDCDUHCDCKCDHOBECEGCBHCDOFCDUQCGAEADAIEECEJFIEBABFGCAAECMBACDLHBDDCBLCCDNBJDHECDDIABBDBHBElAdGKCFKBEABFEBAAWDDDFEMNPIGFFSDIBDBXCADEBHCCJaFGPnGJKBMMIJOiIGLCAGIVRKIIRFODZCDELvBfSEaAFFjCLPCMNOMRDJErSFnFUBTjAJKMFIJjCOCGHGBAGCKDBBMQAFQEEJGNHEXKCGBWHDHGC1TAAMLEEIFHKVTMDZDCIGHJLRnGLKPBjbKAGGMDbYEkBCgQOFBkAKLQiIAFGSJNDCnCCoHIWLEJGFPEKHKOmDLKBTMSWOUCeSLBODPHMKFJLYCFPDPiAOTDHePKDJXSREYTCPBSCPYKDNAHEHFMjUDFIPQGAKCTEOJBFIQNCSBKBcHHCCFDGNAEECHnZMTJJFBHPFUDkKHkgJnAuJRBjDPONHFXCHFIIKDDRedPBFCYVDFKJKFPKFCNRDQHVNHGIIJNTOGATWQmEBOAHGCZTKBPOEDDDDNSbDFPGVHFVNEMCEPcMTSTFJNDHSUEJGKFFUJCDdFfEGAICBIOFCbFNAGjBFBERTSMLYJODEGFLCBDUBFMhATHRKAZIEHHIKNFEHOGGLGrCUMdOhnFGdTNGRQsSQCHFACDJBBCEREDBGBIdDGKJFDENFCWEGKWTTNrkPHTLBVONIAXEIJJJrYDZaNBBJrONEZBdFKNIjIHDaLaMEIADIHSRGWabTIBJKHHEkaOPEJCXEAAHNIAKNHEMBAERJHmKIBTCBDJaAYUKKDLIBLyNCBgCAHQGAeCHQDgNJEbYSBCKLeBAHiaFKDEBYIQBCWDEIEPCYINJAJNBiAVRWDaEALAIIJDAZLSANpEAUAJR1QAGKvMIbnQRHLhXMSHgVCzEDKBGOEDhkDNJXMEQQJOCIGhEFVPBDqBRPSEBGBFVGELHSVaBXEOX4HNDLNbYBHPNTBWXLIXEGbEZXCFQQXQEVFRZBbFNAAAABACBACBHBABCAABBBAACAABACCCCCEBAAACAAACAABABACBAAAAAAAAAAAAAAABACAEAAABAAAACAAACAAACAEAAAAAAAACABABACAAAABCBAAAAAAAAAABAFAAAAAAAAAAAAAAABAAAAACCAAAAAAAAAABBCAAACAAAAABAAAAAAAAAAAAAAACCABAAAACACABABAAABAAAAAABACBBACAABAAAAAAAAAACBAAAABACAAABACAAAAACBBBACCBABCAAEAABABACACAAABABABCBAAAABCEABAABBBEAAAABAAAAAAABACBACAAAAAAAAAACCAACAAAAAABBAACAAAAACAAAACACAACAAAAABACAAAAAAAACAACAAACACCAAACBAACEBAAABCACGCCBCCCACAAACAAAAAAAABCABAACBAACCABAAABCAAABAABADACEABAACBABAABABDAAACAAAAAACAAABBBABCBACBABCBABBBCCBABAACAAAABBCCABCAABBAACEBABAACACAAECEAABAAAAABCACAABBCBABAAACBABBACABCABBCADBAABAABAACAAAAAACAABCCBAAABACEBACCBDCBCCAAAEBBAACACAACACABAAACAAACAABAEABBABAAAAABBAACBAAAAACBABAAAAAAACAAAAABCADBAABCAAABAAADAABBAACACBBACABAACBAAAAAEBCAAAAACACACAACACAAABABABABBEAACAAAABACCCABAEBAAAAAAADABACBAAAAACCACACDCAACDBEBADCCACDABCACBBACCACAACBACBACAACAAAAAACAAAACCCAABCAABBACCCAAABAAAACABACAAAAAAAAAABAACCCAAAACAACCBABAEACAAAAAAACCACCCBBAAEAABABACAAAAACABAAABCCABAABCCABCECACABABACCDACBACBBACCAACCACCDBCBCABBADCAACBBAAACBBCABAAAAADAAABBEAACEABBAAAAABBCAAABAACCAABAAACAACACAACAABCCACBAABBAABAAAAAAAAACACBADBCBCAAAAAAAAABACBABCAACAADBAAAACCABACDBAAAAECACAACAAABAAAACAACABAACAACAACAAAAAABAACCAAACCABABCAAAAAAACACAAAAAAAAAAACAACAAAAAAAAACABACCAAAAAAACAAEACAACBABECAABACABAAAAECBAABAEAACAAAAAACACBABBCAABACAAAABACAABCECBABACAAAAEAAACABAAAAAACAAAAAAAAABABAAAAAAABAAAAAAAAAAACCAAAABAABAAAAAAAAAAAABABCBAABBBAACBABCAABCCAABCABAAAAAABABECACBABAAAAAAAABAAABBAACBABBACAACBAAABAAABABBAAABAAAAAAACBAABABAACCBBBCBBBFACABABCCAAAAABBCBADBCAAACACAACAABACCAAAABBABBDAAABEABAACBAACBBCCAAABACCAAEAABEBABAAAACBBBBCAABCCAAAAAACCBAABACAABAAAAAACABAEAAADBACCCBEABABABABAABAAACCCABAAACCABBABBBBCABAAABAAAABCAACACAAEAAADAAAAAABBAAAACAAAAABAACBBAADBBACAACAACBEACDBAACAAECBCACBAAABCBAACCAAAAABCAABACCACCAACBCBAAEAABBAACAAAAAACCABAABABAABAAACAAABCBBACBCAABAABEACABBABAACAABABAABACAAAACABAAAAAAAAAAAAAAAAAACAADACAAACAACCCEAACCCAACCBABCAECCDAAAAABAAAAAADAACABBBAAACABCAAADBADEEAAAAACBECAAACCAAEEAAAAACDACBACAAAAAACAAAAABCACABAD-JFfSWQmKgYDeaQz-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DEANEGBEEEBAIOCJCKXCHGAEGCEFADAHHDHLABEBCAQCDBCBQLCNDLFAACCEFIEAEABAHHBAAFAADEJFKCGGBDGJEGAEADEHBLEYDOCBCHDAJEBBNCANLGDJBBJIABJCCJBEIADIGAJCBCCDFCDGHLHFGIDFDDCACBDCEPFEICIHKCCCOOYAISGFEKFBQGHICBENBGDBJIGKCAOEEEAODECBCBIVBBCFBFBBGDGCJCACBBOCAGEGBADECADNDBKKAKTKBRAFEAFECBDDBCGHIFBBGMEDCBFGEDHCHCIBAFDDDBHFGDCBFHCEIDABGDIAEAFEJHADFACEPHCDSHEJOIAJHAFLFCDAABBCBAPDAFFDCDJIEBJSFKBCCLDOAHJAICDGJEFFGDAGBIGCBAFQHEGAHDJBJAJCJiPIMDDAGSFCEFCDFAIBMSFFEDAANCAGADAEBEOGLGANCIEDDIBBEUCGAEIFKFGIHIAFCEKCLCHGEEACRAJFDIAGEEIKHBKALCGFIMDDEAEMIFBEGNKHFAICBFFLFFBCKABBICADIACGADAKBFDADBGABJHCEGMIJYsKIeGCEGGIJEHHADCFFKCDCHAGDFBCIGCHAAEAIDBHBGBFAEAHDGCDBBAABDCBAEDGBCCCCAFOBUCYDBGlEJCAGJCCCIMHBNHECBQFAAFAFEZCIDMFCLMIPCCDBNKEDCLEGKGABIDGABJDDFEAEBECFHAHQLQBCNCDRSBLADZhEEOBBARJADDFLBDGFCFEDFAAGDBGEBCLBJOBABLDBDDDADAEHDHABLCBECFBGBEHGTKCKHgOICHCBIAEEOFDACDNNJDQEHMDGEKDHIEDICbFHBGPBEAEGDHJCADEGICBDDABAFBICBCCCBGJDBDHKOeFCREBECCBCFIDKEBKBBEKOFGACECMCCBECDIDJELNAJICGAGGFFGBEDBCABFECABECJDKJENAABUATHOQGMIAGEAFJCHGCAHTBMADABEMCDGFHGEADQJCFDFFACCEADJCBAHACGECCEKHDODAFKDBCDNBTBICA2GQLFHKABGGDEBHABJVLFHLFLGMCBAAIHCFDINIGBCIBEADDIDEJNEHBJIEAEBIEHBEBGFAKBKBBEKAaqokMLECGaBDDNDPFCAJDJGIAFCJDCLCIHBNCLNABDJLCABAAAECEGIGHEBCDGLGDFFBGBCCBDCAOFPIJJLKEQCCBEAFBBALLEIDBGEEJCBEAAHDEJERIHCDCGDJCCBCJBDAGDBAJBAAHAIABCABAGAHIBAAKIGFEEObEKHAAABFCFGDJHCKBCIBKHFFHADAKHEDCHOCBDIKCBCABCCBNADMIDAEAKJGEHAAACCGICDDCCIKBDAFMVAAEBBDGAAMBEBFLKACDCEGFCDBEEDJCAGGFGBOGCCBLCCOHGGHBCBBDCABBIACAEHBABAAMGBKOBJHBYAGIACHLBBGJACTEEEADOCHFBABBCBAGEJEAEIMBCGGCBDCADHBAEECFDAAFCGBDGDDGDKCDCJHANYOAHACBBADGOQABCQIOBGDCMIAFBEAACFUBGJAHEOBMDBAFKAEMAHBIAIABDFGFCFJCHKaAJGBESEDDKYCUWGKaGBDJGCEKBGCANAMGGGJMBDFAGAAACABABGCDKECQBAFCBDEEBHDEAIDDMACFAEEAFFGHDPLAKdPBbAHEDCADBHAKIENIBLHGMAGBFGBBCAGBIbEDFBDBECCCECAEGGLABAEGDGDBEAAFDDAPCDKFFEODYBKFGBLBBFGBDBAAAACJEFIAGBBKGNCODFHGJHGAEHGCCFDDFHFCJFCDIEHFDHEIFDLEDLAKECFIAJHIPORAOCEAACBAECCABAQAEKBHJBGBHDFCEAHDCEAAEDICADAGBAADFDAFHFEDGHECBBEAGEBCDGODMFLMDPLHADIBBBAHBAJDDGXDEOHIBBJBAFDDJAFEHBBCDCFBEIEADDBCGCAGEBGFGBCBFEDAACAGABJENHEFHMEGHDHAACDKGAGBDAIUAFHDSFBFCKBCDBGIDYAAAOUGEBDDCAAEDABJIBCABJBCAAAEBABBEAEIFFFKGhJFNBECBBDDDFECEAFFBGDFOGBFACHCABCIEJHFABIAABBFFADGACEDIBBADADFAGBDBCBEBIAEALBKXeFLUBHFGBBDFCECAIOCGBDNJEEAHFCHFABDLQGGBFKBCBADCAAEDAABBEECEBEDHCFEBCACEHBIIOHEVNBCGEAEFEDCAAJCAGEJFAIEFCBEDCAHGHBAGPBECKFADHBFEEAJHGBEFAEAEKDDEHMAABBCCBAJCDUJHMdOREAAADHICBGKBGIDIOGBCACBADAEGGLDBCBEKDFCCCEBGCGFGBFEACCGGCBJKCBEAGEAADSGOCIADJVELEACBBABDAEHDEPEHFPGMLEFGOFDLEEDEJBBNKYADDCAFEFABIAAACDBDAFIHCABCDADFDAHNHCAUQMBNHBACEEKCCBFBENFDHGQCAFCCIABKAFEKREFCBIBECEACEGBGCBKFBBGAJECCABACACHIDEFEEKTEMQEHAIBEECQEHJGDBBGDEGOAAKDIJGIANCHDGCABEHILLBBAHBFHCDCDABEEDAGAHIABEKDIDEPJGCFQCPKAICKBDLBFEFFCBFFKENEHBKDBCBEAENAFQCKBAFBFGDBGECJBBDGACGAGFABAFMCDDBFGDBAAMYFA-wAGKIIBCHLEHAAGMKDMIJSMBLBCNABHIDCADCDBAUCIFDDAAEECJPFDEFBDIEFMEPBACDCACGGBDBCNQJEBBBECIDDBDFBDBECNGGKKJBCIJEEJBKHCQDDIHZCEDEADFCCAJAOCBACDGCAAAEDDGBCCCJNBCBIVEGYGEJAFBAAAFECEBEHGBBDNADNBGDDEAKMBKABGBUGICAFFBIFEBAFDBAECGFDKGBCACGGACBGABLHSVGDBBBGDCBFBBAHCHGHAEBKLDCCADBFIGRBDECBCETABEEGDFHCCBCKAAEBKCBAFBBFAGDEBABCIELEMDRQCAEEAEEKCGAGACBFGBGFBGLEBECLGDUDDJBCHCAABCABECEFBIDFBFDFFCBAIFGADDEJFLOQIAGDABEDgDEFCDGBBBLDFAAADCDOIBEKEJDOHBBFADABEHBDDADKAAJCFDGCAADDDBBCFBCFAFAEAGFRBNIGNIDGGEADAAEEBAFBGEGAGHIACABIBLAADBBACGBGEFcIFAAGBBDFIOEAREICAFACDBEADBEADEIHGBFXFDhAeAGCGCACAFCEKAGGDLIJOEFCAFCDLDIAJIFIIBBAIAFDAAAAFBCADABABBGICAKDLBDEAGBUFMAAERIaCCBCGAGDEBIKECEOFELGAFJPGMEHOEKBFQEHCMQACEBBCBGCCGFEDEADFCDDKGCCDBIBBAKHARJCRvnHJDCDBACDDBFCKCLJIADCAIIABCCLKBVEENAIHDBCBIHDBDEBQCCBDEGCIABHGEBBIEAECDDEHMPDQiAGBBBCDECDDBDHBCVDMEHGHAIBDAHBAAFDHCGCDCJBGCGCCDCCEEEOCACAGBHCCECABCBFCHFLHBCBDiIFHEFBAADIBAAQACKGFGECHKEDFBDEKEBAGEEBCMFEIABDBAFECBACJEIAEGAFGBACKICCABFFIJHAJHDIMADGEFFICCEGCFIEBFDFFDCIAHDAAGODKGFGGLKGIEBKBBDAJJFKDCBBCGDECEIABDAGEBARCMLMCADEGFDAFDBFBGCBBDDHAFEGDDBLFKEFKGFGHEGHABMCAAFJEDCDEJACACECEQGFMECGAEEDDDKDOEDBBNACXEBDBECBFALBIBCDHKGYODFCCFMSFJRIKDCEBMKCCBANCFABDJHAIAABHMCBEDLBIADIBDCQHEDEGGCEWAFCEBBACGEFBBBGAEJMKBHFEHDEACKEGBKICCSCKEEDFDCAPBFGGAFEBDBFDCCBBFGGECDDEFHOHFBHEAHECBHAHGCBBBeECFOHFCHFBLEAFCPEHKAECIICFCHGBGDCGQDBHBEBKHIBLECAADBAFEASEBEFfHOGBAKCCGHHFEGEGAJMEIBKGFICBEBCEBBHMQHECPNCDICMDAEBFDEKCFDBGDCIAEHDCGBJGDDHDKXDCBABGCEDFEHCDDCBAKMDFBOFBBHCEAECEBAKEFFCAIDCJBCGBECFCGMJDBAAIFECBBGACDGACCGSBDIAIPFQGDGACCFCCBGFBMQCHFHFTFXBEMEFCIMHHEBABIHCDGDFAICEAADABDDBDKEGCACFDDBEBHHABJICbVWGDCCDHGAACECNBBPEACNKEDCJBBHBGABACNCGFMIDEGDBDBAEMICKDAGBGDHBEEGCACEIHGGLFbIPHbnBCHCCJDAFGGECEFJGBEBIGDKBHAAJEAKEDKGFCFBAGABHAFMBHFPGGCDEEEEJIFIABCGHBJCAMCEKhVGBMADCHAAFGCDCDJFIFHNTDAICEFFDCGBFEFHCDLHBABEKAECCBBEBABFDBDJICICCBGEGCGDBNAPKBGBBKBHDJFBCHGFBCFRGKDDIGBCIACECFADFMEGFAFOBDEFBBDBHIGKEGCCDDCBIHACBBFGFECDBJKMJFeILFCACIAGADEBCBJHCAGGJKGYDCFBAEJNIMAAJGBLAAAEADEGGGDIBGCCFDCBBKBPBBCBAAGEBBEVEVBDCaAABABAFACDIEBAIGGHKEBEBIJAMCDADCWFECFACFCCAAHBIECEBEDBBCGCABIACGFBCDFCCBGAKQCLFUHBIECCDKBIDCGABDJBTJAIFFGEHBAMGJNBGJEAEGKCLAGKDMAFFJBCGFCGDEBFBJBHFFCIBQJMJRDWKFCBEDGBDDEEAAGDGBHAFGBAEHOAFDEEBKBFADDIEMCEEGGEJHHHFEDDABGEEGGEDMHFIEBBMCEKDQFBGBDGAAEHHEBCAFGFDMELNCCEACGDNAOQCDFJAEJHBHFBKBADDAMAAEEECBJFDBAMDJDGAACFIABQGOBRGPEAAAHCHFDCAAAHDOAFDCCLBBBEJFBBCCBABAHSAHCABBICFGEEDDHDEGNBCNBCBKFHLMDECFJMFWZFIfFHNACAFDEDHCALMIEGNKAABDDAHABNGGBDKECNADCFFDEBANFCJGHFBGHCGDADDHFACCCAMCBCERfPIIAIBHGBABEACAFBLKADCOBECEBDAAQABGFEBALFFDGCACDEFEEHAGBEIADDDGGDCKBFEBJJDGCEEiSAFHHFCDGEYCbFiM5CfTQ2iIOOEqTcBPkSVyZhbZHIniQUDKGWiBEMLBkaRBPSCWYHoJWQje9OPLcSRNQNi2mssyeoqswmmmuysU48ummksa86uq6oyukqe2iswyskmqosqiuwkoeeek4wmuwiqwegi0ggwoycqqmmqesugmmykm64mg2igwcgaugmqsukooiooemickaoqo2-icsiiqcmcmgkqmmcmkioomikgicgimuymeoiimYmYkmmsikYqgiqmmkmggigcos2oigkcqWkSsoooioYqciqqiioicmoiq0ommcmcecqcmkqsmkeqke0wgggoeosoqsmskiqceaqamiqqkkeqke0wgieoekqqssmwkiogeaqcmioqkmgokeywgiemeisqssoumioeecqamimqkkimieywikeoekqqssoumimcccqckimqkmisie0wigeqgkqqsskwmgoAOS9SpjHHHBCEJLAGOBQMtWALJONNJNALcNTLGCKOPQCAXVFCgRDIteJDHHJNFAKREKRbcHgIFIKSFJDHTYEDLjKQHHUNTQWRCMDKHADaHeUOLDDONGHVKLIQBBOJLaQAGQeBKCLSYNiAJHPINCHGFGBALDSPYJKCSFSFdQGNCNeIVBPMVLFBIcAFFIYFBDCCeEARVMJZOKQNJHFDHFgJDIBFJODJEGMUIAALCMNIJEEDALGFRBaPHCFFCIJNOKAGSOnHDDhDBCFCNFNIALFBEBNKFMJFSMOHARUHNFWFHCMKBPPKRZOJDERFAKhJJiKAEKThARFGSWHVJPJBSCSgOUPPYaFNbSOOSGBRLGFNJHFOBdLJLPGQReLIKeAVEQcMMQfhVgJVLCIeUTEtKjUBSMGDUOjlkFBVBWKRnmdYTHMYNVDVLDIAEOAKCAGjHCURSCVXPAEDdBHIRXVLDLdNRLQeIIWVGHEJMNIGAfNFZEFeCXBFJDNFDGMOAIKRJHQAEMZnnaECXHCGFLFGDGCFIaHRRKMDUkFBCIJRGBINTKGQGPVUGEROEHRPRCSLQIKIDMDDSJEPQP-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-acGOeaCEWdidHcdbjFfbBcMjKC";var oA="enable f16;struct xe{a:u32,b:u32,c:u32,d:u32}struct ye{start:u32,count:u32,e:u32,c:u32,f:u32,g:u32}struct ze{start:u32,count:u32,stream:u32,h:u32}@group(0) @binding(0) var<storage,read> M:array<u32>;@group(0) @binding(1) var<storage,read_write> Jd:array<atomic<u32>>;@group(0) @binding(2) var<uniform> F:xe;@group(0) @binding(3) var<storage,read> N:array<ye>;@group(0) @binding(4) var<storage,read> i:array<f32>;@group(0) @binding(5) var<storage,read_write> wa:array<f16>;@group(0) @binding(6) var<storage,read_write> q:array<f16>;@group(0) @binding(9) var<storage,read> xa:array<ze>;@group(0) @binding(10) var<storage,read_write> kb:array<f32>;@group(0) @binding(11) var<storage,read_write> l:array<f32>;@group(0) @binding(12) var<storage,read_write> G:array<vec2<u32>>;var<workgroup> j:array<vec4<f32>,1024>;var<workgroup> m:array<f32,2016>;var<workgroup> Zb:array<f32,128>;var<workgroup> ac:array<f32,576>;var<workgroup> lb:array<f32,72>;fn Z(bc:vec3<u32>)->u32{return bc.x+bc.y*65535u;}fn Xb(cc:vec3<u32>)->u32{return cc.x+cc.y*4194240u;}fn hb(Kd:f32)->f32{return 1./(1.+exp(-Kd));}fn ib(ya:u32,Ld:u32,Md:u32,s:u32)->f32{if (ya<Ld||ya>=Md){return 0.;}let aa=M[ya*2u];let O=M[ya*2u+1u];let dc=aa&3u;var t=i[0u+dc*32u+s];t+=i[0u+(4u+((aa>>2u)&7u))*32u+s];t+=i[0u+(12u+((aa>>5u)&127u))*32u+s];t+=i[0u+(140u+((aa>>12u)&127u))*32u+s];if (dc==0u){t+=i[0u+(268u+(((aa>>19u)&255u)&255u))*32u+s];t+=i[0u+(524u+((O>>15u)&127u))*32u+s];}let Nd=652u;let Od=O&127u;for(var za=0u;za<7u;za++){if ((Od&(1u<<za))!=0u){t+=i[0u+(Nd+za)*32u+s];}}let ec=(O>>7u)&15u;let fc=(O>>11u)&15u;if (ec!=0u){t+=i[0u+(659u+ec-1u)*32u+s];}if (fc!=0u){t+=i[0u+(673u+fc-1u)*32u+s];}let gc=(O>>22u)&31u;let hc=(O>>27u)&31u;if (gc!=0u){t+=i[0u+(687u+gc-1u)*32u+s];}if (hc!=0u){t+=i[0u+(718u+hc-1u)*32u+s];}return t;}fn Id(mb:u32,H:u32,Aa:u32,Ba:u32,ic:vec2<f32>)->f32{var Ca=i[23968u+H];for(var P=0u;P<5u;P++){if (mb+P>=Aa+2u&&mb+P<Ba+2u){Ca+=ib(mb+P-2u,Aa,Ba,H)*i[36905u+P*32u+H];}}Ca+=ib(bitcast<u32>(ic.x),Aa,Ba,H)*i[37065u+H];Ca+=ib(bitcast<u32>(ic.y),Aa,Ba,H)*i[37097u+H];return tanh(Ca);}fn Yb(Pd:u32,Da:u32)->vec2<f32> {var jc=i[38153u+Da];var kc=i[39209u+Da];for(var ba=0u;ba<32u;ba++){let lc=j[Pd*32u+ba].x;jc+=lc*i[37129u+Da*32u+ba];kc+=lc*i[38185u+Da*32u+ba];}let mc=hb(kc);return vec2<f32>(mc,(1.-mc)*tanh(jc));}fn jb(nc:f32,oc:f32,Qd:f32,Rd:f32,pc:u32,Sd:u32)->f32{let ca=min(Sd,11u)*32u+pc;let Td=tanh(nc*i[24000u+ca]+oc*i[24384u+ca]+Qd*i[24768u+ca]+Rd*i[25152u+ca]+i[25536u+ca]);let Ud=select(oc,nc,pc<16u);return (Td+Ud)*.5;}fn va(qc:f32,Vd:f32,Wd:f32,Xd:f32,Yd:f32,Zd:f32,ae:u32,be:u32,ce:bool)->f32{let z=min(be,11u)*32u+ae;let de=select(i[28872u+z],i[29256u+z],ce);let ee=tanh(qc*i[35472u+z]+Vd*i[26568u+z]+Wd*i[26952u+z]+Xd*i[27336u+z]+Yd*i[27720u+z]+Zd*i[28104u+z]+de);let rc=hb(i[28488u+z]);return qc*rc+ee*(1.-rc);}@compute @workgroup_size(64) fn a(@builtin(global_invocation_id) fe:vec3<u32>){let nb=Xb(fe);if (nb>=F.c){return;}let sc=xa[nb];var ob=0xffffffffu;var tc=0xffffffffu;for(var pb=0u;pb<sc.count;pb++){let qb=sc.start+pb;let uc=M[qb*2u]&3u;if (uc!=1u&&uc!=2u){if (ob==0xffffffffu){ob=qb;}tc=qb;}}G[nb]=vec2<u32>(ob,tc);}@compute @workgroup_size(64) fn b(@builtin(global_invocation_id) ge:vec3<u32>){let vc=Xb(ge);if (vc>=F.a){return;}let Ea=N[vc];var wc=0xffffffffu;for(var rb=0u;rb<Ea.c;rb++){let xc=Ea.e+rb;let yc=G[xc];G[xc].y=wc;if (yc.y!=0xffffffffu){wc=yc.y;}}var zc=0xffffffffu;for(var sb=Ea.c;sb>0u;sb--){let Ac=Ea.e+sb-1u;let Bc=G[Ac].x;G[Ac].x=zc;if (Bc!=0xffffffffu){zc=Bc;}}}@compute @workgroup_size(128) fn c(@builtin(workgroup_id) he:vec3<u32>,@builtin(local_invocation_id) Q:vec3<u32>){let da=Z(he);if (da>=F.c){return;}let r=xa[da];let tb=N[r.stream];let A=Q.x&31u;let ub=Q.x>>5u;if (Q.x<r.count){let Cc=r.start+Q.x;var Dc=G[da].y;var Ec=G[da].x;for(var Fa=Cc;Fa>r.start;Fa--){let Fc=M[(Fa-1u)*2u]&3u;if (Fc!=1u&&Fc!=2u){Dc=Fa-1u;break;}}for(var Ga=Cc+1u;Ga<r.start+r.count;Ga++){let Gc=M[Ga*2u]&3u;if (Gc!=1u&&Gc!=2u){Ec=Ga;break;}}j[Q.x*32u].y=bitcast<f32>(Dc);j[Q.x*32u].z=bitcast<f32>(Ec);}workgroupBarrier();for(var R=ub;R<r.count;R+=4u){let Hc=Id(r.start+R,A,tb.start,tb.start+tb.count,j[R*32u].yz);kb[(r.start+R)*32u+A]=Hc;j[R*32u+A].x=Hc;}workgroupBarrier();for(var ea=ub;ea<r.count;ea+=4u){let Ic=Yb(ea,A);j[ea*32u+A].y=Ic.x;j[ea*32u+A].z=Ic.y;}workgroupBarrier();if (ub==0u){var fa=vec2<f32>(1.,0.);for(var vb=0u;vb<r.count;vb++){let wb=j[vb*32u+A];fa=vec2<f32>(wb.y*fa.x,wb.y*fa.y+wb.z);}var ga=vec2<f32>(1.,0.);for(var xb=r.count;xb>0u;xb--){let yb=j[(xb-1u)*32u+A];ga=vec2<f32>(yb.y*ga.x,yb.y*ga.y+yb.z);}let Ha=(da*32u+A)*4u;l[Ha]=fa.x;l[Ha+1u]=fa.y;l[Ha+2u]=ga.x;l[Ha+3u]=ga.y;}}@compute @workgroup_size(256) fn d(@builtin(workgroup_id) ie:vec3<u32>,@builtin(local_invocation_id) I:vec3<u32>){let Jc=Z(ie);let Kc=Jc>>2u;if (Kc>=F.a){return;}let ha=N[Kc];let zb=I.x&31u;let Lc=(Jc&3u)*8u+(I.x>>5u);var Ab=0.;var Bb=0.;for(var Cb=0u;Cb<ha.c;Cb+=32u){let Db=Cb+zb;let je=ha.c-1u-Db;let Mc=Db<ha.c;let Eb=((ha.e+Db)*32u+Lc)*4u;let Fb=((ha.e+je)*32u+Lc)*4u;var w=vec4<f32>(1.,0.,1.,0.);if (Mc){w=vec4<f32>(l[Eb],l[Eb+1u],l[Fb+2u],l[Fb+3u]);}j[I.x]=w;for(var ia=1u;ia<32u;ia=ia<<1u){workgroupBarrier();var ja=vec4<f32>(1.,0.,1.,0.);if (zb>=ia){ja=j[I.x-ia];}workgroupBarrier();w=vec4<f32>(w.x*ja.x,w.x*ja.y+w.y,w.z*ja.z,w.z*ja.w+w.w);j[I.x]=w;}workgroupBarrier();var ka=vec4<f32>(1.,0.,1.,0.);if (zb>0u){ka=j[I.x-1u];}if (Mc){l[Eb+1u]=ka.x*Ab+ka.y;l[Fb+3u]=ka.z*Bb+ka.w;}let Ia=j[I.x|31u];Ab=Ia.x*Ab+Ia.y;Bb=Ia.z*Bb+Ia.w;workgroupBarrier();}}@compute @workgroup_size(128) fn e(@builtin(workgroup_id) ke:vec3<u32>,@builtin(local_invocation_id) Nc:vec3<u32>){let Gb=Z(ke);if (Gb>=F.c){return;}let x=xa[Gb];let Oc=N[x.stream];let k=Nc.x&31u;let S=Nc.x>>5u;for(var Ja=S;Ja<x.count;Ja+=4u){j[Ja*32u+k].x=kb[(x.start+Ja)*32u+k];}workgroupBarrier();for(var la=S;la<x.count;la+=4u){let Pc=Yb(la,k);j[la*32u+k].y=Pc.x;j[la*32u+k].z=Pc.y;}workgroupBarrier();if (S==0u){let Qc=(Gb*32u+k)*4u;var J=l[Qc+1u];for(var Hb=0u;Hb<x.count;Hb++){let Rc=Hb*32u+k;let Sc=j[Rc];J=Sc.y*J+Sc.z;j[Rc].w=J;}J=l[Qc+3u];for(var Ib=x.count;Ib>0u;Ib--){let Tc=(Ib-1u)*32u+k;let Uc=j[Tc];J=Uc.y*J+Uc.z;j[Tc].z=J;}}workgroupBarrier();for(var ma=S;ma<x.count;ma+=4u){let Vc=x.start+ma;var Wc=kb[Vc*32u+k]+i[41289u+k];let Xc=39241u+k*64u;for(var na=0u;na<32u;na++){let Yc=j[ma*32u+na];Wc+=Yc.w*i[Xc+na]+Yc.z*i[Xc+32u+na];}let Zc=f32(f16(tanh(Wc)));j[ma*32u+k].y=Zc;wa[Vc*32u+k]=f16(Zc);}workgroupBarrier();var Jb=32u;var Ka=x.count;var oa=0u;loop{if (Jb<=1u){break;}let ad=Jb/2u;for(var pa=S;pa<ad;pa+=4u){let La=pa*2u;var Ma=0.;if (La<Ka){let Na=La*32u;let Oa=(oa&1u)==0u;let bd=select(j[Na+k].x,j[Na+k].y,Oa);Ma=bd;if (La+1u<Ka){let Pa=(La+1u)*32u;let Qa=k^(1u<<oa);Ma=jb(bd,select(j[Pa+k].x,j[Pa+k].y,Oa),select(j[Na+Qa].x,j[Na+Qa].y,Oa),select(j[Pa+Qa].x,j[Pa+Qa].y,Oa),k,oa);}}if ((oa&1u)==0u){j[pa*32u+k].x=Ma;} else{j[pa*32u+k].y=Ma;}}workgroupBarrier();Jb=ad;Ka=(Ka+1u)/2u;oa+=1u;}let le=Oc.f+Oc.g-1u+x.h;if (S==0u){q[le*32u+k]=f16(j[k].x);}}@compute @workgroup_size(256) fn f(@builtin(workgroup_id) me:vec3<u32>,@builtin(local_invocation_id) cd:vec3<u32>){let dd=Z(me);let o=cd.x&31u;let Ra=cd.x>>5u;if (dd>=F.a){return;}let p=N[dd];let ne=p.f+p.g-1u;for(var Kb=p.c+Ra;Kb<p.g;Kb+=8u){q[(ne+Kb)*32u+o]=f16(0.);}storageBarrier();workgroupBarrier();var u=p.g;var Sa=p.c;var Lb=5u;loop{if (u<=1u){break;}let Mb=u/2u;let oe=p.f+Mb-1u;let Ta=p.f+u-1u;let ed=o^(1u<<min(Lb,4u));for(var Ua=Ra;Ua<Mb;Ua+=8u){let T=Ua*2u;var Nb=0.;if (T<Sa){let fd=f32(q[(Ta+T)*32u+o]);Nb=fd;if (T+1u<Sa){Nb=jb(fd,f32(q[(Ta+T+1u)*32u+o]),f32(q[(Ta+T)*32u+ed]),f32(q[(Ta+T+1u)*32u+ed]),o,Lb);}}q[(oe+Ua)*32u+o]=f16(Nb);}storageBarrier();workgroupBarrier();u=Mb;Sa=(Sa+1u)/2u;Lb+=1u;}if (Ra==0u){l[p.f*32u+o]=f32(f16(f32(q[p.f*32u+o])));}storageBarrier();workgroupBarrier();u=1u;var U=4u+(31u-countLeadingZeros(p.g));loop{if (u>=p.g){break;}let gd=p.f+u-1u;let K=p.f+u*2u-1u;let hd=p.g/(u*2u);let id=(p.c+hd-1u)/hd;for(var qa=Ra;qa<u;qa+=8u){let B=qa*2u;if (B>=id){continue;}let Ob=l[(gd+qa)*32u+o];let jd=f32(q[(K+B)*32u+o]);if (B+1u<id){let kd=f32(q[(K+B+1u)*32u+o]);let Pb=o^(1u<<min(U,4u));let ld=l[(gd+qa)*32u+Pb];let md=f32(q[(K+B)*32u+Pb]);let nd=f32(q[(K+B+1u)*32u+Pb]);l[(K+B)*32u+o]=f32(f16(va(Ob,jd,kd,ld,md,nd,o,U,false)));l[(K+B+1u)*32u+o]=f32(f16(va(Ob,kd,jd,ld,nd,md,o,U,true)));} else{l[(K+B)*32u+o]=f32(f16(Ob));}}storageBarrier();workgroupBarrier();u*=2u;U=select(0u,U-1u,U>0u);}}@compute @workgroup_size(64) fn g(@builtin(workgroup_id) pe:vec3<u32>,@builtin(local_invocation_id) Va:vec3<u32>){let od=Z(pe);if (od>=F.c){return;}let D=xa[od];let pd=N[D.stream];let Wa=Va.x<32u;let n=Va.x;if (Wa){for(var Xa=0u;Xa<D.count;Xa++){m[(31u+Xa)*32u+n]=f32(wa[(D.start+Xa)*32u+n]);}}workgroupBarrier();var v=32u;var Ya=D.count;var y=0u;loop{if (v<=1u){break;}let Qb=v/2u;let qe=Qb-1u;let Za=v-1u;if (Wa){for(var ab=0u;ab<Qb;ab++){let V=ab*2u;var Rb=0.;if (V<Ya){let qd=m[(Za+V)*32u+n];Rb=qd;if (V+1u<Ya){let rd=n^(1u<<y);Rb=jb(qd,m[(Za+V+1u)*32u+n],m[(Za+V)*32u+rd],m[(Za+V+1u)*32u+rd],n,y);}}m[(qe+ab)*32u+n]=Rb;}}workgroupBarrier();v=Qb;Ya=(Ya+1u)/2u;y+=1u;}if (Wa){let re=pd.f+pd.g-1u+D.h;m[n]=l[re*32u+n];}workgroupBarrier();v=1u;y=4u;loop{if (v>=32u){break;}let sd=v-1u;let L=v*2u-1u;let td=32u/(v*2u);let ud=(D.count+td-1u)/td;if (Wa){for(var ra=0u;ra<v;ra++){let C=ra*2u;if (C>=ud){continue;}let Sb=m[(sd+ra)*32u+n];let vd=m[(L+C)*32u+n];if (C+1u<ud){let wd=m[(L+C+1u)*32u+n];let Tb=n^(1u<<y);let xd=m[(sd+ra)*32u+Tb];let yd=m[(L+C)*32u+Tb];let zd=m[(L+C+1u)*32u+Tb];m[(L+C)*32u+n]=va(Sb,vd,wd,xd,yd,zd,n,y,false);m[(L+C+1u)*32u+n]=va(Sb,wd,vd,xd,zd,yd,n,y,true);} else{m[(L+C)*32u+n]=Sb;}}}workgroupBarrier();v*=2u;y=select(0u,y-1u,y>0u);}let E=Va.x/8u;let bb=Va.x%8u;for(var Ub=0u;Ub<4u;Ub++){let cb=Ub*8u+E;let sa=D.start+cb;let Vb=cb<D.count;let Ad=select(1u,M[sa*2u]&3u,Vb);let db=Vb&&Ad!=1u&&Ad!=2u;for(var ta=bb;db&&ta<16u;ta+=8u){var Bd=i[36889u+ta];for(var W=0u;W<32u;W++){let se=f32(wa[sa*32u+W]);let te=f32(f16(m[(31u+cb)*32u+W]));let Cd=35865u+ta*64u;Bd+=i[Cd+W]*se+i[Cd+32u+W]*te;}Zb[E*16u+ta]=hb(Bd);}workgroupBarrier();for(var X=bb;db&&X<72u;X+=8u){var Wb=i[35400u+X];for(var Y=0u;Y<32u;Y++){let ue=f32(wa[sa*32u+Y]);let ve=f32(f16(m[(31u+cb)*32u+Y]));let Dd=29640u+X*80u;Wb+=i[Dd+Y]*ue+i[Dd+32u+Y]*ve;}let we=29640u+X*80u+64u;for(var eb=0u;eb<16u;eb++){Wb+=i[we+eb]*Zb[E*16u+eb];}ac[E*72u+X]=tanh(Wb);}workgroupBarrier();for(var ua=bb;db&&ua<9u;ua+=8u){var Ed=i[35856u+ua];for(var fb=0u;fb<72u;fb++){Ed+=i[25920u+ua*72u+fb]*ac[E*72u+fb];}lb[E*9u+ua]=Ed;}workgroupBarrier();if (bb==0u&&Vb){var Fd=0u;if (db){var Gd=lb[E*9u];for(var gb=1u;gb<9u;gb++){let Hd=lb[E*9u+gb];if (Hd>Gd){Gd=Hd;Fd=gb;}}}let ignored=atomicOr(&Jd[sa/4u],Fd<<((sa&3u)*8u));}workgroupBarrier();}}",iA="abcdefg",nA=A=>A?oA:oA.slice(11).replaceAll("f16","f32");var SA=["plain","comment","string","number","keyword","type","function","constant","operator"];var DA=512,hA=4,IA=[],HA=0,l=1,p=2,FA=4;function vA(){return[DA,new Uint32Array(DA*2),new Uint32Array(DA*2)]}function ZA(A){let B=A[HA]*2,C=new Uint32Array(B*2),D=new Uint32Array(B*2);C.set(A[l]),D.set(A[p]),A[HA]=B,A[l]=C,A[p]=D}function lA(A){let B=IA.pop()??vA(),C=0,D=0,M=!0,J=-1,H=-1;for(;D<A.length;){let O=D,r=A.charCodeAt(D),K;r===10||r===13?K=2:sA(r)?K=1:bA(r)?K=0:K=3;let t=M?16:0,a=GA(r),L=a,N=0,i=0;if(K===0){N=2166136261,i=2654435769;do{let u=GA(A.charCodeAt(D));L=u,N=Math.imul(N^u,16777619),i=Math.imul(i^u,2246822519),u>=97&&u<=122?t|=1:u>=65&&u<=90?t|=2:u>=48&&u<=57?t|=4:u===95&&(t|=8),D+=1}while(D<A.length&&bA(A.charCodeAt(D)))}else if(K===1)do{let u=A.charCodeAt(D);L=GA(u),u===9&&(t|=32),D+=1}while(D<A.length&&sA(A.charCodeAt(D)));else K===2?(D+=1,r===13&&A.charCodeAt(D)===10&&(L=10,D+=1)):(r===92&&(t|=64),D+=1);C===B[HA]&&ZA(B);let S=D,n=S-O,P=C*2;if(B[l][P]=K|xA(n)<<2|a<<5|L<<12|(N&255)<<19,B[l][P+1]=t|(K===0?(i&127)<<15:0),C>0){let u=jA(J,a);if(B[l][P+1]|=u<<7,B[l][P-1]|=u<<11,K===3||H===3){let m=qA(J,a);B[l][P+1]|=m<<22,B[l][P-1]|=m<<27}}B[p][C*2]=O,B[p][C*2+1]=S,C+=1,J=L,H=K,K===2?M=!0:K!==1&&(M=!1)}return[B[l].subarray(0,C*2),B[p].subarray(0,C*2),Uint32Array.of(0,C),C,B]}function qA(A,B){return 1+((Math.imul(A+1,131)^B)>>>0)%31}function KA(A){A?.[FA]&&(IA.length<hA&&IA.push(A[FA]),A[FA]=null)}function sA(A){return A===9||A===11||A===12||A===32}function bA(A){return A>127||A===95||A>=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122}function GA(A){return A>127?95:A}function xA(A){return Math.min(7,31-Math.clz32(A))}function jA(A,B){return A===47&&B===47?1:A===47&&B===42?2:A===42&&B===47?3:A===45&&B===45?4:A===61&&B===62?5:A===58&&B===58?6:A===60&&B===47?7:A===123&&B===123?8:A===36&&B===123?9:A===125&&B===125?10:A===45&&B===62?11:A===63&&B===63?12:A===63&&B===46?13:A===60&&B===62?14:0}function JA(A,B,C=0){let D=[],M;for(let J=0;J<A.length>>1;J++){let H=A[J*2],O=A[J*2+1],r=C+J,K=B[r>>2]>>(r&3)*8&255,t=SA[K]??"plain";M&&M.type===t&&M.end===H?M.end=O:(M={type:t,start:H,end:O},D.push(M))}return D}var _A=1,zA=4,Y=8,$A=64,U=128,j=32,AB=16384,TA=5,_=0,WA=1,BB=2,W=3,d=4,w=5,eA=6,MA=7,k=8,z=9,aA=10,h=-1,LA=0,CB=1,rA=2,EB=0,DB=1,FB=2,GB=3,IB=4,HB=5,YA=6;function gA(A=globalThis.navigator?.gpu,B,C,D){let M=!1,J,H,O,r,K,t=[],a=new Uint32Array(4),L=[],N=0,i=!1,S=!1,n=new Uint32Array,P=new Uint32Array,u=D??VA;async function m(){if(!H){if(J)return J;J=(async()=>{if(B)M=B.features.has("shader-f16");else{if(!A)throw new Error("WebGPU unavailable");let E=await A.requestAdapter();if(!E)throw new Error("WebGPU unavailable");M=E.features.has("shader-f16");let G={};for(let e of["maxBufferSize","maxStorageBufferBindingSize"])G[e]=E.limits[e];B=await E.requestDevice({requiredFeatures:M?["shader-f16"]:[],requiredLimits:G})}C===void 0&&(C=nA(M));let F=B.createShaderModule({code:C}),I=E=>B.createComputePipelineAsync({layout:"auto",compute:{module:F,entryPoint:E}});H=await Promise.all(Array.from(iA,I));let c=eB();O=B.createBuffer({size:c.byteLength,usage:U|Y}),B.queue.writeBuffer(O,0,c)})();try{await J}catch(F){throw J=void 0,F}}}async function VA(F,I,c){return await m(),kA(F,I,c)}async function kA(F,I,c){let E=F.length/2,G=E+3&-4,e=o(_,F.byteLength,U|Y),Q=o(WA,G,U|zA|Y),f=o(BB,G,_A|Y),g=o(W,16,$A|Y),R=K=KB(I,K),s=R[FB],V=R[GB],b=R[IB],T=R[HB],pA=o(d,s.byteLength,U|Y),XA=o(w,V.byteLength,U|Y),NA=M?2:4,yA=E*32*NA,wA=T*32*NA;o(eA,yA,U),o(MA,wA,U),o(k,Math.max(b*32*16,T*32*4),U),o(z,b*8,U),o(aA,E*32*4,U);try{B.queue.writeBuffer(e,0,F),B.queue.writeBuffer(pA,0,s),B.queue.writeBuffer(XA,0,V),a.set([I.length/2,E,b,T]),B.queue.writeBuffer(g,0,a);let v=B.createCommandEncoder();v.clearBuffer(Q,0,G);let AA=r??=tA(),Z=v.beginComputePass(),BA=(CA,q,cA)=>{Z.setPipeline(CA),Z.setBindGroup(0,q);let QA=Math.min(65535,cA);Z.dispatchWorkgroups(QA,Math.ceil(cA/QA))};return[b+63>>6,I.length+127>>7,b,I.length*2,b].forEach((CA,q)=>BA(H[q],AA[q],CA)),BA(H[TA],AA[TA],I.length/2),BA(H[6],AA[6],b),Z.end(),v.copyBufferToBuffer(Q,0,f,0,G),B.queue.submit([v.finish()]),await f.mapAsync(1),c(new Uint32Array(f.getMappedRange(),0,G/4))}finally{f.mapState==="mapped"&&f.unmap()}}function o(F,I,c){let E=t[F];if(E?.[CB]>=I)return I>E[rA]&&(E[rA]=I,r=void 0),E[LA];E?.[LA].destroy();let G=B.limits.maxBufferSize;if(I>G)throw new RangeError(`WebGPU buffer limit: ${I} > ${G}`);let e=JB(I,G),Q=B.createBuffer({size:e,usage:c});return t[F]=[Q,e,I],r=void 0,Q}function tA(){let F=E=>E===h?{buffer:O,size:O.size}:{buffer:t[E][LA],size:t[E][rA]},I=(E,G)=>B.createBindGroup({layout:E.getBindGroupLayout(0),entries:G.map(([e,Q])=>({binding:e,resource:F(Q)}))});return[[[0,_],[2,W],[9,w],[12,z]],[[2,W],[3,d],[12,z]],[[0,_],[2,W],[3,d],[4,h],[9,w],[10,aA],[11,k],[12,z]],[[2,W],[3,d],[11,k]],[[2,W],[3,d],[4,h],[5,eA],[6,MA],[9,w],[10,aA],[11,k]],[[2,W],[3,d],[4,h],[6,MA],[11,k]],[[0,_],[1,WA],[2,W],[4,h],[3,d],[5,eA],[9,w],[11,k]]].map((E,G)=>I(H[G],E))}function mA(F){let I=lA(F),[,c,,E]=I;if(E===0){let e=JA(c,new Uint32Array);return KA(I),e}let G=new Promise((e,Q)=>L.push([I,e,Q]));return N+=E,N>=AB?OA():uA(),G}function uA(){i||S||(i=!0,queueMicrotask(()=>void OA()))}async function OA(){if(S||L.length===0)return;S=!0,i=!1;let F=L.splice(0);N=0;let I=F.reduce((G,e)=>G+e[0][3],0),c=F[0][0][0],E=F[0][0][2];if(F.length>1){let G=I*2,e=F.reduce((R,s)=>R+s[0][2].length,0);n=$(n,G),P=$(P,e),c=n.subarray(0,G),E=P.subarray(0,e);let Q=0,f=0,g=0;for(let R of F){let[s,,V,b]=R[0];c.set(s,Q);for(let T=0;T<V.length;T+=2)E[g++]=f+V[T],E[g++]=V[T+1];Q+=s.length,f+=b}}try{await u(c,E,G=>{let e=0;for(let Q of F){let[f,g]=Q,[,R,,s]=f;g(JA(R,G,e)),e+=s}})}catch(G){for(let e of F)e[2](G)}finally{for(let G of F)KA(G[0]);S=!1,L.length>0&&uA()}}return{h:mA,i:m,r:u,e:o,g:tA,b:t,p:a,get d(){return B},get f(){return M},get c(){return H},get q(){return r},set q(F){r=F},get l(){return K},set l(F){K=F}}}function KB(A,B){if(B?.[YA]?.length===A.length){let a=!0;for(let L=0;L<A.length;L++)if(B[YA][L]!==A[L]){a=!1;break}if(a)return B}let C=A.length/2,D=0,M=0;for(let a=0;a<C;a++){let L=A[a*2+1]+j-1>>5,N=dA(L);D+=L,M+=N*2-1}let J=$(B?.[EB],C*6),H=$(B?.[DB],D*4),O=J.subarray(0,C*6),r=H.subarray(0,D*4),K=0,t=0;for(let a=0;a<C;a++){let L=A[a*2],N=A[a*2+1],i=N+j-1>>5,S=dA(i);O.set([L,N,K,i,t,S],a*6);for(let n=0;n<N;n+=j)r.set([L+n,Math.min(j,N-n),a,n>>5],K*4),K+=1;t+=S*2-1}return[J,H,O,r,D,M,A.slice()]}function $(A,B){if(A?.length>=B)return A;let C=16;for(;C<B;)C*=2;return new Uint32Array(C)}function dA(A){return 2**(32-Math.clz32(A-1))}function JB(A,B){let C=256;for(;C<A&&C<=B/2;)C*=2;return C<A&&(C=Math.ceil(A/4)*4),C}function eB(){let A=new Float32Array(EA.length),B=0;for(let C=0;C<x.length;C+=2){let D=x[C],M=x[C+1];for(let J=B;J<D;J++){let H=EA.charCodeAt(J),O=H>=97?H-71:H>=65?H-65:H>=48?H+4:H===45?62:63;A[J]=(O&1?-(O+1)/2:O/2)*M}B=D}return A}var MB;async function PB(A){return(MB??=gA()).h(A)}export{PB as parse};
package/dist/lite.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ type SyntaxClassName =
2
+ | "plain"
3
+ | "comment"
4
+ | "string"
5
+ | "number"
6
+ | "keyword"
7
+ | "type"
8
+ | "function"
9
+ | "constant"
10
+ | "operator";
11
+
12
+ interface SyntaxSpan {
13
+ type: SyntaxClassName;
14
+ start: number;
15
+ end: number;
16
+ }
17
+
18
+ export declare function parse(
19
+ code: string,
20
+ ): Promise<SyntaxSpan[]>;
package/dist/lite.js ADDED
@@ -0,0 +1 @@
1
+ var L="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~",Y=new Uint8Array(128);for(let e=0;e<L.length;e++)Y[L.charCodeAt(e)]=e;function c0(e){let t=(5-e.length%5)%5,n=e.length+t,i=new Uint8Array(n/5*4),u=0;for(let f=0;f<n;f+=5){let c=0;for(let d=0;d<5;d++){let o=f+d;c=c*85+Y[o<e.length?e.charCodeAt(o):126]}i[u++]=c>>>24&255,i[u++]=c>>>16&255,i[u++]=c>>>8&255,i[u++]=c&255}return i.subarray(0,i.length-t)}var Q=new Uint8Array(128);for(let e=0;e<16;e++)Q["0123456789ABCDEF".charCodeAt(e)]=e;function i0(e){let t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=Q[e.charCodeAt(n)];return t}function n0(e,t){let n=Math.ceil(e.length/32),i=new Uint32Array(t*n);for(let u=0;u<e.length;u++){let f=u>>>5,c=u&31,d=e[u];for(let o=0;o<t;o++)d>>>o&1&&(i[o*n+f]|=1<<c)}return i}function s0(e){let t=new Float32Array(e.length),n=new ArrayBuffer(4),i=new Float32Array(n),u=new Uint32Array(n);for(let f=0;f<e.length;f++){let c=e[f],d=(c&32768)<<16,o=c>>10&31,y=c&1023;if(o===0)if(y===0)u[0]=d;else{for(o=1;(y&1024)===0;)y<<=1,o--;y&=1023,u[0]=d|o+127-15<<23|y<<13}else o===31?u[0]=d|2139095040|y<<13:u[0]=d|o+127-15<<23|y<<13;t[f]=i[0]}return t}function q(e,t,n){let i=new Uint32Array(n.plane_words);for(let c of Object.values(n.sym_tensors)){let d=i0(e.substr(c.offset,c.words*32));i.set(n0(d,c.bits),c.plane_offset)}let u=c0(t),f=new Uint16Array(u.buffer.slice(u.byteOffset,u.byteOffset+n.f16_bytes));return{planes:i,fp:s0(f)}}var f0=["plain","comment","string","number","keyword","type","function","constant","operator"],G=16,D=64,l0=8,J=32*1024,S=128,d0=4,U=8,Z=1,b0=64;function I(e){let t;return async function(i){let u=e.tokenize(i);if(!u.count)return[];t??=h0(e).catch(c=>{throw t=void 0,c});let f=await(await t)(u.packed,u.count);return p0(u,f)}}function p0(e,t){let n=[],i;for(let u=0;u<e.count;u++){if(e.kinds[u]===1||e.kinds[u]===2)continue;let f=f0[t[u]]??"plain";if(i?.type===f)continue;let c=i?e.starts[u]:0;i&&(i.end=c),n.push(i={type:f,start:c,end:0})}return i||n.push(i={type:"plain",start:0,end:0}),i.end=e.ends[e.count-1],n}async function h0({shader:e,meta:t,pipeline:n,sym:i,f16:u}){let c=await globalThis.navigator?.gpu?.requestAdapter();if(!c)throw new Error("WebGPU unavailable");let d={};for(let a of["maxBufferSize","maxStorageBufferBindingSize"])d[a]=c.limits[a];c.limits.maxComputeWorkgroupStorageSize>=J&&(d.maxComputeWorkgroupStorageSize=J);let o=await c.requestDevice({requiredLimits:d}),y=o.createShaderModule({code:e}),F=(await y.getCompilationInfo?.())?.messages.filter(a=>a.type==="error")??[];if(F.length)throw new Error(`WGSL compilation failed: ${F.map(a=>a.message).join("; ")}`);let O=t.config.dim,C=o.createBindGroupLayout({entries:["read-only-storage","read-only-storage","read-only-storage","storage","storage","storage","uniform"].map((a,p)=>({binding:p,visibility:4,buffer:{type:a}}))}),z=o.createPipelineLayout({bindGroupLayouts:[C]}),b=await Promise.all(n.map(({entry:a})=>o.createComputePipelineAsync({layout:z,compute:{module:y,entryPoint:a}}))),{planes:l,fp:E}=q(i,u,t),s={planes:x(l),fp:x(E),jobs:o.createBuffer({size:D*G,usage:b0|U})},r={tokens:0,hidden:0},k,h=[],_=Promise.resolve();function x(a){let p=o.createBuffer({size:Math.ceil(a.byteLength/4)*4,usage:S|U});return o.queue.writeBuffer(p,0,a),p}function A(a,p,w){if(a>r.tokens){let g=Math.max(a,r.tokens*2,4096);for(let B of["tokens","out","staging"])s[B]?.destroy();s.tokens=o.createBuffer({size:g*p*4,usage:S|U}),s.out=o.createBuffer({size:g*4,usage:S|d0|U}),s.staging=o.createBuffer({size:g*4,usage:Z|U}),r.tokens=g,k=void 0}if(w>r.hidden){let g=Math.max(w,r.hidden*2,65536);s.hidden?.destroy(),s.scratch?.destroy(),s.hidden=o.createBuffer({size:g,usage:S}),s.scratch=o.createBuffer({size:g*l0,usage:S}),r.hidden=g,k=void 0}k??=o.createBindGroup({layout:C,entries:[s.tokens,s.planes,s.fp,s.hidden,s.scratch,s.out,s.jobs].map((g,B)=>({binding:B,resource:{buffer:g}}))})}async function j(a){try{let p=a[0].packed.length/a[0].count,w=0,g=0;for(let v of a)v.offset=w,w+=v.count,g=Math.max(g,v.count);let B=g*O;A(w,p,a.length*B*4);let R=new Uint32Array(w*p),T=new Uint32Array(D*G/4);a.forEach((v,P)=>{R.set(v.packed,v.offset*p),T.set([v.count,v.offset,0,B],P*G/4)}),o.queue.writeBuffer(s.tokens,0,R),o.queue.writeBuffer(s.jobs,0,T);let K=w*4,W=o.createCommandEncoder();W.clearBuffer(s.out,0,K),n.forEach((v,P)=>{let M=W.beginComputePass();M.setPipeline(b[P]),M.setBindGroup(0,k),M.dispatchWorkgroups(v.tile?Math.ceil(g/v.tile):1,a.length),M.end()}),W.copyBufferToBuffer(s.out,0,s.staging,0,K),o.queue.submit([W.finish()]),await s.staging.mapAsync(Z,0,K);let o0=new Uint32Array(s.staging.getMappedRange(0,K).slice(0));s.staging.unmap();for(let v of a)v.resolve(o0.subarray(v.offset,v.offset+v.count))}catch(p){for(let w of a)w.reject(p)}}function m(){let a=h;h=[],_=_.then(async()=>{for(let p=0;p<a.length;p+=D)await j(a.slice(p,p+D))})}return(a,p)=>new Promise((w,g)=>{h.push({packed:a,count:p,resolve:w,reject:g})===1&&queueMicrotask(m)})}var g0=new Map([[12079,1],[12074,2],[10799,3],[11565,4],[15678,5],[14906,6],[15407,7],[31611,8],[9339,9],[32125,10],[11582,11],[16191,12],[16174,13],[15422,14]]),X=e=>e===9||e===11||e===12||e===32,V=e=>e>127||e===95||e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122,H=e=>e>127?95:e&127;function v0(e){return e<=1?0:Math.min(7,31-Math.clz32(e))}function k0(e,t){return 1+((Math.imul(e+1,131)>>>0^t)>>>0)%31}function $(e){let t=e.length,n=new Int32Array(t),i=new Int32Array(t),u=new Uint8Array(t),f=new Uint8Array(t),c=new Uint8Array(t),d=new Uint8Array(t),o=new Uint16Array(t),y=new Uint8Array(t),N=new Uint8Array(t),F=new Uint8Array(t),O=new Uint8Array(t),C=new Uint8Array(t),z=new Uint8Array(t),b=0,l=0,E=!0;for(;l<t;){let r=l,k=e.charCodeAt(l),h;k===10||k===13?h=2:X(k)?h=1:V(k)?h=0:h=3;let _=E?16:0,x=H(k),A=x;if(h===0){let j=2166136261,m=2654435769;for(;l<t&&V(e.charCodeAt(l));){let a=H(e.charCodeAt(l));A=a,j=Math.imul(j^a,16777619)>>>0,m=Math.imul(m^a,2246822519)>>>0,a>=97&&a<=122?_|=1:a>=65&&a<=90?_|=2:a>=48&&a<=57?_|=4:a===95&&(_|=8),l++}o[b]=(j^j>>>16)&511,y[b]=(m^m>>>16)&127,_&2&&!(_&1)&&(_|=128)}else if(h===1)for(;l<t&&X(e.charCodeAt(l));){let j=e.charCodeAt(l);A=H(j),j===9&&(_|=32),l++}else h===2?(l++,k===13&&l<t&&e.charCodeAt(l)===10&&(A=10,l++)):(k===92&&(_|=64),l++);n[b]=r,i[b]=l,u[b]=h,f[b]=x,c[b]=A,d[b]=v0(l-r),N[b]=_,b++,h===2?E=!0:h!==1&&(E=!1)}for(let r=1;r<b;r++){let k=g0.get(c[r-1]<<8|f[r])||0;if(F[r]=k,O[r-1]=k,u[r-1]===3||u[r]===3){let h=k0(c[r-1],f[r]);C[r]=h,z[r-1]=h}}let s=new Uint32Array(b*2);for(let r=0;r<b;r++)s[r*2]=u[r]&3|(d[r]&7)<<2|(f[r]&127)<<5|(c[r]&127)<<12|(N[r]&255)<<19|(z[r]&31)<<27,s[r*2+1]=o[r]&1023|(y[r]&127)<<10|(F[r]&15)<<17|(O[r]&15)<<21|(C[r]&31)<<25;return{count:b,starts:n.subarray(0,b),ends:i.subarray(0,b),kinds:u.subarray(0,b),packed:s}}var e0={format:"neural-lexer-v2",config:{dim:64,embed_dim:32,n_layers:3,kernel_size:5,head_hidden:96,num_classes:9,film_rank:32,erase_rank:8,dilations:[1,2,4]},plane_words:6751,f16_count:5006,plane_bytes:27004,f16_bytes:10012,total_bytes:37016,parameters:142274,sym_tensors:{"embedding.table":{bits:3,offset:0,words:1012,plane_offset:0},"embedding.up":{bits:1,offset:32384,words:64,plane_offset:3036},"film.down":{bits:1,offset:34432,words:128,plane_offset:3100},"film.up":{bits:1,offset:38528,words:384,plane_offset:3228},"layers.0.dw":{bits:4,offset:50816,words:10,plane_offset:3612},"layers.0.proj_in":{bits:1,offset:51136,words:256,plane_offset:3652},"layers.0.proj_out":{bits:1,offset:59328,words:256,plane_offset:3908},"layers.0.erase_down":{bits:1,offset:67520,words:16,plane_offset:4164},"layers.0.erase_up":{bits:1,offset:68032,words:128,plane_offset:4180},"layers.1.dw":{bits:4,offset:72128,words:10,plane_offset:4308},"layers.1.proj_in":{bits:1,offset:72448,words:256,plane_offset:4348},"layers.1.proj_out":{bits:1,offset:80640,words:256,plane_offset:4604},"layers.1.erase_down":{bits:1,offset:88832,words:16,plane_offset:4860},"layers.1.erase_up":{bits:1,offset:89344,words:128,plane_offset:4876},"layers.2.dw":{bits:4,offset:93440,words:10,plane_offset:5004},"layers.2.proj_in":{bits:1,offset:93760,words:256,plane_offset:5044},"layers.2.proj_out":{bits:1,offset:101952,words:256,plane_offset:5300},"layers.2.erase_down":{bits:1,offset:110144,words:16,plane_offset:5556},"layers.2.erase_up":{bits:1,offset:110656,words:128,plane_offset:5572},"global_ctx.summary":{bits:1,offset:114752,words:512,plane_offset:5700},"global_ctx.gate":{bits:1,offset:131136,words:128,plane_offset:6212},head_hidden:{bits:1,offset:135232,words:384,plane_offset:6340},head_out:{bits:1,offset:147520,words:27,plane_offset:6724}}},t0=[{entry:"embed",tile:16},{entry:"sig_pool",tile:0},{entry:"film",tile:0},{entry:"l0_pre",tile:16},{entry:"l0_conv",tile:16},{entry:"l0_scan",tile:0},{entry:"l0_post",tile:16},{entry:"l1_pre",tile:16},{entry:"l1_conv",tile:16},{entry:"l1_scan",tile:0},{entry:"l1_post",tile:16},{entry:"l2_pre",tile:16},{entry:"l2_conv",tile:16},{entry:"l2_scan",tile:0},{entry:"l2_post",tile:16},{entry:"pool_reduce",tile:0},{entry:"pool_apply",tile:4},{entry:"head",tile:16}],a0="6517577711741152577547271211311745421415341267171211722454317171127765551713672523126236633272217133327171367364411232647677117626141155722552471345214776751576462711577154767436115111712637124164562633566421731263564425756634715721436626114275677734241174777177613763161336766737141522766121671116147721761537771717227574113173147777347177472571117111177321271137465761272243761121123547515157267724313277125326253176243374445427155472643543337432553443363346161557527544316245616445353653452442454343452345556373212257651736235364746432436763722135264226442373234364435336226333535745371725545346661234556411117417341743717111771153371762662735132516714377467322663543642751323317215717441176317351716614665455261466354423644543346431444444444444444444444444444444447652744147137627124136177253432644444444444444444444444444444444743441553347354473725335554326426525343655342534535256535333455465321436552526145534756441513763761133475717252463627665114245527511333744172512756377641132566177117376771423131664473624163533761144375517241254536674114367627611443764171511654376741235667255146135535527354535531356275322751154447326123276536733234436417616332534234124763167225551156465172215333162366521563354433644553424245633444544337544435236342721771746776364165152123153243575114527314725247651765613214741761163274147252476527565132354317521513761472513766476461613552165417736727633547543753533124611444424254434574513314344444463624313665443511667133474363722566366114364511351237134155161414511144234461151744723345634641376553232255216611131362644116477742623136115164124523746242355462375175764664443357441253323443353477522546621347132734523637161552122515352772757411723154634426365277215456424754415521424434631744765536751424666555244477513425655775356331636414327733437751347646744546527565523314156546531745462763432726765747777353355255571567766734624274241444445261366556444343244553544435553442444437577135271317757717171117711711671771631714265377177453437517121717716717162753532751433774151247277266271346616737435546731312172771434622274377377675347415211717746327121752471752654675141127166176371325417547257657753512173675532512273176171276777565311717717446134761572763662777415147155175171517616745747223553611162537715576756554213566436534255335715446334776734524163637644732646427344555771325424757457254143646346574437144157611445523536167251345442175321543452645524243514753432763756136271762541347426347334153516757555762754536716355541462446243437515743722113362534345443561333227367437211254763334353365612162644674353143727144246564435313437717635452125271145532446151112356267446315351422764116437412435465773773252256211351413774151176743374541217337742161253552244374377656211215746652115335714114572665771121465673636725633126343737765731216151632231763721136137775747114342634542564356613423673565172411626424633753377154125625534743326351547735247141132677254657613377556344247366712562673573451411327364513416635122356457744531217452135257157771164777115477211272611142416444712653561373572224626143443774726132515637513564235263327345357451115357267717313443411271657266512755275465761214314171521165744165757764746741456133735276531661421526247657316172556517536535332661257364317346237114577475274753174771752341257177177174437473176157227637212671752743161276523224522412635414475424164223156731435536141357434653462174635243234142217374744437523136121237346134245522327663436426116161565334511654615661641645611521732466121431717735613371345325554234266322435234515452445371434443364354465262566433244445541455324545634562222622444634525546777254455526326533513654443335473462665654246243132115575232232754425352573561441221374654425316651426255322545524533356131242155642375626236351254153253243342744645335643431531362233554522414175427641571755665711662451311767643746244157122347177725724614647735447542151741162123534315314555123365621651134414544625131466434431347452444355327333656532446744636732432614161325254513336754245366623524144512534523721312631347361537411314214633121512474532527563453332551224515323135535254654524526324323355334363262461562566345143454225742356434733534243453461432471414557417315655455472465747413533673613562234662162375243351534113342432457652142776172471747121376316616177442117473713737316517414371351516131165335417332335647335563157645155321332121255641777764314673567744442744137344763651143447757553733147611625265567733541533734643574534243575133435444446336454626323346653366632354552354751615736772431227711632636417624337444442715547264354333742255344337234716155752754531624561644535365346244245424445234555637321215765173723536474643343676372213516422644137323436442533721533252573627172554534766123455741111741735174371711177115337176266273513251671437746742266345375546614273313161264117542265271711367655517136625442364455333733144444444444444444444444444444444765274413713763711312617726243174444444444444444444444444444444474345155334735337372532665431642652534265534253463525553532345546532142655151714553475744151367376113347571725146262766511314551751132374517251276636764113256617711737677142313166447262416253376114437551724116452667411426772761143376417161165437674123667616614613553552735462553135627532175115444722612327743673323343641761632253413412476317722555115746617221533316236752156335443374355332424563344553433764443523634271177174677636416516212215324357511452731472523765176561221474176116317414726247652766513235521752151377147251276647746161355216641773671763354753275353312461144433423444357471441434454315353431366554261176712257327371256636611526551125112714415517141351114423446116175471324573463127755213226621761113136274411647775261213611516512552273625236557237617576476445335745115342444324346761153662133712273452373716146111161535177175741171316562331726517721635631576541551131442562274376643775141466655524447661241666577545634163751422773232775134774773565752756652331415665653175657176343172676574777735335625667166777673361426514144344526136755654334315554463434665354135343747412454174157565754645144372656342127422753523365474651414314476541154215727543752531515344333645231355167141446326625154735156474225723372432373173262745153476723654627615525771563735132155777342744165165537726637572321237765343421662412464465543753152176345426334625753576652617154143724323154177265267425525423512327153771657676655521357652652426523671544733377773452417273774373174732743556677132541476746726414364733667333615415761145551352716724125535217621144246264652524361474232266275613627176254134731634732415351675766576275352671665153731516775527526333175145465462444422566222756632534443333353767415466475413416667332714143223252715421137442621551223447334215774432733753277234326515554464716334173114571723262153333356732427747651272723732562731713627755527557431611427114422152341565427454421764535375217377417514611275773511173273713171123177311511276367341672711537751317637174176321754126463755243134677745515736123266564617224721354566443613547365511335227134615163714243316652114723621764662552356642741243623416137114254416333344245121271365152115744575637117767152142644465337411772231123233742631274773511446617752232744256337643433371233432257312214423445557747742111617165627572634143625761456762133454432731761127177333753717424132542534421747335712462214135431716427133647167166755711366677434567515751111663376235332666724152565155313735171741476174217127662222352141263541447531317422315774133563615126742466356217363624223514221737474343751313611123733713324561232767243651114626361731115764367341141343561162173136612143171773561427134715543456474555677312665123631427522566215533311455311547516244162657165777237534371414531174333525545443542436436535453433353446355343454325455464355453223434144773447721735311577322445355113543565224341453557446765612242537652144517243324444454352224533375713533671313327646354577342334771125565614243177775475341117444324241147514651577432134522344244675463664355433642423424535357362445454555574547553744414444537435646352624435463353455345624334165323155311333664653721153256463156212622136447357771521114414357316342154371165513472422755245443453433134544743577541243345632265443523364356226753311332545235445353513564364515551116554735423534672661266724731141711144557135231377141173326313754624742425745336314476131755732555415335515435274216156753532155431526645324331741425436326445415444522415773653362624574555746336611315764515531123112115675177776521477356774444274513733577265115434775766372215771161516656772255152373464357363424367614333544444623645462622224665336663245555243342555324332652443537425443262533277343536455242712473354672363276352663646452551254244424475443334553637634534523263334253723634541375727524435544451436125464353557342435451537335774713627545647751643435417247765232415533544313414652363466647574576242244467513455235542415231335376744743646474136332646454446544732243415535753541625336474147473424416454725365475333354563111213342345243456236361352367363443453343333414364554446437545534344333246463333745554543551662356552325441334374536464542475615452536454256645315175435344543366744444524653745434345272365424265434433533442523533647327245142377342624373444734325333334415435262234444353264631566253443464653443233452434512463342373257565617325344744311372466211443326644224542542324634636242216332564353654461532464352244731354565244456732653431734122543463735552556574767432565545324512424555636667745352362425771565623334645234545314555335632525452756353445234576566454122643473574727324547513326474537253653536345432455375247445254435435424472142255634254527532234543754256322551657614623442334434667623357462433674441273773352524743355365237167323765745413755447534226243644643334325765135764422644614522542645174254154353324755644467546154521362222315323334665272563341246315424332323464351553416536533534353336633252451415455215433455335364145424243367726237644731235775165662573164637477445544375633256346144643212364253657644123764663354164145741367736577672373445252621712533441572455414433474452777433144245363345466715257355224446255252434443242654315354434434453544545443467763562462631657655632531566156445623646156345475365345134445264453753356447423452122523365531433445342665465452354344343552442446363354141545546426512444243362436543264412454741542333451635634545421444731152755374444454144343143436555553364323225464444462352636672434226224235652754553552655542723556354434324441754533432163436245151377534623644651144231735377755264355364647637453533376444446324553363443323636351246251455465463443621453454451552515754356136156766346526343335624172455454345644643355463745613153746156555537536564575736654163743544441362343734222444333231225256514344546455435463131543147444464265455717447636253234441231454721334745545452145421534637433767224327272543734235145154375215556611313766423361563325633333342674535154524646636325221437261314333541266464324333533635344642664155457645444424454435654654224243552744354742145613674553253576344445736645445345343332513362244251463352134223664364243353353763654166344273625122364463443436424544537453232434324472747743311335321562175471373453563434543555245677657351461213423454231465177215223312466156256252143543133252341634435576645355242441445345536677535665473334262373474164275741162732451355426352427351647356435614324372773441334473364356456434742327577515351367345363445315551545434721255523144642475443347651654455325242324376555354447126634445765326264353635345734451553153552361125346433354214734333653315245742644433473326464364636333354554246563544644447533545344433233731654341442433432474476514756446312774534552545633456464543745251745433757731563231344254463425245452233425374345463555533524655326345446424545443574521654714236233433443243232143755575363344332222634434233747564274467573541617563425637545345542235334334423143447545465243534234415423246235666343664466354453542733763223343544473625142446166472772476351233432344564525743444554356445446333457434354226647255641366313345251425442365445145346446646344353374435753545544513431234544244363454565653264234224751733342441143354633356631534753543356552612644645652347342654444644453645353434236566155343447254415242542334254632212247633171752121526745421754313577742155373716143455442373653367254346335633421122362223742334434213422465652254553254334343424457454435436274331644616243315116365421143627244447451253552354445553414566352374643312412515427551333435174765145463273446357555754257454147215333173352737633656244222655615523745341621353444755443743433547353354623754443367165157564474554312341545361467367655452356465155112445334252366325342352463335431621244324342534543124341736443436561343421555634364353364425236411233345575424463433243256251655555751644423551453746435354434444563462542256555535243356565454453243234366346421463634523154641467736536163765525357367225211147576353122457414443234634442634532244332132355354254443353456327263545635565747474243462316656436244234644345535533343464354365736524335443324243753366747444541534232246554352236233444623611153244456654334133413344563654442733427462477454362343444744146265471272215222236376365662436652735655643433242544645173553453644351335324113743434254253453355663234433565215534251545564465257534431462552563333345474367457355475647445412534735334525657622431457243232533535447546176751344233365244535155321514515447455672634626616656263342373472523643544333625134433145345333435431743544532427543561445462237264514343523234446422533135352513656652543643444223455533536232543753544246335456531242634733267246535565243314543545543456535334463253564224551655341556123133355424417234643464312354545443343346233353463434547745151251537726327541725416531664356545651344534336154442446452444364455543443653636576543563446461641123444325576245254554535351754654775536477436765535511343134275744665334464534442732133356252136553444352643541355466542564134452243234524355517633352535242472743552573252355342364264373537415571137544254743336541544333445445576333533622554464433233545213656647152433646626122636545446443456544324311524545625267452343471152323124564516461751644463543332544254363435546351324365113652626311563563445545414375545127236143634343725566315331764324447574165645126543326673153735432445454745233761432457434242652434656543565315426336165217554544532444733433554216334653563564534444333654437463323322433425762223244343343324454414424531465446442526532374775715634511535342134546546332424364145622353364364311245253436345754646655344536363251123563434343635142532254343444335344546363564455645441164234347434364524455463464653254545214344522355414354635544225124354134655767547343455355137224136354743374146235654513424315743232216422346332715416352243524534166736554536367537366454434464636467164126141267774316573435372175471355756437445374462144563446616443117417435414724462554436532551326117354132616635247442315235132564343241545455436626272173255232342545444533343547623312345622535556674345313641743232421345313325631663534355623333544344436444533634622543345546363622464473236126145315336544524723563654433454132443346246446425251545347153643154234477565637663154764544426663747634435545546564433147543615243454112236253433426122345155352645436375246364417234453536415272515525356174615622533734532254564316555376545365654356354526352215725434754535453747453744227536344344545245563143335332434323461712217535444514343424463425566645457616574255525252555366551572642427565333633332534354311376535421272654121752421541553625763734454432342577446742447422635145663647543575554224441642265752254572351541636415172221731364634324322331224166133324116623442556474456637356553232644535252142436426135743545644313646351657164257743234454635222655115244315334255422355437457142361344134454533512443246324463463334444313424452452256461543432344644677464415263651265155344752264553635526353225343356354343443455345252533145221455623244342334335375631523342333253325447565253234541246642652423367535443554222311253564123332124475226555423535564524316265456565545624141456543224535755436664433232232525655446666123542734637346555171167772625327535437164353346464374442445554323643635366564547465455554444455343545535554461276244342343232356543534431331656554465425512435436234753442734351555241452362517545135545454636245363445545433356447535143735614513344522213557243435744723242142235435742523526216553474774341551541255552616244256344237554333534144555466633253545632255345536523425336545445755355244613475357443323542165445464451641765373233345264267462754444545333246523343312117346673152454227656341754665356652634134544274324555634463332331565445224241653423237755453455315475221776327541312454437534543453145434734364323554543543545345245135266436651564454444644353311543663533326534655535323414624163333565735556515433535652245344345443241553435176315544563477612534547445244423615274277554613747556564553355526236354335254421424443356355343346267316344325535264555334466641112353434314566441553356662453514545334347416275575453251674743454557425362274343413456147423264223345437434335743674725343662234644432712632162462523674423552273345234253124474475243262263524221262141546241415153436374676551527435435262134252255373745152457551455441356632667434321551751524557364345273477556354335555433546634635442533654656773344535555433434323465615445453444515346525355356344554565337753443243747223133145534255776565445541446454457553433445346564644243643741447534455211554334452434574537353525343436454445154373444522543366555117473346233365325663353343344676427534533254343536542362415654352377423113343333445343564214443463472453332435544212476466241253575455454653566175664646424215576316162443523675226465413572714665527451576354725311615313254423454555547237725661652372673424362312256543141527341442446144247451323164445253542417616633416434153244221156532435334555225647631716341632236442443344762342645424544654425464646261357445476151427654222256224673464624322471333523122363267242356521362653323235345465315475564354123334455456371226553534753334235243345545444552244253346532124544647532676437524434126566751266545166524416622756241754222725336432645565543453231373244564334711536363455515563554532445324545216323513434525562542353365566645225564532444544377615246254411424452441654353314355447533322437447614534344335455253136352552622673263433736515335363246333551442352417141463514363661441345534575646352273543443464444434122554262315453534645541366645444715465323415325361231563464526351344437574634462245343353344436346464451555351366232375754452314153542645355365524432242314547242553324313241577354544223342632354564135255633432434333513454344223352332667475435262435616673747175733653344324153347754537434355773354521657444436564357251423274464317253355434474544533253733336332244136114645462263475462435363654343554642675351333552515145261344644464443437522475167426454445521343674715677231242264433266332253544745556642322624545446323343267765765544125475444644547155544245735622755443515565622443344324344454343324333477366422116534437524544331555375454523166317535246634363545234555573322445364224527343623455364654344353542343145355425154536533345536646361243464456445644334426441744576544434457362215755477546323357336441453365224454712325424463744423432556234656542645334231443135245652543745432234734641135622423314425674433444455227343434564364451441463315425414455364555556443211535557354722357321223251116345336744264465742544331445433346523334372213455641223371642454462352532144233365447323243573365434465445137674517256354221313525324453546447451613553444576244612434324655344144433421274513416316144247673464577363235416647321453434464453312465215615224624246324347333364471342555557433552353543632244542423565451344546634665231144434146461145227745316353455526434546565446162225433553564412436515453445341635677333562437436455322351557432642323455236533516252533442524436343156434772344374456654653143334325733223145433535337445432215764515535242745264156423341323575357334532476343136223343533555653456363136364132344315345223554313354542274462443613656432623333352634663233445524646513536336444143612453342344374455637535645443334534324243334452543433435355534356633664236365225254243251557463335134564564543235343432266765372274346461517434617162531255351464542653474463437445114452342133336225544434533157146322553543454436374356464643362313333554251532344464312554323533443122464634555374345335652545434225244646147426353315747356573733165514234452476766543355517234245472575244257425424153433552461536114242544654635321445462173523346264557426346332562452355745513373355542446135541524625344545442242763373355634352335653451453442222642663335614363655755547163533544544446252313234533543444343741731424344564442635531556253244245223234134743232546235641632316646335445633445554644532622216761547142553443365756335353453545543246125355334562265546323575324436524576414152543564654433335615431124226333432425662723332422356522355766455443464377551514623321215164575224221471314234411636643424514356333444713426332232354274534743272154354336113647244442473556754167223261517317161533562137143537335325666233545644556624365572364343145467554565444315226437325642251565153453442425344614344246241514455712735542374531334556755345444262564323625246454545445444544564246636353143446543314576721446566147534354231327415354114653577316453745453634525177642476532355452457562626123733446345434324525532356773435722737727547765252432143641362423444537566634352563544445665331556374443565632715536226615561546155424424536641254341456416432355542456537514454433653634645425426552522462453634653472454435434712174241632142375434144345672431334525551213634472434424514533463126316337732517546553652475364545444341564432435534724554437422556264163357376211523471237455734415552374456137565424575535454312255643654333255343633362123434427326236644645544464434354445634523466534725447435433317256455544244365732324726563462146154426342324333544556345555743523332774223415153543446635455523511546235557143444336465534541344345524246335235144544343344552525375312446723446334436654634374544665364437733235635117574425567232721263654524536554274356324525143231236526443715236751166263256742654455464443366674473557316665233224644345623325443342444435336555444243532162444612654464526534332335242453165465337445343535476531646434632473531452343244345425734245555256151623333176643444233433344342334525545353564532451153562343562351223444614323466552444477436332644255444241353656324564246634454422364732357446533535447466635166644325242426334754776656613571677742533663512745256222563272355362546526226262225253745362125452476474472527533377763345447523465537633731657544524644715217634233651777612544644113366234526541636743134453443575367446227451445611324366174465433225224572755363351547157425342621726513515454541744615553345352455267427725224415656315453145442421436634235563563632153353215244621634621372465656345475773464213575535753413427526343352444154142123434236356243624422244472652242426436526635535343225431453435345462334244452417322111341564645262314652515354455325346341343225261116365373466515343544314245574166435533543663341445644627565346534442524635353442552644444555345554433454463653342135455435224362453553244652736462344434553336743345343556123445163156546433424126545212445314744425446322253364527235463447224253362465452546133446411551146347477443635622526553465546152153466746434357217725346436424215432544344553535332221432363547175436252163535561657643262775314445124143352734531313342635535553534451325324551146356454324353561423735535435256527526541365553273343243363727723411177753776553111256412135353514555334444334632452443243435442542317715554564532432351451436764426243445435126152151445721673524555124563335114332345624775323617555454333143475467415123772674514473676774532731732633334465275455546255542337453656364327565524613341564315535315751532345532435135373641445235224653275625443413445422544245145276365544321316652345557544224334473646543124456433265475333426511554454655432376261652235441534542547655264454452373765455375155541544336265662445327154414456265345575547334734554774423514144631231144224322423362345142443554644446715243146524512212253635664377542435646364322635516563325142565533263624342163473472423233764334244154376314243554314436335342217241347457214234254451533574446357756654524737465467766362714261521546313542316532445353147152453673476463354463536443432134172746355614336113433515745625645765444651255423725347571535452667432453617445413466573335154563354463534575123547425247524432436642234374347535154464642123533746642356474656234363563635532426576442744115435471544316763322365643255345643335444763436333433343516527456443245646662512433546335236353222435364431145356547646325563526452135721654614236636343655144333355622236335455654444551152543337444323345434753562554554641451354455216223243546566344477345422543233533123434466261341457472362116447254416475525445564234337444353257357547726355421146341443566331347316745422623533343675444145544346252217655525516552363524743316724135334443234453713447413757634654357215445376635444263435127424742517326546224365234655716567742532626365546633536353764446275557345552225425435447134613137354576425425325221252345221243434723535354254552245372641233324433156672564342322334544644334523473564513232143535551154514432646353431333265431467742667744554553534514253231174144444354534341612611315547457225444233542551354643355256436144145667153722561737713434623614765765556366723123514631242177323463651533154374546445244714475443526143532555124346272652235433411747524463415727673151323743733323416172162527245441574444556554154541355443152555541515145524424244214245155333477326352164541664122474154333547523424416643365441142323644224354344645655647725224416424512452534374515344333634622543367323267332433422434255215177436151574544745621122144165424673467326526555347445423135225552173737744536664313322555253643373512553254276646254444632566752324364134767424742761166475475115443152735665735235254744476432265254433344357471553553416443453451537344442444767523312134665436553572376275141641635266154173734346727342356642437367635534514632643233413475733716553344116541115314146667412276434345153333277332536542136555365565377564233663637123663554355321244554124545435655646222453722473224154427326463755422155135542434112253534445412155253637516451534435433454237376254657652351354224342615454475665523637547631555115566441324123332175343444542264375336244724355424265556375513325443365245442753422643643373362241574755355641336514564335524423456526663364412235667112512341442736741577727666225461653355411536512413215645451445372724234235263645121241342523256735466514513742611773716317222244734575522641443551475255424634575462237771344572116426255215436525623432454334677611353135741362543364375376435131345422463353763345232336555243735655375347435752644335132124521242433634447555446345324135334343755334642262743451725136312512423637344145744715553344315366614144414635325346637251353144662663555723714477212237212117647233555324365372555714257325341223214271336314425246145773232121432765546665664233537523365434324433554345462535424626263527511756536354141465534544533521234135457123355355235642733552433552643345712225342453243425143244234424425543735232636643155163436657665634343556771257716651215235534617575551733537255464574522446353554543657325354536565431635124565421646436322541643552613122132525755554753555353555364442332521325422775243326453533113251742475437576524736441744467517223231263556225354566555751244635244243443142461465175147446274424436455453662513324524471375417351256442545335354445434525667613375617746745721345714111727433415375517574646474151355555553562517714754523574544513136144325154456567646157174624736432271573333354456152375417445553634435325116474424442562255143644333553275224376334114741675225355117153445463664553663644722443666353445146222442126133433533746564436574342564355442363632344653627543312422314426665454544544527714763626335216642434177436247752545751441444532777667626333434151462671442677431175117353135644461624126247112674553541537654564753727456565634165514765332163444116433546136433455431541412555625476433212756116723266241636557654372323452252531674736541454364144467446541341545425322423514556625133442544226622466124657515447232211364715641466446226643342556115635424366325233752344544434457675436213355642744627627635517532234725253545451764633245546316257213534342635613544343465242514443324352322645336734456566352251134363324466545752242434454775734225243546632374217666675235255515135675344613674424176367664671435526573433336232664463474424642435535245652553513333675673647657755374527441473423447762444675347432723431342431211514567674755436464767335453614345625251433263242263772442475544273637641327515746726364354446374267254674153114357542752443716757771743554466735643472746444457545561275444135355553155743757362275353465642724354667655577664525446414263244445353562543372663223772744453253525335543463562546457616113546375341334232325254574354664522345476645434614443343275645664153351521247627472217747316177117317761311773172663272777417724776177724411177771725471175143615711141117112116713361117137216275774512517411511171717621737717711716717167177277276771171717711711416711737117317176437172413271666167276371317722461154241774761756157711676642111217111172117171717672151471772773262477267671762112176136767712117177271433171112157616122724746727773176277262711127117121351171727161211557117711715517147124711364612664654562757444444444444444444444444444444447332172145654122657567543664117371151735417137671261777471177736112714551211772713316775712177211111777711162471761761517117515751772177716717155752171215731553177777121161174111747111111777711774777731711117467127712131677113417132771777771111716716711717732517171261714377716777475117764717717171727677713171771717772771117116516761731517711771167115117147117712727471117111711117757767714776272717247167677773136162671171771371517177521757113172117171773131411775177111751717174444444444444444444444444444444457321427711725465765121762646622553561474574325221356245742666336752425345452456462275715317531633244634434544671435411745227153132574231372615744315771531676777725717314523451556432656476426442265274243774324542415424466433746333117274633121443525251134764327376246731133522674777445426144233424456367322444553652111246612417313664664444371152561437424617723746446437542463532421747262232671116756413131346125241365672657116777674571331123214533366144742531747141121651271437133177743377235475511531511326263436242517654274731412116577622521635344623315525515443574452416557653757644543312223147371656735537461724534671241313474455676652557711331253757377776635736524156553764257163156411476155766762741542543423574144352575126474635516773554477426177475174252474645472645212453741223567743425767136472534554722272445234416255241171367615325212764433756614452356544533234613172631453356314244277664363155713246732634372222556447446427546742472344651724565242415113653421617755453222527442126332374546532335552546266323451676562572461445727711321126776763175541544246251644326144252224156332325347431327556352247271157661135357125574471247711156564311142562346214151161225655741113421744353234444762453763217414423545436144264345445365434454212223512427421157714327225424155275567356515312224346155525755165511261245732334441146617573665234535533745554462341733471417556562225374714642527731477433363612624435144754143673653644735737451413744446576541657742257461474652322731776766567566311427736334712634345635253362334623672661532414456125762654574233761713452374372263334226154123623414754422341774331646567552447517532444645636547445533516523534234251454462426257577775623323162127277133313363363121317213234227426436164443765432154544645756741445514514635325722443521364451742245631523613716363425433365744661744212366632634517314361114217435634646436413125513764232332444141544714735616445215271544165771746261315174771157463176474773427755555563533663274735415441771754122633533613433672373264144147624476321565611561731523265512246445243746172444561474137326733446131145346211167417771614267277372711216275731751715322473272553616223165571177716172111517774774117171721177732567355214311233115175671765771726531445255511763623717175423174213146741435546141357434651116774754347311474575131137763701101100111110101000100010000110100000100111101110100101111000000101100011011000000001111011110001100000110111000101011100000110000111111011111010100110010110011101000111100110010010001010110000001101110111101000110010010110111111000110110100000001101100010000100100010011100011000111010110010001000101010100000110110001001101001110111010010100101011010110000110100011001111011001100101100000010101100101100010101110001101000000000001010000101101011010001111001111100100111111111000001110100010010101010000011100010000000101111100011011001001010111111001000001000001101011001010011000100101110001101010011101001101111100011111010010001010011001011111001110101111101010110000111001010001111100010111010010110010101100000001111101000101011011010110010010010000010011111001101111001010111000000000110100011100010101101000100111101011110001100011101000101010000011100000100001001011010001110111000001001110101000101111011001110101010101010000011010111110001101111110001011001101001111111100011101010100000011101011011011111011000000101101110001011111110011010101001001011100111001011001010001011011110111010100000010100111110000011001010010010100010011111110110110111100110110010110011100100111000110001000000011010101110111100110110001010000001110010100001010111001001110001111000111001001101100110111011010110001011010110000001011010100001110000100100101011101110100100101110000000100111110111101011010011110110111100111110101011001111110011000101011110110101110000000000111100100001101100100101100101001011110101010001101001001011110100101101101010010110100100110100101110100010100100111001100111000111000110010001110110001110011100100011101101000010110001000100110101101010001100011011011101001000011101010111110100011001010011111001011110111010001010001001000111101110110001001110100111110100000001110000000101100001101001001001010101000011101011100111010011100110101111110110100000010000011001001110011100000000010011010111000010110001101100010010000111111001100000001110000001000110111101000111010010100010101101010001001111110111100111011100000111101110000111111010111000011111111111100111111101000101011101111110011111010101111001000111010010000001101011111101111001011111100011011110111100110000101111101000100010100111001001111110110110001111001010100100010001111111000011101110101010000110101111101000100011101011101011110111001011000101001111010110000110111110101000010011101010010000001001110100100011000011000111110001010000011111011010011111100100011010000101100000000000100001100100011100111001000101001010010110000001101111101011000011110111101010110011001100010011110001111101111110101110110110100000010101111010100010101001101111111101101001011000101111001001100011011100100000000000000001001011100010110000110001011111110101000110001010100000011010111000010010110010000000010000100111101001101001101000011011111111010101101110111010000110000110101011111010101111000010101100111110110000110011111011001000010011100011111000110011011010010111101111000110110100000111010100010111000000110111000101000110011011100001110000011111000011010011000001100100111110010001000001100110001100101100110000000101101010011110100110101100000111010001010100110110011111001010000101010010101110011110101000011010101010101001110100101100011100101001001010000010000110010101101011001000000010100100010000111010110101111110101100100100110101011000010111100100100011100000100110001111010111111010101010100101000001000011000011001001001001010100000010001011111100101101010100001010010100110110011110001000100001000011010110110010101110010010100100010011001001101110110010001011000111111111111100110110010110111011000011011111111001100000100111001000101111001111110010110011011101100101110001111011110001010010000101110101010010010111101001000110010111100000011010100100101110010001110010000100100110110001001001001110110111111001001010011011111111011111001101011100111100111011001010101001111010111101110010101110000110001011011000100010101010111101110101101010101111101101100101010111010100000111000111100111110011011100000101110001110000101010010000100010001110110000101000011111010110010011010111101010011001111111101010010111011111010100000110001111101011101111100101101101110000100000111101111100001001001000101011101111110101000011000010111110101011100001000000110100011111101110011000011101000101111110100000111001111000000110000111011111110001101101000010001000101011001111010110010110101100010000000010011110010110100100101011111010101111001010101001011000011101011111000000100010000010110100101001010000011110000100110110101111110011101100010100001111011001101010000001111100010010001110101011101010100001000000100101101110100001111001001100001010100111000111111111110000001111111011111101001011000110011001001100101001000001110100101001100111110110110000111000111100010011100011111100000100010001010010010110100011000011111111010110011100011011001001000000010001010010011000100110101001010100100000101111010010101100001110001010101101100111011100000110111100010011010100111011010011001100111001101101010101101001010011000001110101001111100000100001000001000101100101010111100000110100011000010111110000001011111001000111001011111101011001000111011100101001001100111001001001111110010001000011000000011011010101010100100111100100111110110111101011111101010000100011100001110000100110101011011101111110011011000000101100110101011000110010010111110110101011010111010001000000001111010110010011000111100010001000111111101111100100110010010000001010111111001010100111010100011010001000001000010011100101010101001011001100100110101110111000010100101011111111001100010100001011101010010100010010010001101101001111111110110010111110110110111011011000101110101100001011001100111100010110100000111010001101100001110011001000011111011101100100110000001111000110000111101001000110000000111100111000111111111000010000000011011100111010100000011010101110110011101010101000110111100000010110111111101101001111111111110100011111011111000101001110011100011001001111001001100100011110010001100100011100010000001011001011101001111000111100111000010001000000110001101010111100110101010110101000110110100010100000010101000111101101110011110100000111011010011000011000010110111100010101010100010001011001001001000101001001110010101110101110001011011001011100110101111100111101110000010010001110101101100010101010110010111010110010000100001011100110011100101111011010011100001110000010011110000101010111000000010000100110000011010101111010010011100010101111000100000110101111010010100000101101010001100101011000001001111100110100011010010101000110110110010110001100111000101001001001111010001101111010000011111011100000011001011000100101000011010100011011101101000111001111110101111000100101000010011000110101111101100100000001111011000011001010111111001111011111111110110011010010010111111010101100001111110100011001010001001101101100001111010010011011100000010111001101010011101011010010100010101101101111101011000010000011000111100001110101110111011011101101000111011101000111100100110000001110000100111110001010100010101011100000000111110010101100011000100000100101101111111011111011101111001000101000011001101011000101110111000101101101110010100101100010101011000101111011001100010000110011101011010101101010001101011010111111101011011111010101010010101000110001111110010100101100110101010010000111011111101000111010101011101111100101111101110100000111111110111110001101001101110110110110111110011000111100010100000100101111100010110001100110011001001001011100010000110001100101000011111011001000001010101001110111111001011001101101011001111110100001001100010000111001000100001001100110001011111111011101110100111110100111000100000010010011000111111001011101001100001001100001101001110111100101010101011100111111101000011000101000100010011111111001000110010011100101110101110111111100011101000111000001100010000101000001011101110111010101101101000000101000111110001100111011100101110011001100101011000000110000100000001111001001111010101011000010110100101111011100001011101010010101001010010011011100010001101100010011001111110110101011001001100001001111100101100011110001000010101000101100110110101110001110101001011001010010100001010010011010111010001011100011000101011001111001011110111111000001111010010010100101010100111010110110100100011000110100001011001111100110001101110101100101101011111011001010101101111100110001100011001001100111000011000001101001110011001011101110101111111011010000101110100110000000001110111000011100000110011100011100101011011100000010010001000010111111101101110000001101001010011100110011011110011000111011001100100101010111110010100011011100111000101111100111101101101101101100000000110011010100011111001010000111110010011100100000110011001100010101010110001010000010000101111100010101101101110011110100001101001111011100100001101100111110000001011001101000110110111001111100001101101011010011011010000011000000000101110110010001110001001011011010100001101100000001001010011101001100110010100100011001011100001110110001111110100101000111111101010101000111001100011110111110110001011111010100111101100000010000001011011111100111110101101010100100101010110110110101011011000010101010110010111100110111100001100110010101111100001000110101000111000101110000010110100110111111111111100011001001101110000111100011001010100010001010010111011101000101110001000000111110000110110110111100110001000000001001100100000000101010000111001000100010110000100110111111010001010101001010000000001101100110000111001001100111001001010010011101111001001110101111010000101000111110100000011110010011110010010010011100101111110111100101111010011011010110110000000010001111010111000010101001110111111010101011001010110000000110001101000110100101001001000101101100110110101100001000001111100000001010100000110011110001001100010111101100110010001000111100010100100000110001010110001110000001100111010000001011111111010100001110111000010000011110101010001100110001100000000110111111010011110101100101000010111100110110100001010010001111100101010101110100111110110101010001011100110100001100100111011110011011110100100000111010000110111011110110101001111100010010111110001011011001010000100010101111010101111110011101000110001101110100100101111000110001110111011111000011101101101111101101110010111001000111101110010010100010001111011100011110110010001000101000100000110101110111100101011110101010001001000001010000001100011111101111011010001101100110111110111100100011100111010101100111001100110110001001011110000010001000010010101111010101000100101110111100001101100011111111000001010100010011100001010111001101001001011110111001011100111110011001010100111100101011001101011111011010000101001110111100001111110100111100001111011110001010001100101001011111100010010011011101000100111110101000001111111011101011011000011100101101010011001110100010001001010111010110000001010001010010100101010011010000100001010111101110011010011000110000011001101100101001101101010000000110011110000101101000101110011111110001010001001111001111010110111000101010011101001010101101111100000010011000010100010001101110100101100011010111000001101001001101100100111000011001010101111010100001111100101101100110101001100011011111110101010001111010111001111001001110010001100001001111101000110100000100111001101010110110000111100101101011110010110010001000110000101110111101100000001111010100100011111001101110110010000101101101110010110110001110111011001011111000011101111001010000101111101000000001111010001101011111000000000010000100000011000001110110101010011000101011110110001101110001111011000100110111000101010001101000111011100111110101101000100111110011100001011000100011100000100110010000100110110111111000111000110111110110110000100111001100010011000000010000010000010001010011001000111000001100110011101001101010110111111111100011101001011110001000010111000110011101001001010001100010011100010011001010000110101000100011000100001101001010010011001000110001000111111110011011010011100101110100100011110011000001010001011000010010110110000110010000110001110101101010111000010101111000101001010000001100100001101000110110001101101011110110011010111011000000000011101101000100111110001010100001011110111000111100010010101110111111110101101101011101110011000011110011011000011101100110011100000000111000011010101101001010101010000001001010101010010100101011000100111000100011000111110111001000100010011111110010000111011100001100111011101101100001001010111110001111001001010100001110101110110010111001111011101111001110101001001000010111110010010001000111101010100001110010001001010111110111101100011010010100101101100000111111100011111001001011101110111000011100100110011101001011100001010000000000110100000010101000101111110101111011100011110011001110100100011010001000101101100101010101100101001110101010011101000010101101011101101110110001111001000001101101000110101001100111001000010001010110001010110111110001011010001101110100001001011001110011011000110011011001101000010100011011001100110101110011100000110100001111001010110010101000111001011010011000110101000111101011011100010101100000101011001010010001110110100010011011000010111001011011000010000110100000101011010001110100100101001101101010101110101110001111111100000010110111010000100110000011111001101001100100100100101011101110001110011000101011101001101110111101001111000101110011011010110011101100101011010111001100001011001010101101010000011000010110100101000011101100001110001000111001001010010110100010110110100101100100000000100100110000110011100111011011110110010100110111001110100000111000011110000000001010011101101101111110000001011011001101001101010101000000001001101111110000011001001110111010010100100010100111000111011101100101011000111100111100010110101000111011110101011010111111011100001110101011001010111111001001011001001011110111011110100010100101000000100010000101011000111010011001010000110000100001010010000101001011110111100000110101110011111000111011101001001111101111111110000000100011010010010111101011111000001111110011011111011001110111000110001001110000111010010010010100000111011100011011101001001010101100110001010100010101110000001110100101111111110111010100001000000000010000001100001100101011100111010100111111010100001001111111101110001101100100001000010110111101001011000100100000111101011100111001001111110010001001000101111100100101001001101000100111101110011010101101010111001110010011010100001000110010110111111110100011100010101111111001110000010001011100010111111001011001110011111001100000000001001101011111111101001010101010001001000010010101011011001000010001011111101101011101010000110101001000010111101001000010001110011110101111110001010010010101001111011100001100000011111111011101011010111111100001111010011010011011110010011010101110110100100110011100011111110110001111011111101111011111100100011001110000110100110010011110010001111111110011010011111101111011100101010011100100001100111110110000010101001100001110010001100101111000010000101111010010100000001001010000000110111001111000111011011010010111011001111001111100111100111101011100101101111001010001000110110101111011010101000001010011110101111111000110001000100111101111101010010010110110110110100110011101111110100100010101101010011100011011101001011100001001010110100101011011000100000100011011101101001011100010001001001000100000100111011010110010110110001111010010000010110011101011011101001101001000111001110011110001000110101001011101101100110101001000000001011100011000111010011000011001100011101110000010110101000010000000100110011010011101110111010101011001011011001100110111010001111010011011011110111101011101110001101111010110111011100101011010000001101100100110111111000100010010000111010001110100110101000101010001101101101101011011001101011010011101001111011001111111010110100000110100111111101001010100111000101101010010000000101101001110100111100010000110001000111111111100010010000011010011000010000111000100000110100010100000001101010001110110001110100110111000110001010011110111101011001101011001111011111110100101011110000000101011000000111110011011011100110110110000110100101110100110101001111101101101101110011011000101001110111010111011001011001000010111000110101011100111110101001010111000010111101110101101000100000011011010001010010100100011000000110100111101010000101000110011001111010110101001111001011101000110111010110010110000101101100111011110000100011110101110000110011001110110001100000001010101011101000100000010000100110111100111011101101101000111101100000111111010110011001010100000101110111110010011010001111111001001010010111010101011111101101010111110011101101011100100010111100011000101000000100000001110101011101000010100001001101111111010111010111110111100100010010100011100001100001111110000010111000010001010110000111110100001011011101001110110011100011110111010011111111100100110010001010010001110010010101100010000011000110011111000011010011100111101100101100000001100001001000011100110011100101111101101110110111000010001100011001011110101110001000000010011001011110100111011111110011011011000010110011110011101101111010110001001111100011111111101011001001100100110000111011000101001010001010100001110011001100011110101101000011001010011101101011011000000111110111111101101111001011010000100010000010110110101000110000100010111001001010100110110101010000011110111001100101010000101001001011110111010001101111010100110000101011100000111111000101010010110010001111000111010001011101111110100101100000111000100110001100011010001101011101111110011111011000010111011101100001111110000011010111010101001001101111110101000011000000000111110100110100111111111011101111000011011111001100111110000010010111001100000100100001010101101010001101000110010001111101011001001110000111101111110001000101011001011110001011010101010001111111110010000110010001000010110111001001100010110100110100101000000000011110010001101110011111110100001111001111110010100001001001110101000000011111101101001000111010111100100100010010100111010111111000101111000001001011110101001010010110101100111111001100010010000011100000010011010101001110000100100100110010010001101010110100111010000001000010001101010111111011000100100011001110100000000100110010001000100101010010110110011000010110001011001111000111011100110110000001110100010110001000111010011110100110111101010101111111111101100010101001110000110001011011110010001110111111010100000000010101011101011100100110001001001101111010000100110111011000110100100010010110011010001001000011111000000001011101011011010110010110111000001100010011010001101010110111010011011110111001010111011011011010010010000010100138FDC614D985178981FA93F788731A781A757B1681DC788EF8F61EC61C783FE9AAEFE27AF685E8EF819FB8612864F94CF86B87179C21F979FF988F5C62FF861BEA89F7BAA145541B86E5176ABFBB8DFE891C861417EFF3678FF77DF665BF9A616174D16B813A64FA5C77F977FF689AF9781AB475FE7D1E157FF96861397F4C979F776F46583F4897129616E788FA98B81697F69FBD3A8115A9712763DF779F971111101101100100011001101101001110001011001001101101000010100110101010000101111000101011100100000110100010111000000100101000000011001110001010111000111111010100001011000011011110000010111100011011011000001101010010110110101101001010110101000011001101111011010001111011001011011111011010111101000000111100010011110101001101100001101000110111011100001010010000110010111000010101110000011010110101000010001001001000011111011011100000111010010010001001010101000101110001100001001010111110001110001000110010010010110000011101011010101011000010011000101001111100111110101101110010011110001101101110000111100000010111100111100111110011111001100010110101011000101110101001011111100111110110000000011101010111110001010110000110000001001111010101001001000100001100001010110111010000010010111011000010111000111000000100001001111010001011010011000111000011110100111110010101011101010110010001001001111110110101011011001101110010100101011111100100100011111101001001101100111101010010100101110111100001100110001000001000000011111000001001111111010001111001101001001011100110110111111111000011110111010100010011110100100100100111001001011001111001110101110110000000000011000010111000010111101111101000100110111101100000101111100000101101101000100111110111011100110110101011010110101010001100011110111101110011000110111101001011111111111111010100001011010101000110111111111101110101101101101101101110110100100011001110110110000001001110110011001001001100111011011101111101111011110011100000000010001100111010010001000001111100111100100100001100111010111000101110100000100101100110111110101101001011000100101100001011110001011110111011111010110111100001101111000101110110101011001101001101100011111011000010110110111000111111010101000100101001100010011001010110111000100010100010000000111100101001011011100011010011101010101110001101001100001000101101011111100110110110111000100101011100111010101111110011101100111100001001100001100110101011110001011101001000000101010001001010111010010101111111101110101101001011101000010011000000111101001111101100101110001110011100000010100011111010100100100100000110111000001110001111011110000111110011000111011000110111000100100101010110011100100110110010000100001110001011101111100100111000010001000011111011101000011110001100010000001100001001011000010110011001111011001010011001100110100111110110111100101001001001111111110111000001110010101001001000011000100001001101101000100110111001010110100111111111110111101110100011100001011110111001000001010111111110000111000011000011011101010000111000001110111000001101101111101111100001101010001110000001100101111001000101110111001101101010001101101110011000101000111010101001111101000001010011010110100100001111011001010000000000000001110010001000001010111111001001100000000100011111001001100110001101011110101000110010100101100101010001010111110111000011110011100110111011001010111101101001010111001101011011001110110100010111000101011010110100010100110010101101000111011010001100000111111011100111001101010000111000001110110110000010101110100000000001101001011101110010010100100100010000011001100001010111101010111100001001001001001110001000110111111100111010110110001100000010010110011001001001111100001101010010100010101000010100001111000101111101111100010001010011010111100001011100000011100110100110011011100110110000000010110011001111001010010011000100011110001000100010110110000001111101100101110110000110010001101001101000001000000011010000000000110010000111101010111000000011000110000000001110010111011011100110110111011100111101111111111010111100100010101110000101101111100110000101011011100110010000110000100101111111011100101111100111100101011001100000101000001010001011100100100110000101011001011010011011000001001001011101110101011110010111110001101001101000101111001111100011110110110000101111110010100110010010010111010101100100010100000001111000010001100010110000110111101111110010011011011111110011100011101111110101000100111010010011011010111001001101111111111111100001000010000011110001001011011110000100110001001011010000000011101011101001111001000010111100100100000100100010000010001000111010111100010001110011101110110100001001000010000101101000101001011111000111001101011011001110000101101000001100010100110100110011001000101010010111101001011001001010100111000100110011110101011011001000101001000110101111010111100010010001001101111101011001010111100011101000010000110111000000001000010101111001110101101000101000011111101100101000101101011110011011001110100011100101000110110000101111011101110010010010101011111111110111011001101001100110011001011101011010000011011110110001111000011101110011011010100100100100111101111001011011110100101110100011111110000010001011010100000111110011110011010000101010010101011001010101001100100100011011000111110110101101100011111110110010011000001001111010101011010001111101111110111100110100110100000001101110010011100111100101000111110000111011011110111110010101001011000001100000111101000011111000000111000100001000111001111101001011101010001011110011111101011011101101010100010101110001100011110010011110111111110000101010011111101010011110011111100000110110011101101011110100001001010101010010100110111111101010010011111001001101010001101101001111100101011110110100101010000010001101101011110001101000001100010010010101000100110110111100000000011010100100000100101100101100010111111011011010000001010100011111111110010010010011101111100001001110101111111100100000010101010100011111001011111001110000010111100010001000100000111000101110001011001101000111101111000010101101001110101111110000000010101001011111000001011111110000000011001001011101011001101000110010111001000101101111011110100010111000110000001011011100101001001111111101100001100010100010101111110111110000000011011101010011000100010011000100001001010010010011010101001000111011101101001011101001100011010101111001100110001111001010110001000100110001111001100111110110011001111110110011101001010000101010010001000001000111111000000101011010110110000101001100000010011111101011001110010101010101010010010001010000100110101001001000111010111100011001010011000101011000000001100100111000011000100101111111111010110011001001101000101011111000000101100001000010101101101001011010100111010100000000100110110111110111110010001101010110011101001101110111011001000001110001010101110001110100001011011010111001111100111110111000101100010010111011000101010001001100110010110101001010110001110000011111010101101011111011000101110000000110000010010101001101111001100011101001111101001010100101110001100100100011111011010110011010111100001101100101110001111100000011100011010011001110111000100111110001011100011001001000011100001110110101000011000010010100000011001101011100010100111101010011011111010010011100101010011000010001101101000101001110101100101111100010110110000100000000001001100100010101000110001011101010001100101101011110110011111001011001010101000011010111100010111100001000101110101001001101100101001111101111100011001100100111001010100101000101011110011110000100010000110111110010000001000100010010010000010101001101000001111000000111000010010011101110001011001110010001111101001010111001111011001001110111000000101001010100110000011011111110110111111110100100011100011100000001110010101000011001110111011001101101111001010011010010011000001101101010010000100000111001001000101100011011001111000000011110001111011010101011001110010010000110101011001100111000000000101011011001000111101010111101010101100010000111110011011011000010110011101000010111101010011110000100010011101111010101110101110000001111101011010011001111001110011101001000011000110001001110110101011010011111001100101101010011101010101010101101111011010100001111111001010000100011010110100000100010111011000101100100100000101111100010101010010110000100110100110111101100000101110001100011011010001110100100100110010100110101111011111001110111101100100011011001001011001001011101010110001100010010010001000101000111010111100011111001011100100000001101010001100100001110010110000011111001100100100011100101101001000111000011110101011001011011001011101101000011110110100100010110010000001001000100011111000000110110101110001110000001111011000110001001010100101110110110100010110110000001011110100101010111100000010000110111111110110110001010011101100110001111000010010001001011101000000110100111000101101001100011010101011111011011011101111100001010011010101111101001101000101100001101110001100000100110011001000010010110001111010011001000101111011101111010111001111111111001001000001111100001011110010101101000011100111000010010100111010010011010011111010110101111111111000010111000000000011010111101001110001110001011010101001011110001110111100010011011101000110100011000100011000001010001111111100001101001010110110100000111101111110101110101110110010110011010110100000011011011001110011110111111100001101110110110011011011111111100000111010111000101101111101110101111010010111000010011100110110001101011111001011110110010011101000110111000111001001010100011011110010111111111011100011000111101000001011110001110010011010101100100000111001101000110010110000101100011011110100100101001010111101011000011110101110110100100010010111011111011000011001010001110111110000111111111101100000010011001100001100010101010101010001001110111100100000101100101001000001001011100110110110100001010101101011100110001101001110110100110011000011001101001000000110100000111100011000010001100000001101100110011111110011010111100101001100000010011010001100011100111110011010110110000011000011000001011110110011101000100001011001011000101000010111010101011011000111110111000100000000010110101100100110010001011111001011100001011010001100011001000001000011010110001111111010101011010010011101011110000001001001001010100111001100110100101110001111001111000101011000011100101110101011010010110010001000011101011001011101111110100110111001101110100001111001001110111000010011100110111101101101000100100110110000111100010100111000010111001001101000000101010001001110000100111011111001010111111001101110100110101111010101001111010110011110101000010010001111011001010010111000111010001100100000001101100101110100011011010101110100111110010010111010010000011011110111011000111000110100111110101101001101011011001100100101110010001010011001010011001101000100010101101000000110111011100111010000000100101011000001110101110000001010100011110100000110100001011000110110101001011100010100010000100101001110010011000101000011101011110010110011101100101011101011101100010010110001011000101111100101000101011101010110110100001111011010010101011001000100101000011100011100111101101100100100010101010001001001100011010010101011011011100101110111110010000011110010010101111101111011000011100000110111101001000110101101100011101110011101011011011011001111010011101100011110111000100011001011100111110111001110111010111100010010000001001001000010010000101000011101100001011001111111010010100110110011001111001010100000000110100111101100010110011111011110000000010000001101100111000001001110011100110100011010110101000011001010010100010101111000000011101001000001000100110111001110111000010110000110100110101001000011001000001010001100100111110010001101100100010001111110000111010001110010001011110001011111101000001010100011001110001011011010100100111011101110000100110111001000111001001100111010110101110100001010101111011010001001000000010100100011100000011011111110011110111001110110001000000001011011011010010010101000011000101110001111111010100100110011100000011111000100110101110011001000010101111111111110111111110111111100111111010010100000010100101100111010111110011100110101111011111001001100101010010001110010110000110000011000101110010100000101111100100110001011101101011011110001000010100011101011000001010111110001111010100111110011110011001111110110110010011011010010011011111110010101001101100010011100001111100111100100101110101100001001111011011110010111100001000010010001101111011111001101010000100001011110111100000001110100001101000110110111111001110111000011000001000001001111010111000111110101011000000000011101001100111000011001010000011100101101011111000000010011011010010101010011000001000110111011110111100100101100111100011001001001011011110000001010011010111100110101001111100101100101110100111010010101101111001011000011011100100001111010001011100001111011000011010100111000111001001100000100011011101001111111101100001110010111110101001001000111011110010101000100110000111111110101100001011101100010101001111001110010101100001111100010101101110100001100100110011100101100100010010110011010111101000110010110100110101000101101111011001100001100111000101100000101010000011101011111000010110011001001001000111111101101101000110001000101001000010101010101101100010010110001100000111011111111100011001010011110100011010000110010111101100101111000011100101000101110010000100000110000001011010101000111011010011111110010001011110101000111110011111000111001101101100001011010100000010111010001100010101111101000010001010011010110011001111010101010110110101001001110111110101100110111110101001100100110001010010100100100101001100011000001100000111001101100000010000001110000011110011011110100010100010110000010100100001001101100010011100010100011001110010110001000001110111110011111100110001110000001100100100101011000100001110001101001101000111001110001000011101111010101011001100111111111001110110100110001111011010001110100010011001010100101110110000011110100100000011000110101001000011010101001011101010101011111110011100000011101010101000100010001001101011000100101100000101000001110100000111010001111101100111011010111011111100011111000000111111101001001110100100110110000101001110010001010000100101011010010001100011100110000101100001011000110011010011011101000100110100010110010110011100110011110000110100100111101110101011100011011000101011010111011101110110000111100111000011100110000101111000011110011000001010010110000011000110110100111100010000100100010110011110010010000101100111001000111101010010111000001110000001111110110111001011101111100010110111001101101100000001100101000010100111100101101001001011110010100100010100101100011001100111110100110011011110001101101111001110000110001001000010111000101001010010011111101111101100010110111100100001100110100000110100100000001101101001001110111010001000000111000000001110110011001010111010011100010101010111000011100101010011000111000100001000010011000110101011010110101100000111000101110101001011111001110101111110101000101011000011100101011000100000101010011011000100011011000111111110000100101101011000010000011100010111100011101111111011010100000110000101001001011010100110011011110111100100100110111111100110101111100010010101010100000011011000011110110011100000110111011111101011001001010010110011100011110011001111111011001011101101000111011100001101100011010100011110100101001110110111000101100001111001101111000111001011010100100101111100010011010111111101111100110110000101011000101100000010111101101001000000100101010110010100010011000111011011101010010111010000010111100110101110100001111101000101100101000101010001101101010111011110001010011111010111011001101001001001110110110011111011001111100101101011111001000000110001011001010110010100000110000000011001010001000000100010000111011001101001010100100111011010101101100011010111100001011011011100111110011000010001010110111001111111111110010001010111110111101101100100111110001011000011010010011001010001100000101000011100110010011011011000111011010101010001000101011010010110000111111011111010110010001011011011101110011010001010001100010001101101001011001110100110000101110000011111111010110100110101000010101100111100100011001100011011110101000000100101000111000101010001110010101011001001110000111100100010111110111101111000111001011011110111111111001001100100011111101001111101001100111001110101111011010010111010010100000001110011001111010011101100010001100010001111101001011110010100110011000011111101101010100011101001100000011010111110111001110001011000111100101111100001110010111111010001010010101111001100101111001110111000010011000011101000011011000001001101011110010000110101101111100001111110111011000011001101101101001011001011000011011111111000011011100011011010101110010110100110001110111000110101000101101101010001011011100100000011011000011000011000010110100111111101110100001011101111111010010000100001001010000111110011111011110101110000111000101001001001110111000010100101110000000010100110001000101001010111000011110010111000010000100011101010011000010110100001010011111111101111100111011110110111010001001111110011010000110010101000010111110101101010010100010111110011000111110100011111110110011110000100101001000100101011010110111100101110100111110101100101110001100010101101100011111101011110111001011000100000111000100101110000110000000000100010001101000101111110110011110011001101101101001111011101001011101101010000111010110000110000010100101110010101111110001010011011110001111110110010100101111000110010000110001100111001101110000100010010001000011001101100011100110011010011110100101001010111001100000000000000000000000001110001000000000000000000000000011100010000000000000000000000001111010000000000000000000000000001110001000000000000000000000000011100010000000000000000000000001111010100000000000000000000000001110001000000000000000000000000011100010000000000000000000000000111000100000000000000000000000001110001000000000000000000000000011100010000000000000000000000000111000100000000000000000000000010011101000000000000000000000000011001000000000000000000000000000110001000000000000000000000000001110001000000000000000000000000110110100000000000000000000000000111000100000000000000000000000001110001000000000000000000000000011100010000000000000000000000000111000100000000000000000000000001110101000000000000000000000000011100010000000000000000000000001011110100000000000000000000000001110001000000000000000000000000011100010000000000000000000000000111000100000000000000000000000001110001000000000000000000000000011100010000000000000000000000000111000100000000000000000000000001110001000000000000000000000000011100110000000000000000000000001100000100000000000000000000000001110001000000000000000000000000011100010000000000000000000000001110101000000000000000000000000001110001000000000000000000000000011100010000000000000000000000000110010000000000000000000000000001110001000000000000000000000000011100010000000000000000000000000101000100000000000000000000000011100100000000000000000000000000011000010000000000000000000000000111000100000000000000000000000000100100000000000000000000000000011100010000000000000000000000000101100100000000000000000000000001111001000000000000000000000000011100010000000000000000000000000111001100000000000000000000000001110001000000000000000000000000100011000000000000000000000000001011001100000000000000000000000001110001000000000000000000000000011101010000000000000000000000000111000100000000000000000000000011110101000000000000000000000000011100110000000000000000000000000111000100000000000000000000000011010000000000000000000000000000011000000000000000000000000000000111000100000000000000000000000001010010000000000000000000000000011101010000000000000000000000000110011000000000000000000000000010110100000000000000000000000000000000110000000000000000000000001110011100000000000000000000000010100100000000000000000000000000101001000000000000000000000000000001111100000000000000000000000000110101000000000000000000000000011000100000000000000000000000000111010100000000000000000000000001111110000000000000000000000000101101000000000000000000000000000111011000000000000000000000000000100000000000000000000000000000111101010000000000000000000000000010001100000000000000000000000000011001000000000000000000000000011100110000000000000000000000000111000100000000000000000000000011110101000000000000000000000000111101010000000000000000000000001000011000000000000000000000000000000011000000000000000000000000011010010000000000000000000000000111001000000000000000000000000001110101000000000000000000000000101100110000000000000000000000001100010100000000000000000000000001110001000000000000000000000000011001010000000000000000000000000101100100000000000000000000000000111101000000000000000000000000011100110000000000000000000000001111010000000000000000000000000011001011000000000000000000000000100001010000000000000000000000000010010000000000000000000000000001101000000000000000000000000000101001100000000000000000000000001011011000000000000000000000000010011001000000000000000000000000011100110000000000000000000000001011000100000000000000000000000001110011000000000000000000000000011111100000000000000000000000001010000000000000000000000000000001011001000000000000000000000000011110010000000000000000000000000111001000000000000000000000000011110100000000000000000000000000010110110000000000000000000000001111100000000000000000000000000010010001000000000000000000000000101110100000000000000000000000000011010000000000000000000000000001100001000000000000000000000000101000010000000000000000000000001100111100000000000000000000000000101010000000000000000000000000011100010000000000000000000000000110000000000000000000000000000001110001000000000000000000000000C41EE81EF94155988F98619469BFFB77312CDDF8771AC9C114A6145A3153791788AF999814776177516566AFA89DFA9CD5FB9FF798E1369AEFB5C1FAD78CF8AF888C1584317751E2887177AFC79ACFAA51E7859EF8711A57F59D8F2F885F589AFC9AFDCB8818991CBCFEB3C9FFCB9814867F1888A158418873FFA77FA95F3A79714968136B5F987EFABACFBC85F9899FF6631D47CFB986F888A1667E1ECA21171101010010000001101100110101111111010000011100101111100101000010101011011100010110010000100100000110000000100111100111110010000011000111001111010000110110011110010001101110111011110000100110111101110101000001000001000100000101110101101001111111110010100001101111111111101101010011101010101101110010011100111001100011111010011100001101111011011011110001011010101111111100100100111100011101011101010000100101011111111100010111100101001000110011111011110000101001111110111000001110000101000010010101001100110100110101001111110000001010100010010010000111001110101000010011001001100101110111000100110111000110011101011000011001111011010100011111000010100110110101010101000001101011100010011000000000100110000100101011100001110001101010101011010101000101010000010011001000100101111000000000110110101111010110001111000000100001010011101100111011010010000000010011111001011000101010001011101000010000010101010100010000010110100000101011010101000010011101101110000101010000111000010110100001111001001001000101010101011001110111010110011111000001001101010000100000100000111011010101110110010111101100100101100100101111100011001111001000010000110011110111000010110011100101101101000010001110001101101110001110010000111111011001010100010101100101011111011001110001101110110110010110001011000011001010100011110101100001011100110100111000100000101010000110011000010100000000110110011000100101010000101110110001100101001001110011100000001101000101011011100000010000000011001101101000010101100010000111011100010011101000111011011101100001100110010000110011101011000111000011110100110000111011001001010101000101010100100001110100110010101100000000100100110101111100110111111000110001011001100110001111111000100010000000001101001011101110100001101111000100000101010010011000101000001100000001101001010001111000101110010000101000110100101011100011111011000110100101111011111111011000101010000111010101001101011011111010101010111000011100011011010101100111011110001101100110110010100001100011001100000111001110001101000100011101000010001100010011011000110010101001111010110010111111000110000101001010111010101011111011110110010101110110010010111101101101101111001010111100100000000111001010011011110111011010101110010011000011101010101100010001001001010110100011100110101000111101100011010011000101000111010010011011110000111001010011010110101011000101010000100111100101111010011000101101111110000100110111011111001010100010101000110001000000001001010000011101110011010010100110001000011111101101000000000101001000011111110000100101001011111011101111100001001000000111111111110100101001100000011000101111001111111100000100100111000111100110101101001111110100100110010000011100101101000100011100010001001100010011000010011101110010100001101001110100001010011101111011110100001000101100110101001001001010001010011111111101101101000001100110101101110110001011011110110001000001100010100010001001110010101111001011101011101111000011111001110011001010011111101001011011010010101010000111001000001100011011100001010110101100010111100110110011110111000010110101000001000101000101101000111010111011001010010001001100100111010110111110011111101110001001011000111111101011110101110001100010001111101110011100100000110111101100010101101011000101101010000001000101100001010100101110100001011111101100100011111101010101001100000110000100110000000101011010010101100110001010001101100010100001101100000011100111010101110100001011110111010001110000101101000111100001100001000101000010110000001111010111101011110111000001100000110001100010000001100101101011001101001001110110000011010101001010010100100001111000011010011101101111001001000010000110101011110100001010011000000001101110101111000110100010000101010001000110000001110101010100110101101011010001010110111101000001111010111000100111110100011101111010010100111010010000001111101100111001010001110000011101100111011110110101111001101100000110000100011011101010011101111101110010100010001001001100000111010100101010000000111111111011100000110010010111001010000001010011111111101010010010100111001000000001001010011000110101011010001101001000111111100011100010011110111000001010100100000101010001001110000101100000111101000110000111110011011011111111110101110111000001000101111101011110101110011000100001000011000111011011000100000111101001010100111010111111101010010110100101001001110111000000000111010110000001000110001100110111001101001001011011101111110010010100000111101100001110010011011011101100101010110110111101000101011110111001010011101111000001001101110001000010010010001111000001100011001001011111000111100010100111011001010001000001111100001000110101001000010000001011011000011000000010101110110000011010011110101111100010101111001101101001000110011101011001111111101111110010111011011110101110110100010111011000100111100011110111010101010101100110000001000001111111011110110100000100001010000011100000110110010010110000001111001000011001011011110011100011001011110110001001101111111011110000000001000101001111101000010101000011001100111101111000011000101101011001010001100000101011001000011001100111001111010101100100110001010011010110011010100000001111111110100110100101011010011111010011011100100101001000000011000111110101000011011000111101001110001110011100010011101001010110110100111101110110111001001111010001101001000001011110110000011100100110011110011100000110111100110101111111011110001111110101010010110100100000001101110011011011010000110101110101111111000110010100101000010010111001010011100100001011011010111100111001100100010001111110000101000101110001010111011011110100110000010000000100001111000011101000011010010000011110010101100110001010110100100000100001111101111100001100000100100101010010001111110001011010110111001010010110011101110010101001111100001111101000100000011100011100001110001110011001111001001100110111000101111000000010000000101000100101011111011010001100110111010000010010110100100101110100000001011001011111111010000110000000101000100000011000011110010000000101101110100100110111010101000101101100001000100011000000100101110011111001001101011000100001001001010010110001010001000011000110111110000101110010101110111111100100000000100100000111001000000011100010010011111000011001100111111010110100111000101100100101001000100001100101000010010001111001010001110000001001111011001110011001011101100100110100100000101010011110011100010010001000110001110011111110010100001101111101001110101010011000010100000110010110101011101101101001001011010011111010100101101111110111001000011101001100011011011101100101000100001010110010100101001011111011001111011011110111011011010100100001001001110100100001110000000000011000100001111111110001010000110000100101000001000000000010011001011100111110100110001101110111100000111010111101011100100011000001100101000010000011011100111111100100110100010001101000110010100101010110100111100011010110011000000011100101000000001101010111000101111100000011001100100001101010111100000110011000011000111100010111011111011101111100110100110000100000000011000010100111001111010101000010010011001011000110101110000100010010100101011111001100101110100000111111101001101001001101010101001111011011111101111101011010000110100011001000100000010000100000010110011000001000011010101010010101110111011011011000000101110010000101011110000110010010101111110011001100001100100100010000110100110001001101111111001010111110100100101011111001010100000000111010010110111010111001110000000001000000011010110101100010001100110011010110000000010100100111100001111111101111111010111101100001111111000010110011110000011110111100111001101100000011011100111110101011100100011101110100110001011101011111110001010101100011000111011011000110010100010110011100000100110111110010101101011110111000010010100001111110001000011011110010110111011100100010001101101000101011001001010011111000010010011010101101000001010010101111011001100011110100010101010101110000011001010010000111010111010101010010011011101110010101110000001000100101100001111100111001010110110000111011101100110111111101000011110001010001000111010011111101010010110110010010001100100010101110000100110001101110100001110100110001100011001000010110010011100110010110110010001011010100100100010111000101110011010010011001001100011001010011101011010111000011010100110101001101101000010111011001100111010111110000010000111001110101100010101101110101011111101100010011001000110001111010010001000110100100001000010010101010101101010110110001000111101011100110001011000010101000000110100000000010110011110100100011111000101110111101011001111001110101101000100010110001000010011101010111001001110011110111011111110111011110001111010101100100100000110111111101100011110100101011111100110100111010110111000101111101111011011000000001010101111011001011011111010001101100111000000000001010001111101000110011111001111000010100001100101111001011011011001101001111110110100111001000110000100110001110101100000011110001101001100000010100111011010100110001001001110001010100100101011000110001100011000100000011111001111001001000111010001110001111011100010101011010000011011000001010111001101000101100101001111000101010000101111110010010000010001110101010101111110110010101110010110100110100011011010010111001001100111011100111100111010111111001010110000111110000001101101011101011011101000000000111111011011101001011111000001011011000001001101011110100001000010111111100000100011101011011100001011000100110100111011010010001000111011000000100010101101110100011101011110111010101000010100010110110100010111110110111110011110110101111000101010110100010111111010010011111000111100010110010111001101101010110110111111111101011001011110000100100111101001011100111000101011111110110011101011100100101001110100010001100010101101010010101010110000011011100101111001110000001100100000100110010000100101010000111100001101011110100111001000011111100001010000111010111010110011100000011000011010101001010100001000101011100111111011011001110110101011100011100101000001111100001001100011011101100101110001101111101111010111010111010100100100000010010110100000100110100101110000010000001000000011010100011000110000000001110101001101110000000111111000101101100100001001110101011101101111110010100011100000110001100011100000000001100001111010101010101100000110001011000000101111110001000010000100000010001011000010000000110101101110010100000010010101111010000001110001101100000101101000010011011100000011000110111111011101010111000101001101110010110000111011010000001100110010000010111111010010010000011011101010011111001110000001001110101110000100001010110010010100101010011000001110111011001010001011010110110001011100100111101111110011111000100010100011000000011110011111110101000010011100010100011001100011011010101100000011100010110111001101010101101110011000011111100111111011011110110101000100110001000011100011010101110001001010000111001001000011100101100001000100010010000000111000111101011111111111111100101011010001101101110100001001101001011111111100100101110001101100111001001010011111010111110000011110111100101101100000000101111100011011101110101000111101100001001011001100100100100110011100001010110010001111110010001010101110001010001101110011000000100000001111010010100101100100001000000010110010110011100010100011111011010101100000000001100001111111100101010011001110111011001100000001000100101110101000111000010100101111011000010011110100011011010111100000000000110001100011001110111001111111011001111111110011110100010011001010000111001110111010001010101100111111000010111011111001100001111000011011110111110001001011001101000110100100110011000101010111000001111011001110000010111010101110000001010000110100000000101000111000010110111011101001111111010001000100011111001010001000001000110000101100111010010000111010011111110011111101000101100011001110111001110001001011000000110101110010000011111010000011001010011011000011010111001101001000111011000000100111101001110111001110100010100001010011010111010001100110010101100101001110110001001101111000000001001000011101010101111111111101110101110010101100101100001111101001000111011010000011110100010101111000101010010101011001000011110100101101101000001111101010011111000010101100101111101000000010100011001111101111110010000000011111000010110000110010010011011101101010011010100110000110001010010100111001011110111111010001001100011011100101011100011001110111011110010001110111111100000000111010001100010101000011010111100101000001110000101011111001100100000101100111011010100000110010011000011011110010000011110111110001010001000011001110000101000001011001001101110101000000101010010111111111001111101101100000011011010011110100000011000000111111011011000111100010001010100101110011101110100111001000101110001001000011011001111111101100110000010100110011101101111111000101100000100001100111011011111111100101011010111110001110001100100101100010001100111101011010111010110101001011011111111110001011001111001110101000011001000011111000110000010101000010101001000100001111001001001110001010001100001011001111001011111001100001000010100001000011000000100100111100100111110111110110110011100101111011111110011011101000000011001110110000001101010101101100111100000011011010101011100010010000110011110011110100110000111110010001010010010011110111011100100011000011111101000110100101010001000110000101111000100101000001010111111110110000001001110000010010100010010101010000001100110110011011101111010001110011000110111001100111000010101000010011010000000000101110010011010001000001111111000101011101111011100011011010001011110010111111010011111111001000000011100011010101000110001101011001101001011000111000101010110001011000001000001101111101101100111000110000100010101111001010001100001100000111010101100001001111100111001011011101101100110010110000011111001100101011000010011110001011001101000010101000011000101111111100111110101101010001001110011110000001010111001011111010111001001011001010001101101110011000101110010001110111100000000111101100101010111010100110111111101101111110110111001010010100001110111100110001101110101111111110111101110000000001111000011101110100110000010001010110000100100010101011101100010000100011111000100101010011101011110010101110000010101001010001100011111001100110110001111000101111000000100110000000000100001111010010110011110111011000110000010100000111011111001101110011010110011001001001111101100110101010110100000001100100011011001111111100111100000010010011101100001101110111000001101000101001111010110011111000110000111011100010000111010111111001101000001111010000101100111110001010001000010100010010010111010100100111010001001101011000101001011100010110110011101010100111010111100111110001011001011100100001010010010110111001001101001100101001010110010111110001110100101010001000011111100110111101111111011110010100011100011011001000111011001100000110110011100111011001000000011001111110101100110010101100100101101011001010011110110001011011101011000010110101010100110100000111010011001101001000111101111111110100011111110010101110101010110110000001111001000011101110001011000100000001000001100110010011101111100010100101011100000111111100010100101110010111011001000100110011100100000111110111100000100100000000110001010101001000111111110110010000011101001000011000000011010000100111011100001001100010001000000001011010111011011111110111010100001100001111111001111101100101000111110100000111110111100101000001000111001101001100101000100111111011011000110101010111100011111111011100000000011111000001111010011101000011101111000000010110100001011001000010010000000001001100111110111111111111001111110110000111110001011001011101010000001010001111101111001000100010101101101110111010011001000011011000000101011111101001011101111111010000011001000010111000111100100011110111011001100000101110101001010101011010011111110001011011101101101011100111010000010110101010001101100101110011010110110011100100110001000100101111111010110001000100011011101001111101100011010010111100001101001011010101001011001000100010000010011101110110100010001011000111100010100000101001010001110011110011110111101110111010110010111100101110011010010011011101101011011011101111101111000110010101101011111001101111000000110010101110101111100100110110011111001100100101011111111011001110100001111011000110110001101110100011010101100000011110010111111100011001110100001101010001010010000011101010011111100001111010011100111011001101010101100010101100110000000101101010001000010101110011111101101111101010010110010100000010011110111101111111000011001100000110001011001010111101100000000110111101110001111100100011010011101101010010011000100110010010000110010110010000101110101111111101110100010011100110111100110101010100000111000011010101110011101101100000000100001010000011000100011000000100001111111101101111111010110010011001101010000111111111111010111000011100001111000011111111111001101011000101001001010001010111010010010101000101111111001101001010011000100001011011001010101011110010000111110001011001100000110000100011110011101111110110100001110110001110011000001100101101011010100011010000010010000101000011110011000001000000000000000000000000000000000010110000000000000000000000000000001100000000000000000000000000001011000000000000000000000000011101110000000000000000000000000011111010000000000000000000000000001011000000000000000000000000000010110000000000000000000000000001000000000000000000000000000001001100100000000000000000000000010011111000000000000000000000000000101100000000000000000000000000000011000000000000000000000000011001110000000000000000000000000001001100000000000000000000000000001011000000000000000000000000000010110000000000000000000000000101101110000000000000000000000000100101000000000000000000000000000010010000000000000000000000000100110110000000000000000000000000001011000000000000000000000000000010110000000000000000000000000001100100000000000000000000000000111001000000000000000000000000010001010000000000000000000000000010011010000000000000000000000000001011000000000000000000000000000000110000000000000000000000000000101100000000000000000000000001111100100000000000000000000000000010110000000000000000000000000000101100000000000000000000000000001100100000000000000000000000000010110000000000000000000000000000001100000000000000000000000001011010100000000000000000000000000010110000000000000000000000000011000000000000000000000000000001101100100000000000000000000000000000010000000000000000000000000010000100000000000000000000000001111000100000000000000000000000010110010000000000000000000000000000101100000000000000000000000000001011000000000000000000000000000000110000000000000000000000000010101010000000000000000000000001101111000000000000000000000000000010110000000000000000000000000000001100000000000000000000000001001111100000000000000000000000000000110000000000000000000000000000101100000000000000000000000001010011000000000000000000000000000010110000000000000000000000000111110110000000000000000000000000001011000000000000000000000000011101100000000000000000000000000000101100000000000000000000000000101001000000000000000000000000000000110000000000000000000000000011010110000000000000000000000000001011000000000000000000000000011111001000000000000000000000000010001010000000000000000000000001110101100000000000000000000000011110101000000000000000000000000111110010000000000000000000000001000101000000000000000000000000011101011000000000000000000000000010111000000000000000000000000001110010100000000000000000000000011101010000000000000000000000000000001100000000000000000000000001110100100000000000000000000000010010111000000000000000000000000111111010000000000000000000000000110001000000000000000000000000001111100000000000000000000000000000001100000000000000000000000001101000100000000000000000000000011100100000000000000000000000000110001110000000000000000000000001000011100000000000000000000000011111010000000000000000000000000100101110000000000000000000000001101110100000000000000000000000000101010000000000000000000000000101100110000000000000000000000000110100100000000000000000000000000111100000000000000000000000000001110010000000000000000000000001110100100000000000000000000000001001001000000000000000000000000000101000000000000000000000000000010000000000000000000000000000000010110000000000000000000000000111011000000000000000000000000001111010000000000000000000000000011101001000000000000000000000000100101110000000000000000000000001000010000000000000000000000000011101101000000000000000000000000000001100000000000000000000000001111000000000000000000000000000011111111000000000000000000000000011101010000000000000000000000001111100100000000000000000000000011100110000000000000000000000000010001110000000000000000000000000110111000000000000000000000000010001001000000000000000000000000010110110000000000000000000000001000000000000000000000000000000011111001000000000000000000000000011100010000000000000000000000000011100100000000000000000000000011110001000000000000000000000000011011100000000000000000000000000001111000000000000000000000000000000011000000000000000000000000111110010000000000000000000000001001011100000000000000000000000011111001000000000000000000000000111110010000000000000000000000000101111100000000000000000000000001101010000000000000000000000000211538FDBCA7F7A7718742116741379CFDA67155871AAABFAA13153771C587178881888615888F897117589F78881774417588FA88818845165781777BF97CF36A9FEA7ABFC92315259195881779AF989FD887817677FA989F8979178461458818688FA987F889AF994685175167D5EFC6A17553136FFABF9FEBA7519899FB876177751775614752142A8F986915699FBC98197BBF9B99F8A712A388F8886F68000010110001001000110100101101101000110100010011100011011011001000011011011000110111010011101100101110000001111110110010000111010101001001110010100011101100001010100111011000000110101111011011011000011000000100000011001011010000000001010000111101011011110011011111110010011100000111100111011000011100101101010100111010000010110100000100010001000100011101001000100111110001100010111010101000101010110000010100001111101110110110001111010100100010100000011000001100110001011001110101100110101111000100101101101001100111101100100100101000011000001001001001101110100100100100110111001110011000100010000101000010100110101011011111110100101101110000010010111001010010100101000000001100101010011011011100011010101001000110100111011000001111000100010000000010011010010000101010010110110110110101111110110010111110011000010100100000110100101000010111101101110011000110101011100110100111111110001000001110000011001110000001010101000000101101001110101100110110010110001010101001111011001111110001001001011000100100100011001010110111011101100110001101010101001100100100111000011011010111001000010110001010001111000010010100001111001010110011100010111011001101011110001010011100100101111011000010011000011111111001101111101110111100100110000001101010001011011000011011110110011111001111011011011100101001011110001100000010000100111101011101110000000110000011111101000011011000010111001000101010001000100111000000110000001110001010010010100000001110000010000101000100000110010000000000010001100011100010110011111100001101101000011011100001010110010011100111101100110101100100001011100111011000010101001011100001010101100100001110101001111110011100110101101001110111001111111110011011101100111100101000110000011101110101000011001100111011110101110101110001010100001110010001011011101000010010100010011111101110001101000000100010100110110100100101111001101000000100011100100111100100100101100110001001000001010000111001110100110011000100101001000010110101011111110011001010010100000000110000100011010001111010110011011000011011010010000011011011100111100000110110110101111000011011001011000111100110110111001100101101001110001101010010110101001101101011001111110010011100111000111011010101011011011111010100001111111001011001010101010111000010101001010001111110101100001100000001111011101001101011010111001010010001011000110111100101101011100001100000001111000101100101110101100111100010010000001011101111110100000010111100000100001001001000011101010011011110010111100111000111100011110101011011111001000110100000000100100010010011010000011001001001001000011001001111000001001110101011101111110011111011000101110100111011101010000000010010110010010001010001100110011100011001110011001011111001100101000001100101110000111000101011110001011110011011010111011110100000000101011111000001101110111100101111011000101100011110011011100111011100001100001110010001010111011111101110110110100001000110111110000001111011100001001011101011001111100110110001110000101001101110101010001111101100011101101011101111011110100000101100111011111110001101110100111101110010101101011100010001110101000101110100111101001111001111100011110010101011000101001110111110001110001111101111011011000011101110001100001110100111110111110011001010001000111010101011010100001011111000001011100110000100101110001000011100111101100011000010101010100100010001111110110100100000101101100000100110000010101001011010100100101100010110101110001010110110001111110011011000100111100101110000001111000110000111111010110111101010001101011010001001110001000011001001111101110010011100110110111110101010011010110000110011100110011110100001001101111110100111101100011101110011000100111100111010011100101101100101101110000101011001001010111001000010010110011110111111000010010000001101001101000001100111011101110000010001001111010111011110010010100010110101111001001010000100000111010001110010011111111010110000101001011101011011110100111101010001001100101011100010001000000100011011110101001111011111001011100001110000100110110111110001001111011001101011111101010111101110100110000110001010100011110011010110101011010010010110001111100000001000111100100010101100011110110100011000111101000101101111010011001000000100111100110001100000010001110101100110100010011111010100100000100010000000111000010110001101000110101000011010010011000100000110011000010100111000100011001101001011111000101001101101101011000011000011111011001110110011101101111110001110111101011010110000111101010101110110110001001010011110111110111111001111100000110000101101101111000110101000101111111101111001111100111100011101000111000000010111101110001011110101100111010010101101111111000100010001001001111110000011101001001011010100111011101101111001110011010101100001001101001110010011110111111111101011010101100101011001010011101001101000110010111100001100000111001100010010000000000110000011100111100110011100100000111001000010010001000011111101011100010000011001001110010100111110111011010010111110101110010110100111100100011000000110101100010011100101011110011100010101000100101111011101110010101100011001001010111001001011111111110111010111000101000100101100000111100010101110010101110111101101010011011110100010111001100101111101001100110100000001111010100010001100010011011100001001011100001110111001100110001001100011000101101110000100111111001011001001010001100111111000101111101011011011111100111001011010000111111000111011101010100100011101010101111010101100010011000100100010011111101101011110100110110011100100010000000010000011101111001111100110110110111110001101111100111001000001011000001011110110110111100010011011011011011100100011010011101010001101000000010101010000001000011100100110100010001010100011101001000011010000110110101110000100001011111111101001100100111001111001101100100011000010101110000111110111000001010111100110100011100100101111001111100110101110100101101111100010100100100101110010100110111101011101111111100001111111110100011011010110111011011010101111100000000001101111010010101101010111010010010100000100110010111111110001111010100001111011111100011111010010010110001110111000001110111100010011101110111010010000001111000000000111010111100111101111101110111110011110101111111010110111011110101110110000111111001110110000111000001011110110110111010100101000010000011010101100101001010011000000111111111010010100111100100101001011101000100001111010001010100001111111001111000001000111011011101110111110001111101001110011011101000011011111011101111000001110100110111101101010010011110011110110000001111101111001101111011001011011110011110100100010000011010111111000111101111111000100111000111101111011000101101111000111110101101101011100111100000111010110011110100111100001110111111011110101011111000111101110010010001010010111000001111010000101000011101110011001011110011100101010011100110110110011101000100010110111110100010100000100000010111001001101010101000110100101110010110101111001100001111000010010010010010001100100110101010000111110011010010000110011001001010111111111011111100000111001001100110001010000010101111011010110010100101110110111110011100111111011111000000100111111111010010000000010101101000100011110010010000111010101001110001111000111000111111000100101010110001110011000101010101010111101111100011001100010011010110000100011100011111110110111001111000011000100111001101011100011110101101100010111101111111111011101001010000101100001100111011001100101100010000100110111110100010010101000010110010111110111111000011010110101001111111110001111111001101000110011111001101010111100001011011001001010110101011001100010100110100010011011001001110100101101001111010100110010000110100100010111011011010100101000011111100101010110111010001100011001110001001101101011111110101000010010110011010001000001110100100111100111000010100111110111000001111010100100000110111011000001011100101110010010111100001101011101000000111111101010110100010101110111100011001110100011111111101111110011011110100110111101010100000000000010110111101111010000111010101110111111100111010111010001010010101011010011100000110110111111111111111010110111011010010100101101001010111110111001010001001111001110001101000101000101000001001010101000001111101100010001011011110101010000011100001100010111110010101011111101010011101100110011111110011101110110100011010000001100000101101000011111101101000000110010001000110101011110101010010111000110111001111001010111010101111110111001000101101100011000110000010101100110100100101111001111001110000010000110110000100100100111011101011111000010100000011001110100100100001110010100111010000011101111111011111111110101101010000000111000001100010011110010001111111000010100100011010110101000000101100000111110011111110111100000000110011111111110001000110001111000100001000101111111101111101010101101111001010010111111101110100010110010001100101101001100010000100111111000101001110001010101101000000010010011001100101010000110101110001110111001001011111110011011001101100110010110001010100111000001000011011001001001000101011101011110101010110001011110010100100100010100101110001001011011101100111010000110010001010101011001000010001001100010101011110011110001011110010001101100100000111101011011110100100111000010100010110001100001001111111000000110110001110001100110110100101111010111000110000000111111010010101001100111100011101011111111100001111110001111011001010000010110011011001001101110011101111001100010111000111110001000101110111101111001001000111111000010101011011001110010010111000001110111011101110000111010000000000111101010000111110101110111001000100100011001011110001111010000010110100111011111001000110000001000110110010110011101011000011100000001101000000000100100011001000100101000100100000101100110111011011111100011110110011001010110100010001010110010000000100100011100001001111110010101001100110100011111000101111110001111100100111011101100100110010110010111110000000111101101010101110001001001101010101110101010001001100100100110101101011111011001011101101100100011100011110001011010101011011111101110100001000000011110001110100001011100011101101110000110101100110100111101011110111011110010100100101110111100011000011100010010110001100010011101101111111110011010100111100110101101011011111011100101011101100110011110100001011101001001001000111000100010000100000010000010100111101100110001101101001111111001111011011010010001010100001010110000011000101000111110000010010000000110001000100011000111010110101101011110000010010110001101100000101001100110001110111100011011110101001100100100010010010000110110110100110010110100001000110110110111100010101101001100011010001111110010010111101101001110101100010100011001000111000010100001111011011000000100110110100001010100110000000000001010111001010100011110001111110001010110101010001100100111010100010110000111000011010101000101101010101010010111011101011101110000101011011101101010001000110111110001111010011110111111101101001110000110100111100000110011010001100100011111110110001010100111001001110110000101000101010001000110010001111111011101100101110110110011111100001000101000110000010001001110101000110011110011100111101010111000001011101111000111010000111110100011000000101000110100000000000101111011100100111111100111010111111100110110110100111010000101010111001010101111100001001011100100101101001111110010100101101101110000111110010001101010110000100010011100101101010110110011010001100010011111000110011100100110010000001110001101101010100111110011010111110101111001111111011001001110010001000001101100110100101000101111110100110000101101100101101000110010111101000010101100101000101000000101010001101011001110100101011011000110001011111100110010011010011100001111110010100110111010001100001101111001100010101110111010000110111110011111011100101011100101111100000100001010101000111100100001111111111000100011010001111011101000111010101110011111000110000010111111111000111001010011110110010100100111011110111110111100001011000111011101000101001110111111001101111111011111001001100110000000010111010110011111111100001000010100100001111101001100000110111110111010101111010110100010011011101011111110110001100001110111010100111011100111011000011110101110000111010001110010011010101000101001000100110011001010100010000110111000000111110010010111111011001101101001110101011100101010001101110100011111001101100011001001100000111111001010110000110100011111101101101111011010011010010111001100111110000101000100000110101100101111110100010111000110111111111101010101111101000100100101000100101100111011000000010010111111100001111000111100010110101100011100000110101111110001101101100110100011000011111110110000111011100110010010000010100100101111001000111111011100011000001100111111010101111010100001111001011101011001110111110111010110011110011101101010001010000010110100010001001011001001011011010110111111111110010100111010000110110100111000010101110001101000101110000010000000011111011010010111000001000101011000100100110010011111101011101111111100011101010100111001011111010100101000000011010101110101101110001101011001111110010010111101101111001100000100100000100001111001110011011110110110100000110111100110111010110001011111110111100110100011110111101011011101101111010001100100001010110001011000010011101001111010110111110111101010011111011101110010111110110001001101101011110110001011000100010100010111010000001010101110110000100001111000010101001110100000010001011110000111101000001100111111111000010000000100110000010100010001110111010111110000110110101110010011101010100001001100100010110010010011010000111010111100101000011101111110010101110000110000010101000110000111111011101010100100100001011010110011001011001011110101101111101101101100110110110110100001001001110010110000001111010000110111111101110000111001110111101000001000001011000000010111101010110010111001001100100110010100100111111010001100000011110100000111100000010000100011101010011011100111100111100111100011101010100100111101101110010111011100011000010111101110010000100110111010101111111111010101010101011010100010010011101111101011100000010100010010100000111111011111110010101001011101111010010111111111011011001110011101011001011010001011000000000011101011111011101111011101100011011000100100111010001100000101010101100101010001011000111000111010101011011011011101111000000101100101010010100110110010101110010001110011000101111101101001000001010010111110001010101001101000010110001100110111110001101001000110101110111101101110011011010101110111010001110111100101000100001110100000111000001010000000111110101111011111001110000110000100010000110100010001001001011011001001000101010000110100101100000100101100001100000110101001001111100001001011001100000001100110101110100110011010001110000000100010111000010000010111100100001111110101111001111100101101000110011000011010110101001001000001101100110000101111110010001100111110011001000011000010110001000100001000100010011110100000000101100101110100100100101010101000010010111000000001111110110010000000000111110010010100100101010001010001011001100111111110101100010000100011101010011111000111000001101001001111101001101010101001010110111010101100111011010110100010110100100000001100111011100110100000111111100000110001001111101111000010001111000000111010000111111001011110101010111111100010011010111101110111010111100000100111111111010100110011111101111101011111010000000001100001010111100111110001111001001100011011010100011110001110011010010000000110010010100101110010001101100010101000010000111101100110100100100010010001110010101000111010110010000001101011110001011000010001011001100000101110100000001001011101001101001111111001011111110100101000011001111111100110100110110100111010110001010111101110001000011101111100011100101011001111011011100000011001110110010000010010100110001000000011111010011111101000100100001111011000001111010101100001101010110111001111010001010111010011001100101000111101101011001100010100010110111000000001101001111011011111111000100101100111001110110010011001011111111101011111010010111001111000001110010010001110011111011001000110001110111010100001010101011000000000111000101000011100011100100101010001110100110000011100101011011011000001101100110100100011010000100110010010101001011010100110101110011100100111000011111000110000111100001011001011001110100111110001101001110001001010000011100111010111011101000111110001011100101001101110110001100001110101111110011001001101111100011111101100100100001001011111000111001110111001010000011111001011100010001100001100000001110010100010010111000000110111100000101000101000010000000100000001111010111010011001010001001011010001001110110010011111000011011100001011100101111011110010001111010001101000110100110110010010000100101011101010010001000011101010110000011100110101010110110011000010110101011110111111000111110110010110001110111101010111000101110111001110101100010100110000000101011011010010000100000010011011000111101000010011100010101010111111111100010111111111001010000010001001001100001101101011110110000010111111011111001001111000001110100101111001110110011101011001101101010101111111111110111110010011000011000001110010001101111110100011011110110000000000000000000000001100000100000000000000000000000011011001000000000000000000000000110010110000000000000000000000001111101000000000000000000000000001011001000000000000000000000000100010110000000000000000000000000101100100000000000000000000000001011001000000000000000000000000010110010000000000000000000000000101100100000000000000000000000000011011000000000000000000000000100011100000000000000000000000001100100100000000000000000000000001011001000000000000000000000000010110010000000000000000000000000101100100000000000000000000000001010001000000000000000000000000001111100000000000000000000000000011110100000000000000000000000001011001000000000000000000000000010110010000000000000000000000000101001100000000000000000000000001011001000000000000000000000000110111000000000000000000000000000000111100000000000000000000000011111011000000000000000000000000010111010000000000000000000000001011001100000000000000000000000011110010000000000000000000000000101001110000000000000000000000001101001100000000000000000000000011100111000000000000000000000000010110010000000000000000000000000100111100000000000000000000000001011001000000000000000000000000010110010000000000000000000000001000100000000000000000000000000001011001000000000000000000000000011001100000000000000000000000001001101100000000000000000000000001011001000000000000000000000000010110010000000000000000000000000101100100000000000000000000000000001011000000000000000000000000010110010000000000000000000000000101100100000000000000000000000001011001000000000000000000000000010011000000000000000000000000000100100100000000000000000000000011010001000000000000000000000000010101010000000000000000000000000111111000000000000000000000000001011001000000000000000000000000110110110000000000000000000000001000000100000000000000000000000001011001000000000000000000000000010110010000000000000000000000000101100100000000000000000000000001010010000000000000000000000000010110010000000000000000000000000111100100000000000000000000000001001101000000000000000000000000000011000000000000000000000000000110011100000000000000000000000010110111000000000000000000000000101100110000000000000000000000001110111000000000000000000000000011000000000000000000000000000000101110100000000000000000000000000111100000000000000000000000000010001111000000000000000000000000101001100000000000000000000000000000010100000000000000000000000011011001000000000000000000000000011110000000000000000000000000000110101100000000000000000000000010101111000000000000000000000000000001000000000000000000000000001010100100000000000000000000000000100110000000000000000000000000000011110000000000000000000000000000000100000000000000000000000001011001000000000000000000000000010110110000000000000000000000001010011000000000000000000000000000001100000000000000000000000000110001100000000000000000000000001111000000000000000000000000000001010000000000000000000000000000010111000000000000000000000000001000101000000000000000000000000001011001000000000000000000000000111010000000000000000000000000000101110100000000000000000000000000110011000000000000000000000000001011110000000000000000000000001101100100000000000000000000000010011101000000000000000000000000011100110000000000000000000000001000001000000000000000000000000010000000000000000000000000000000111011000000000000000000000000001010011000000000000000000000000001011001000000000000000000000000110010000000000000000000000000000101000100000000000000000000000000011110000000000000000000000000011110100000000000000000000000000010010000000000000000000000000001001001000000000000000000000000010110010000000000000000000000001101000000000000000000000000000001001101000000000000000000000000111111110000000000000000000000000101101000000000000000000000000011111010000000000000000000000000000001100000000000000000000000000011001000000000000000000000000010010111000000000000000000000000010110010000000000000000000000000011001100000000000000000000000011010101000000000000000000000000010000100000000000000000000000001100101000000000000000000000000011001110000000000000000000000000111110010000000000000000000000001101101000000000000000000000000001011001011111011110101111010000100000010001011110010010111100011001100111100101100110100111011001101111111111101101010110010111101010100101011000000110111110001001111011101011110000000100110001111000000001001001010111001100010110110110111000100000100011001001100010000100100101100010011100101010101101110101000010110111101101110000010000011110011000100000000101010001001110100110101001100111101101011111110100000111100000011010001000010001000001110000001011000101000101010110011001101001011000100110011111110100101010011000011000101100000010001101110110001011111111001010100101000011000011000011000101101110100110000100101001000100111001100100101010001011111011001110111111110110101111100010110001010101011111110111010001101101111100100010111001000100000000100110000000001011010111111000110101011010100000101010100101001010111110101111110011101010110100010011111000010111110101011011101000010010001111110111011010010100100100011001010000100111100011011011110110000011010010111100000110000110011011100011000100101101101101111110101110100100100010101101001101110101111111011010101011101111111101110011101111110100011011111111000100110101010001011110101001011100111010010010011000100100110001110000101011011001000101001110000011110111110110111010100100011111101000101110010111101101100000010101110000000011101111001010001000010101001001001011011100010010011000001101101000001111110000010101000010101101010000001111000111000110100011111001000111001010111110011100101010010111011000110110110000111110111010011100110110001001100010011101110000011111100000010001100110111100101011000000111010111011011110110010010111010110000111011110011100100000110100111010110001000000001001001100101111100111101101000100110010011000101110100111010101111011110100001111011011011011100000001110100110000101000000101011100111011010111010110111001100000110101111000110010100010000010011000010110000101101010011111110100111001000100101100000100101011010011001010111111010011000001100101110001001101101010000000111101111101101101001011011111000111101100100000100111001100010101001110011010011001001100111010011101101000001111010011000010111111011110001111100110011000111111010001111011110011000100101001101100000001100111110010001000100011001010001011111101011100101001111101001101110001001000011110001001010001101000111000001001110011001111010111001001011001111011000111110000101011011111000010010111000110000111101100110110101001110000001111010111100111111101111110011101011010111100000111111100110101101010011111001101100110010011001010001011101011111101111001000100111010101100011000101100110111100010111100001010111101100000001110111000000010010111011111101111111011110010111111111110100111101100111111111011110001000001111110001111000010101100111010010000101100010011001110001100110011100010111000101100101010010100000110010010001000111101011101111100110000100010100101000011011110111000110110011011000000010110000101001011101010010101001010010010101000110010001000100100001110100111011110110100110011000000011110101001110010010010011000000110000110111011001011000011010011010100111001111011011001010110010011011011000111100110001110110101100010100100011110011011001010001100111001101010110001001001011010001101000011101010110001001011000110110101111110001110011011000100111001110101110101100010100001111010111100000101101001101011110000000100101101110100011110001111010000111111000111010010001000010111110110001100001011001011000001111101000110101100010001110000010010100010011000011000100101000110010011110100001001001111010001000000001010000111110100101000110110010101110010110101010000111011011110001110001100001110000101110100111101010100011110100010101011101111000011001111111101000111101000000111101100011110010100111011110110111110111011010111111000011111101000011001110110110010110101111100000001100111110110100010111010010001110011000100100000001100011000100011001111111000010100001011100011010010011011010000110011101111000110111100011011101001101001000111101001110000110111001010000110111101001000110100011000011000111000001010111101001001010100001100110110100000001100110011110101010001010001111010100001111001001011001101111010110001100001110011111000111101010100001001110001111001100010100100011100100000001011000111110101110100111010001000010100000110010101101011101101100101010111001101100011100111110110110011110001101111011010011011011111000000001001001010110001110000100001001110111111010001100011111000000011010101001111100000000011111100101001011010110101001000100010110101011110010001010000101011110110010000110111101101100100100101100100010000111001111000110010100100011100000111011110001000000111010101101101100110100011011000000010101011100110110111111010101011110101011100110011001100001111100011000000100011000111011011110111101110110100010110100001100111101111101011011111111110101001000010011011011101011000010110000011110110101100100011001011010010101110001011100111000100011000101000111011100001010101100000110100010010111101101010100111001010110100001111101011111001010110101111111000011001100101001001100000011100011011100110100111001010000010010000011111001110111110110100001010001000001101001001110011000101101100000111110010111001011001111111000110001001111001111010100001100100100010110001100000010100011100110001011000000000010001011011100100100011000011110000101100000110110100100100000111100001000000110010110011000111110010101111101011111010110010101100010010111010011101011101011100010101001110110111000011001010111111111101100101101110011011001110000010001111010110101101110101111010010100100110101111110100101101010111100100011000100100000110100000000101000000011101100011010010010000000011110010000110011110010110100011000101001110100111101111000001101011001100100111011101110101001011100110000011111000010001011111101111110111100100011101001101010100100000101001010000110010100100000011111110001001111101001000110100110111001001010001100111110000000001111011001100110011100111000011001100100100011110100011010000101110110110101101101111100111111011000110111011111110111111000011011001111011101110010000111010111011011010101011110010000001001100000000001001011001000110111100000000100100110010111011100110111011101001100010010100011001101111011100011111110010111011010000000110100100101101010110000011110100000011111010100100100001001000001001001111111101010000101110110000011111100011101000100010101111000101010010100000100010110110011011110001101111001001111111000000001001001110011111000100001101001000101000110110000111101100001010100001110110101100001011011011110011101000101101011111011000100101110001110100111001000111100010111001000101010010000110100001001001100011100101011001011000101001101000111000011101011010111001011000011011101011101010100110111110000100010010110010111010101111111110001100110011101100000111101110001011110010011111111110011011011110010110110001010011101011110010000001000100100001100001000010000101100011100001011010110001011011100010111101001010011111011011000011111110110000010001111011010111011000011001000100011000110011101110001010111101101000011111111001010101001110111101110101111110011101111010001000110100101111001100100100011111101001100011111001101001000100001000010010100000110000100000100010000111010000000111010011001101011000000111010010100110001011010011100111110101101001111100011101110001000110001101010110110110111111111110111000001010110110011011001111111111100101001100000001000111010001000000101110000100100100111111101010000101011010011110010010001101110110110000001111110011100110101011001111000111100011001000111000100100000001000001110000101001110111110110110110001000001110110110001010010000000111000000011000010101110001010111110100101010011100010010101011011101010111010101111011110111000110110011010101100001111101101010101011111100010000101001101011110010101111010001000010100000011100110011101110111011111101101111011010011101111001010110010010100110111111000101000011000111011111000010010101010001101111111010000000110001110001001000001000011110101010010101010000111110110101010110000110110011011101010001000010111000000000000001001000010010110000000010010001001000000000010011111000010010110100111101011100011100111011111010101001001100110111100010010011101001110110010110110110011010101100100000010011110110011010000111001001101100010111110101000110110101011000001000011101101000100010100010101010111100101001011110011101101101000011010000101000000001100100010101101011011110111101101011110101000111100010010011101101011011001100000000000010000000100011011010010110101011111101101010111001000100010100010111011100100001100001000100100011000110100100001010010000010110001111101110001011101011001000000011001100000001100000010010001000010101100001010100000110111111100101101100010111111111000100101110111111000101011010110001000001010011001100000010101101111111101110011110111100011110110011110111110010111011010100110001110101100001011110101010111011110101010001000101000011110001001110101011110010111101010100110000011010001100010101001101100100110101101011101100001001010000110001010111011010000011110111000100110111000100001101111110011111111111001100001010101100101111111101010111111001111101011101101100110100101111011110010011100000010101001101011011100111010100110111001001101010011000110000110101000101000000110100111011000110011000000110000010001011111100110001001010001111111101110100110111111110111111111111000111110101011001111010110101111100010001001010011111011001111110001110001100101001000001100111100010110101111001101101110111001111101100100101101110111111100010110001100110101111011001011010101010101110011100111011101100100001010000001100001101000110111000000010010001000100100100011010001111010110111111011110010000000011100111010101010100010101111010011000001010110110111011000000011100001101110011010000111000010000000010101110001110011110010010101000001000100010111001001001000100100011110101001111101010100011101011110101100110101111011111000011010101000100010000101100111011110000011100000011111000110101100100110000011100000101111001101100101101101110001011000110011101011011111000010000001000001111100001010100001101010010000010011111010110100001001101111010010110101100100000000000001011111010111001000110110111000000111101011100000000000100010111000000111100011110111011000000000010010000101011110111110111111100000101010011101011111000101100011101010001111110010011000000111000001001001100010010001010010001100000000011011010100000100011000001011100111110110010101111100011000100001000101100110110010001000010010001101010101011101000100101010000011110110011001110111001101001110110110111000000011110010001001001111111100000010101110111111000110110000000011101100000100010111001001101010010000110101001010010001001101000110000110111010100100100101010001110111011101111101011011110101011111110111001100001010100000101001011011000010111110000111010110110011001000100101101100110110110100111010010010000010111100001110011010000101010000110010101010001001010110101100000100010011111110010001000010100110010100010010101111100011001011101001010100011101000000010001001111111111001000111110010101101001011001011101000011100100000011110010001001000011010110110111111001000010001110000010110100001000001101100010100001010100001001111100111101001000101011001011110101010111010011001110111110001111010000011100010000110001111000100100010110011101100001001010110011011001110010000001101011101001101100101011000100001110010100100110111111101001111010110010010001110101001101101011110011100001111101010000101111011100001111011101111111111100100010011111110110101111010101100000010000101101101011110001100001100101010111010001011010100001110000001010001000100000001001100010110011110111100000011100011100110000110100011001000011110000100100110101100001010100101010000101100111101100110001100010100100101101100111011110111111101100000010111001000101100011111011011010100111100001000100111001011101101100011111000100000000100010001111100110111110111011110111110110101001111001100111011110001101100000001101001011011110101101110001000000001110110101001000000001011001000101110111000010110011101010010110010101001101011101101101101000010101111111011101101100100101000011001000010110111000100100000100010000000100010001101001011110001000011000110001001101111101011011100110001101100100010101111000110111100001001100000001011110011001011101001000001001101101010010010011010011000111100101011011011110111101000111011100101110001010110010110100101100001000000001001011101011011100101000100110000000101010011101000010101000101100010100000101110010101011011000001101000001010001001001010010101101100001010010011100011111001111101000100010111100100011011101001101110101001010101010000000001001000010011111000111001001010110000000110010110011000001100000011010001000011010010010110100011110100100001000000101100011101110000101000000000000011010110110101100110010001100110001001101101100101000000000111001100111001111001101100000000100000000000111000010101001001110010100101010000011101010110110001000100000110101111111010111110011111010110011110101010101101001101001000110110100111000100111011110000101011100001111000101110100110011110000010001000100000010101101001001100011101000001110110101110101011110011001011110000010001000011101001000001110010100100100010011001100010100101101111000100000010011110101110100101100000011100110001100100111011000110001101000000011010111011101000111000101111000010000001100101111011111101111011000011100000001110101111110110101000011010011001101010100100011100010011101101110110001001100100010001100010010111110110001111111001110010001000000111111101010010100000101011010111110100100100111101111101000001000100000111011111001110011000001001111111001110101101111101110111101000001111100101100111010000100101111111110000001010010101000010000111000010101110001000100000100011110001011100000111101110010111100111100000110111111000011001001011001010000011110101110010000111111000001100110101110000101110000111100010000111101001110100011010011001111000011100011101111011111101111011111011001010010110011011101000111000111011000010100101010011000100011010100100011111110010101001011000000000001001101011011011010111011111010011000110001110110011111111001100011100011101110101011110100111011001011000000110000010011111101101110110101011111110111111110101111110101011100111111111111111100111000001011111111000101100101010000110111001110001111010011010001110101001110100001110010111000110011001010101010100011010100101000100010001011100111000010010100110111011000010111101000101001010110000000000110010110100000111010111001010001100100000011111111011001000011000010111010010101101110100010000101101110111001100111011100001000110011100011010010110010110000010111110101101111101101010110110111000001110100010011110000011011101101111000010000000101100010011010011010010010101000001100001001100000010111010001101110011011011110100101011111001000011011011011110000000011100101011011011100110001101101111100001011111110110001001100001110011110111100001011010010111111010111100101110010011010011000100001110001011010000100000101000101110000000110000000001000001111101011011011011110010111100111101010101010010011110100100110000111001100110101110101011101100111010000111000011101101100010011001100011000011111010011111000000001010101100111111110011000000111001010011111111001111110101101111111111010111011100011011011111100101110100000011100010101110010101001100011000111100011111100000010001000111110001101110101101101000101100001110011001001011101010010010010111001000011110001111001100100100111110001100111111100010100110110111010111110101111101100011100000111011110111101101001111111000011101111110001101010010011100100000111101011100110101011010011010111000100000000100010111010110110101101111001100111011000100010001111000000100000000001001101001011000011110111110001110000110101111100000101010110011101110110011101010010001001001110110110101001011110010001101110100010000010101100101101101010111000100101011100111010101110101010101101110111100011010010100010011000011011000100110010010110010011110000101001110100111111111110110110111100100111101000011010010011101111111000110110011110111000011010100001000101101111110011111000001110111011111001101110100111011001101110011000010000111010110101111101111011011101111110101001010011110111101000111111100001101010101000001000100110110001011000010100001110000000000100110010110001111000000101001010100100010000100101111010011001011100111101011011110001010101110011101111001000011100010010100011001110001100101011011100010110010111100011101111101111110000111101011101100000001010010000101110010011100100001011011101111111100101000000100111010011000010001001011100100111010011111001100111100000110110001010111101111100101101110100111001000101000101000101111111101010011100001001011101011000011100101110101100110001111000100000100000001001000111010101111001010101010001101010111111000110110100110110000111001011110001100110001100100110000001101010101101111000100000011000001011111011101000111001001011100000111010110101000001100010000010010001000110110111101100010011001101010101011001110110100011001000100001100000001101101111011111101001001100001111000000101101011100111111101001011110110010111100111101001000101000100010101101111001011000110000000000110001110110000010001001111111111100101011100001111111111001110001011011111100011110100000010011100111100000110110010010100111111010110001111011011010111110001111110001100000000110101010001011010111111001001101000000100101110011111100010101100111011100101101011011011000101110101110011100101000010100011000110100100111100001101011001010001001001111001101001100011100111010111111100000001111101110101100100010011100111110110000011101100101010001001011010111110001101100011011010101100101100101110100010000011100101011100000010101101100000100111100011010100111011001000110110001101011100010111100011100000111010001100010111111001001101010001001111110111001010100000010011001111101011001100110011100100100101010110011010000000000111000101100010001110110001110001110111010010000001010010000011101000100100111101010001100111000000011111001010011000011110000000100100110110101110010110000010000000001110000110010000011010001110001111111010010111001110000011011101001101011100011111101111101101001110000011111100001010001011100000001101001100100110010110100000100101011111010011100100111101101110100111001100111010001110101110110001000010001100101111000001111100100010000101011110001011001000100011101100010011110111000001100101001001110001010111110001001111101101001000000101010100010100010011101111000100101111010110000011111000110110001000010110111111000110111001101100110010010110001100001111111101001000111101100111010010111011100001011011111111111100100100011100011100000111110111110010000011110001011000000111100101111010100010000110110101110100110111111100000011000110010000011101101111100111110010001100010110011110111000111111111110000110110011111111110111001000100001010110010101001110111111100001111010111010101010010110111011000110110000100100011010010101111111100011011001111011000100111110001111110011001100111000100100110111101000000110110010011000000001010001101111100100011001011011001000011001010001010101100000010111110011101001101001001110001110011011011011101100011011010000110101101111100101101000011000101000000011110110100101100001101101000011000000100100111100010110100000000001010010111110100011101111000011101101000011011101010011111101100001011011100101111111111110101001000001010101001000011000101010111111011000111101010111110010010000001111101000000100011001101110100100011001100110111101101111011101111111111001001111011100110011110010100100100110000010110110111100101001001110101111011001110011101110101101010000100111000100010110101101111100111100010111111010101101100001000001011010010000010101011000111110011101110100111001000011100000000000000000111111110000111010010110011010111101101000001010000111011000111010011100111111010000011011110111000110101011110110011011110010000111001101100010011000101010110101010011010101001010011110000101101101101011110011110001010010000100000010011111110000111101001011100000100110111010011000011110011011000000100001111100100000001101110011000111111101101101000110001111010011000111100101101110000101000000111011100100110010111000111110010010010010111011100011110111000101111101000001111001111110101000100001010110010111101000111001000001111111101000010010001001010111011001101101110100110111111010111111101111011111001011110111000000111011110011100011000010001101000000001101101100000010111001011101001010111001101000001110001001010010101001011110110111011111110110110000010110101000010001000010010110110010010111000011100100100111011111110011010111111010001000011100101000000010101100011101101111111010101110011100010100110001000011110111111100111001000010010011000001010101110001100110110010010100111111011010101101010010110010000000100101011100110000100101111001110110111111110011011011011001101010101101100000001001111111100110100000110010000100100110101111111011111001100000111100001100110000000011111111111100010111100101011110001110011000001001001000110001101100001000110110111001111110011111000100110011011000100110001010100010001110100001110101011101101000001101001000101001011010100000101110011001101001110100100101110001111000100101110101001011000001100110101000011010101101101000101101000110011110010010101111010000111000011010101101011011101010001110100101011110110001010111111000111001010001110011010011011000001100110110110100111101010000000001101011101111101010101010101010001100001111110111010010010001100100110111100000000110010000000100111011100001110000000001011010011011111001010011101101001001010010000110011101001111100010010110010010111001110111000100001100101111110011110000001001110010010001110110110111011100001110010100110110010101110100000101000110100110100100001110000011101110010111110000010110101010111010010011100100010000111001010100000100100010111011001011000001011101110111111010010011011101101100110111000110111111101010011001111000101110001110101100100110111111010001011001101010110001011100100010110110111101110111011111101111001010001111110010101100010000001101011000001010010001100010110111001100100010110000001100100101101000101010011101101110000100001001111111010100111111000100110001000010001101011001011111111101001101110010011011000001111110000111101110110000100111111000101100111110001100101110111100010110001101100111010000100000111100101101110011100010001001001100100001110101000100111100110110001011010100111011101110010101110000001011110010101011011011110110111101101000010110001010100001010010111101011101110111111111011100001100001110100000100000000100100011001010110011011101110010001100011100100011101110110000001001110011001111001111000101001011100011001110100111000101101000101101011001110011111000111011101100000110100110101000111000101100110111010011000010000011001011111110101001100100010101100111111011000000000000100100101110101110001101000001110110110111111010011010101100110100111110011100000011111111111010010101001011010101101011110101111111001001100000011101111110010010011010101001010111000111001001001011101010111000111001011000100010001101111101000011000110100010110000000010011101111000111010101110011010011101010011011101011001010000010010011001110100101101001001111111001101111010001111111101111111111011100010110110001011010011001010011010100100101111010111010111101011011100010000000001110010110000110010001000010100111011000011000110100010011000011011100110101001001010000010111000000110010111111111000100001100101101010001110111101000001011001001001001001110110111100011100010101000010011010111111110000101000001010000101001001110011000101011010111100010010000010000000011010111101111010110101100100110010110000010011100000111110000111011001000001011111001011000111010100001110000011010001010110001101111101001001000100010101110100111010011110101010101001110100110011111000101001101001000101111110111010101000010011011000100100010001111110100010100110000000011110001100111110111101001001010011011100111110110000001100111010111101010110100100010010001011101011100111010111000000100110101110010111101101001110000110100111000110011101001001101010011101110001011001110101100001010010110011111111001101011101100010001101001010000011110010101000001000110000010001110001000001111011111000000011110000101000100111101011100100001010000000011110000110101111000101110011101000100010111001001011101111100000000000110110111000000100111010110101001000110000010111001001110000110101111100110100100010000001011001011001010001111100001110001111101101101110101001100000001001111010101011011010011100100101110011000111101101000111011011010010111000110111011000010111011011011010000001010001100000001111010111111010110101110110011110001101010110100010010011000110101101111001000010001010001010111001010101111111110001100010101001010011100001100101011010001000001101100000101111000111001111100010111011001110111011100101000110100111100111111010100011100001100100110111011111111111001101100110010011011011111001100110101100001011100100011110010110000100010000000101101101001001000101000001010000111000101110100100011010000101011101100010011111100000011100110011111110110011010011111001111110111100011100100101001010100010100001011000100110010010000111011101110011101101110010000011011100110111000010100111100111111001100001101000011110010011100110110110110010010000001000110100010011110000101111100000111110000000000110011101010111011101010001111101111001101010100110101101101110010000000011111111011111001111010000100111010111000100001110100011000101100000000011110011010001101000101101110010110100011001100111100010110110011110100011000010010101011000001001001110000100111001000111001011110010110001100101001010001110100001010011010000011011100110001100101010110000101100000001101000001111010100001001101011000010000001110010111000001001010100001001110011110111101011011101110100010011011101001100100101010011000101011000100101110011100110000001000001010111111111100001100011110100010111110001111010110100110110011001000111000010011110010010101001100110111011101110001011110100010010001100011100100111011111110001110000001000101100001110010101010111010001001100011100100110001101100010001010111100101111000111101000111011100000011011011001011110100000010010001010001000100111001111010000101001111101101110111011100101100111111111010000100111011111110000110110000101011110110110101111110001100101011011111110110110001100010111011111100111010010001100010001100010000000000010110001111100001011000111000111001111010101000110011111010101001001011111110001011001001011111000011101110010110011100001011010001101000001001011100001001011001110111100000111101010000100000010111010001110101010101101000101100110100010011000100100111100100010011010100101001010001000110100110010101101111111001111100100110011001011011011010101101000101010101100100100010101100010010001100000110001100000110011000100101110110001101101101001100101011111000111010011110000110100001100110000110010000100000111001010010010001111010010110111101000010001000100101100001010100110000101000010100011010110011110001110011000010110010010000011011010100010111001001111111000010011110000111011010110110100101110101010001011110101011111011011001111111110101110100100000100100110000001011111111000110111101011101001110101100110111010000101101110010110010101000000111110101001011111111110101001101101001011101110010111101010100100101010011011110110100011110010001010011000010100111111011001101011111100110101001110010000001001100011100101011100011110010101010011011111001100011101111101110001111001100000100001100000111000010101101001011100011100110000010011000010010110010111001100100110100101010000010000101011001101110010001111011010000000100011101011011001001010000001101000111010111111011011100100100001111011000001000110000110001111111111101011010100000010101010000001100000001111111111101111010000000011000101101101010110001110100101001110001100010100111010001011010100110101101001010000000101001011011001101010000100101000110011011001000100111010111110001110000101100000110101011010101011011101011001100010011101111000010000111110101010000000110101000101000111000000000001110011010010011000100000010110000010010101011010001000100100100100010110010010010000100111000100110000001000011001100011111111111101111100001100101011110011100000001001001010001000110011100100110011111001000110111000001001100001001111111001110001001010110010100010011110000100011000010010101010110101010110001001110011001000101101000101010011011110110011110001011101110100110001000111111101010011110000011010010000000000000101010110100010100100001011100001110100000100000101111101000010100011010011101010111001001001110010000000011111100011110111101111010001000011001101101100011010001000001101101101001000100000011000010010011010001101101111111000010111100101110000100001011010111101011100001001010001110011111000000111001111111011000000000101001010101100111000101000001101100000011100000010010011000100110000111011010101110101110011110001011111000000001001100001101001111101000101110101111101011100000000001011010010011101110100111111110101100110100100000010010011001110101100111000000010010000110000011010100111100001101001111000000101011011011000000000101001011011011000011101100001001000011111100111100001001100100010010100011110111000110110101000110100000001100011001011010001110111101010111110000110101101000000000111001110111110110011011110100101001111100111001001011011001111110110101010001000010000110100111101010101100001011001101011001001000100001100010011011101110010000100110011001001110110110101010101000100000100011011010001111000011011011011010101000000010000010110000010010011100001001000110100110100011101011000111001101001100011001001010000010100000111111001101011011010001100011101111111100110110010001101111101010011100101110110001000110010001101010010100000100110110000001111011010000001100011010101010001111000010111110101111011010110010001111010100100110100000101110111110111010101111001001110100101110111000110111101000111101110001010001101001111100111101010110000010011100111100010110000111110010000100011001000101110011010101101110100000010011110011001111011110001011000001001010011000101100010011011101101000010001110100101011010011000010011110000001011100100001100011011101110001110000011100100110111100010010010000010111011100100000110111111100000100010010100001010100000101010101010011110011000001011010000111011010101000111101010101111010000110110110111010000110000101101011101100011101110000101010111100010011100100111100000000100000101000001010101111111100010111010011001111001111011000001001011000010001011010001001011000101111110111110000110100000010001111010111101000101111001111011111001001011100100100111010101001001100001101100000111111001011011101101011101101101011000001000001001101111111111111010111000111001110001100111111010110100010110111001010000001101001000110011010001001101100000000101101111100100101110010001000001110010001110111101110001001111110101011010000111011101110010111010000001000101111101001111000000111110001001001010010010010010111011110011111100000101011111110101100000010011011010000111101001001100000110011101111111111000011110000011101010011111000100001011110000111111101100010000111110111011001001011000110000000011111000110111111010110011101111000111011100110111101010110000010101111101010110100011110011101011001011000000011101001011110000000111000001000100110000111111011110100101111001010011101000000000101011011111100110001101010011010110110100010001100011101110001101111001010111000110001111110110001001000110010011110000011000001001000111010111100010010000111011111011100011011000110110100010011000110001000000101111111100111111011100010100110101010111010111110110000110010100100000011000111001001110001001111011111011111110110111000001110001000011010101001001011111001100100111110001000111011101010011100111101000100100111010011000001101111111000000000010110001010010001101100010111101100100010000011000000100101110010101001110100111110100001111011001011011101110100101110110100101100001010010110111100001110111001100000011101110001000001011100110001111001001110001010110001001010111011101111011001000100010111000010010110110101001110000111101001011010011001100001001100101010011100000011111011111001101010011111001100110110101011100010000010001101000100111010110111101111010001100011100111001111000010001001010011101010000111011101001111000100101011001000110000011110111110110000011111001111100011010001101110010000101000100000011000110001111001000101010110001110000011100000111110001011001101101010011001100101101111010100011110001000111100100000101010100010110100001001101001000111000000101110011110010110011111111100010001000111100011100110011101111011101111101000011001111110000100111110000011011111101011011011111111110111100100000000010101101000000010100111010111100100111011010111000101011000011000110101010000111110011011100011111010111111110000000010110111000100001111101111011001001000110001010001000000001000010001100010001111100110010000010100010110100110101111001011010111001111101110011010100101000101011010101100100101000010001011110000011000000011100000001101111100010100000110011001110010111101001011000100001100011010001111000010001110100011001110001011001101010010100000011100101001011111101110100110101001110000001001001000111100011110011000001111111011010000101100000100111011011010100110000000001011111011011110101001010100001011110111011100011000001001011100011100111111100000100100011111110111011000100011010111001110011110100101100111010000110000010111011001101000011010101111000110010000001000000011110011010100010100000010100111101110010110101000111001010011111110001110000111100000110110001001111010010001011110011000100010111001001000111001001111111011111111011011011010111100110011100000101011010001111110110000101101101110100001100110100010011010010",u0="nkrN(gE84K_cK~C#4VOB9xZn*Ix(&`9W?Vc@-$sG&N$RLO*tw!Vm2{2k2UT!cr`XWur=#ADLAY+(lNa?p*O2ELpOmoBR0M^GBs^EpEiOxTQ$lxpEcw(e>J@|P&T$U`7_=(O*k+$j5aDZj5Rtp)-<y=1~<+$*EMf8h&Bv1_Aq!hnl`62IW$N(88xOgMl@oyr5F)2m9to>IwJu$ez2&w)gw8!XC}NL60$(Fg|$1by{eb69x<G?MKdR@>>Hc7FtKq8S}e{pEVU1~Yq@`>ZnL+f3^01MO|eWgj<ZR)w=7<>2`T@z|E_2*n6=!g|EWDEm#u}VGcg9RCb9yqC9t%x1u`?9Gq&8a2eL3Ztva18bTHj8?>P}VHaib0BRbSFFgfiwCOUsRQ#=kkCNu*##x*!EmpSe-JvhxYjyPyMaX42wcsbiSS}tg{Sg&z4OSRoIyr_$=0IEzmJsO#+zP9$Zxh$Zo=Py9CU9~hEji|G=<v8{zM71z3S}a7irMIiEurQgVmo;@V=`5iyf;nn79W<*sxi(8ScsC+6e>P(_XE^IJH#iS8{4fnSGd!y*wl@bnHaMCuYB3f$K|L%kVKa;}7Cfvoi8pXIT{eR>t~VYykum)({5HHVjyK9RlPxYW-ZrT<)GRkO-#B<SZZt_epf=q!h&lW&&@X~5Lo<6gfH4^_qA>q96*q!2;Wrm6%rvSg^EKl&890zG*Et0@)-duV>n!j(y(|PWi93Kak2G5_tS<>GqB%(|0Wv8nFDeZ*zc(*8+$jPt@-S~VKQ*^FTrG_>hA00ipe&~_dN*!4#42GgY%|_4J1>(o1TnWbbU1l5!!b%RVlkdBS2UPFZ8L~Di#9+xwK;$^nme;NVmo>{l{{cMP&q?7&Np&8GdEm006S4UAU6*<SvD6q(J<64j5x$H^ESsdD>M=;L^BCA`6zWVvNKdUr8;ssAUi2MzAu9=xI3OXTRPq`IXkH~;5fxO88?46$}+1k{V_#2&?7xCRXIF43O1NIZ!ga;p)$%dyfuX}XE?YhSU5m9Mlgdjfi+__Z!#h`I5|-?Ha4v?^)@v#v_0)JVmNFu6*prr5;d7O@GMU;3@;5Y_cBW^`Z8cOvN&Qm<~RvBU@JvD0xL8%b~Ph4xGvBvyC+CBH7{5+QY>RN{V&=q;W;NU`8E$N)-#$lbvR-+>M|QO<Ts=>tvo|GJ2dk*?l<x@e>#phku`HNOE=0jQ#kTC{W#$;pg1WtB|L{SlRG3Xz%}YQCpT9zYc?k}R4}tX%sJCMZ8g0#6EwR!$vL$-QaIu{c{CI_%{8Mrkvrivl{S<*STx5vPB`l=PB_Liz&64;`ZmrpUMW>AIyI&>dpCnStvCQNMk~BG>M;{Caxwfd-Ym5+8#U-Lzd0&3lr>*7kSr`M06OkAt2o0o3oIKoe=)5tKQgE<H#oN{vo--ayDn`dYBl~ik2%OR#5>qB6gzq_w>Gpg)h?zs=OsBceJ-*yxiVxln>BtiT{#>!eJtCsOgZVY$GMd{{5+#MS2}03W4J6ebhI?N7`O+uE3(2UDK`K-zdOz|x3Wz?lelsgGqh(pZZmbLRyYN@L%3?SeYih7&a`VfnmIGR3oMziH@l27j5kTR`nYPj!8=5)Hm0Y#0yXcs5w_B`G`AKzkSdS0b-6pPwK#~m*)$V0MlKUGMLU|bd9)F&ay-GcSUWs3@Hd6CV76trDKq&y<TI<gt1UA*k2|bA`MT>jb1Pi1us9GmurcyF#4Z-P(m719@iMiz!ZIAX4X*yDKB&Ms#xN_cSGY8=g1eJC?yy0&Ot3dJQn))cY`IA#%CJqevMw#RXE|{#E3nqH%{VT()Hshbv^a{pb~GP6bG1G@p1V@ID7(zKH#%-O4!JKnr98O00==)e<UE79S+$h18o<~%AiNi`6gjgp-oA{sr#k#Q={xl};xz&_Lp<R&J2iT>5H=0D?zku>NQ<v3%CZT)Zn*<JD>zFz^EV5!Ffd!T%({Rx>^qn=yS4c<PbG`6tGKT+LpJO+K`=5r^Da{z#k`s?ajG%9R=Wka(4^)xcCo>_r#Kz6@VEjvJfah=XtEQx-ZODFz_>^<(Xrq+2{j?RHnmTp<g@`i9Wk7;v$L+WU$oh_1UL+~$TYjNCbprj2&mmSJ~cltc(bQCk37Ayp|k@hm^%u*QaaWmpE7K?I=yJUgEo&n2|2j6+AY(x#5?%C<+gXUK{^U6<+@NeF1vR+WxRAa?Kyq1kUfCAd^w&l<*3`bvM-mk5xws`b-f?Gu(zi(Ex!3WCo=>*Q@l+y!7r`0V!Y2ixi&nNqPwp&v^(XpM>?0ib+l5h_&o(R2(M)##<S$QMZC$jrm(#dd#|#sJ2K5Ld^89xHaK^;m9y|8AGPi?)wk5Q(YO~WU^$U97`Y}jAQp1DX|Pf?!m*UKRx!*o9We{O+&Jea;57_6Z?@SnK0IQz*R<cRf3%k+tScn7PAr17ZY(1)7B*+DTfM|NnmW?B#<G(td@j%~!z>^!BP?Jo4K1oFkS*UTYAr=7a485aJSTrEt}LZ0y(~E|04$6x`YP8gKrC%7Q7l$11uZKrEhw-p)h^~Msx7@N2`rl`ST3h5wJR<#7cPu12Q9HIUn(pt=PfiXqc3(WV=WXcc`ZvX5H1lfp)GJMc`lSH;V&X8>6{%krLuae-!cZOurzuz8#FDU6tm~C^s>6FSFl8`A|>}Sr>j0F`=1)FwJ^{u%Ps@5@i7}EJ~Zg5p{)NbIJL;F|0NbGilsU%L^Pc<sigNW059k+M6y+|ldVRr9w088!=&meS}^Ceo39Tp(6BNo*PP(5rn5vbx--5t0yjW2GB?69dp966Wj6OTF)sNvIW!?K5;R0K8aQD%voKUNG&fZ>=sC?eTrHn3Bs2y()HKI9z#M`wVL5y_$1IOG5<2rT%{KTjv@w$^;v_yay)X(fmn~W}v?#_iK{nqjgELGoJTL_>dNSQMK00(X9xT`~kT4)AdongNr#clqn=P+8J2*@-hd2^8R6VIOTQ=@G);!QW6FBodnla@#=`+hROgI@fsy8({VmEg<j5CcqEjW`oXgEVTrZ#;yYcydn<vn3MkuhR4GB$5EQ#d0su|2mn(>UHbb2*YbtUT~Ir8JW~&NhBHk~LL1h&<~y={Q0=0y%uH>8~IxC$WgQKrst1oidEE|D@P7EHNgsuB{N4TC<e0+O!d|5VLhJZzokX8ZyVYJU7Fuh%e=_IypD7c{qMALppP<G^hzRBCvrmc{riA>$L$hSF}8?O|&Ai54E(RA2pY(*Rb2K&ovOR6)RA*PAFh0MlzB#V64+FvNBz=#j@3{@48U3X0{SEfH~eXWU_v?<FgYspt_T|L9kG`J2QB^n7Z!2NH`>%xw<dD0=c2OKdw5n6*X$S(XukOj4LO(C%7iM{jX&_Q7C${+N8X>BeoMYExWHa$h&&A1iQ1n^t!jOxjLu3{I46hRkyacX)rFiVz_C*d%UwYE;dj#1vNW4*E!}j$2to+6*Ye|1382=b2czG1v&0EYB$?CBsCZ|Q#M*Lz&Fx3+c-2lx;DEwg*Os5tT^*I8#UHDV>TEus5e7APdPF<YB?!0WH@6vMmvHyX*n%BLOB#RCN_CDPdGR^A2>odIyvDo4m(acraG84jX0sVdAaqvP&IEgJu}WVc{A)d;;%m~%Bcvms=2DHc(9E$b2p|klQeX<AUT;hrY{3E?6*d_)u`4t_@!C4v9#B;oHwX7z&5xt;55*$H!hC4VXz`Pfv}AzTRg!ufwXKc^fec`X*HO&r#CUYKsV{O%QXWrRy^6YbhP?3fi|c%bTx1+^)#?Ct2d=MUNrbFp0HuOF1^Yv2ev4$EGz*)RyYYZC^^hH9Y7&1&o#I_ggW3sBt7pvku_&L)HwAyNjmg2utKOrOFAYvb~Y+Jax$tu6*#y(>o(Fo_cX*ht1z=SLNo*-IX<&DA33!-fIJaA0Xj!E%{`1Ur#-GW{Xk$odP18&NH`8a5IeOwbT~0M&^=8-@iy{2COa8IYcUl-?m#>=%|Wa;LpBgW<vQUxIz1aeGd5>CRW;^2Q9!gnaX6qse>l=Ni8;<dXEYH&c{Z^<QYq^~Dn8gecsrmwM<O{v^Eg94dOT=2NG{qrk~?NB={)^7ge~1PQ#p}6GB6%MJT;9zqB<EuF+52=4=?~dEkZgtg*wDNRyKOM;Ju-`A32G(<S3Il6+HhtCp~7XeYO0&f4nZfoxBFVUod32nl&~($h&m5!N0J)p1gL#G`oDjy}SXxn7PWl8N8Lb`oX@wa=X;Ix;eYNue-c5*SM6tnz{DD&cFAl(7G@^CoMd;4Z#e)ytzET&o~ygV!trJqBmW@&_AI*Qb3ZtTsxS%Yq%XY+(EWKazAyw3cDFQ<Gmd~+bA=(@wYEJohunYtG(DYZoWmlek_WmPcY&-NwyWeYqD~_x4g!@HM}{z`MjaLy}Ss$bUJ;!I>6IAf3#n{2fvZO2EY?KFF#bf$vii@Ex;1LsItSiHMUE@J3M<RqAWu!RWP6_7%7)4m?;7)w<&5W7%ZPKXD?+dlP^asr7c7(m@FG9ODT#e=_)!ZX)rG?1}bDMhcALEVlId+{w!TAk1P-@MJx&|TrB`FhbrwVW-BKyk0?MXCovN&Cn_5&1TJ$bBq{_eCocmpzAgVKuPntbS}gM^UMUl?`mKF1STT&Sq8&6d60uh)yDSZ>tT1>k=cgbeh&Ilww4>;u>N2G+=c$aZiYPlNPqg7QL$X^m!?9E__bq)SW2PiDK`q3sMzVXZv!S}Nh^joW>#Nc%m$OT)53<W9<uipX*sf_c)-21YPPT+Hek?MvxU6!rZY$m}`Kl2yM=Db)yC^3#pDtoGsWNadmotepFf>&=E-4E(fiv|m`8UTj&N7BDoHo)jaX9fWnKXSjWigvE3pRo-1v}R=Pb)+)i8jzQlQCp3lr=apUNT@a*)upcUo!bH3pB1S_b<LMe>VOuHZRF85HTz*S}Zp<u`?t!Au%E^ATP`?nmTYfOhAM^132F@;5z_09y3rmeKvwPCpG&wYcwl8Z#kAOa6GCtu{fhKn>ai%-Zq9a=Q?dQS30FNgg7fT$Tv1JoIJub96Yc!PB;-eFgs){!Z6-6H#(3w5;HnF-#9Zkmo<qkS~aCLgeWyQMKkC!EH|z^O)}^??l~Yd#kzSo88ACH+q>l>v@}AtinXCM+cn*~VY%fvn!QpvT`C&3g0KE76|}20W;{bGud%qWld`3?fVKsze?09y-8i|XAuhYFKQ){;*gD{?=eGnn6*Q_fWIScJlqSWv%d|VTswX|Sv^EGW|F2&)C%jZJrJqeT*tVas%RdM;IyML`SUS<Yt}G-oX1n~TUo;o6H?``$l(J4Vue4pbOs;=3^fgttPK?Mn^SBHeH#Z2i@s4V<y{4WtnYR?OC^AC0w4G_UiZ3cO0Jhz|pSL+PhcjHZb-J516gK`Pda*P$<)%q1jiDmB#JN>5Ycxx+MKP(fvbjVyaXg+mDLUme@i2Ea4K-{yk~vH^Z8(-V7BkZ|pD(UB7c;FmST<TU!8wLBxiNV)U^UM!s4iMJ=r|KOJT>kzsWzN9%s06(7c@FI8!p2<+&FAC^)D_sv^eTFWg`JNs4#>$!7*evW-<{dFFIf~*))JSd^c=5>Nv?YqcsCDEi}3@oVCumbu&P;I5h1u4YoKmYOAKUrLW($8aWFwO}rW~)HpIZqM)F*tupyE(lo3v7dM}_q_U_p{I<}v@wr8{fHgO#1UL4wBDsyJO*nhEE-Jq}Eih&+o;f)*hqY!dldnm&s~_~K2sv)FX**A@vonx05ICK)e=dGB{5(!B5;C4NQZ`XF?J>eJ{3dv~Mzt?8-L?2Oz^OZ~EwL;!5jSf#PdyPrU^tgLc|DImwmaNBw>(!t@j2)@IzQhq`#-NXIX<vK6*OEw+d98D1~qv+D>T<P`6{kERXc1nbuCpqQaXw>Wi^K}NG=L4FFh_iKQ+HNjWDP@MJ@z9ur|y%dpCzMSv&$hJvi+-3q8L&vNgsuj6YgA{yTg?a6uzAYdzsN9X&%or8dqylQdC5XgXRn3qIRByD+&nM?Difb3cYWy))Z5A~3*0<uo=r!9Kw|aXH5*lRKn0(K>)Sc{@=%I5iF}i#Cfsb2Th1<2Cm|`ZVDwI5NsU4LIRG@jNI#(LF6a^EAmlG&(;w1vPm=tv-Y|&p;==LA_YJp}j4@RJ&Qe%&h*nmpPKY<U3C(alB-_*0}b%Zo2}zd$3Tw2t;+dO}`nwjk>kEvcAN<NWb>Dp1riV%f9!h?YsZ8k-_!7X1VA%KR7VCC%tn&%pyQ4XTTP~4Zvf&_qfux$hru+V8Ai9&#-T|ZobjJPBw+R%{-&IG`&>1Kf3_Im$tyX=RMRoJVeJi8^B9FhBkMsm^xZML%1QjMZTQ9a=EOwGpKt$y0iPCsk9?J_Q0P-BfeR^8$Oo2d$e08AHj&SjlOI&^thKT3_Z2Kk-hP}YQ1VYFTc~gJi$1!>AfhruC^e&CcOf{fVv>T;k^{Od$N@*3o8OEH824!gez(=x+`uf9xlo#;Ve-vl`rrs8Z6T+!YgVno+#BUTP{{D;VlO&{3cW_r!A=|r6`9mwk)bCyDl;;KQW#z3@n>1^)OT^aV}IUyDfhy@G0>v)G6C4AS{e6oG#WZXD2Wy&n?(2QZ2bHFD&{ky(p$JW-V*7GBu+#&9LA#u&-4$F|>3swy<}sP_(Y0Gq9(wjW5eA6*4p>S26`CD4;B^nY78QwWp3HqcW1IvoQ3fQLSefVzo6ZnJSN{A)xV~bS-c#@i5OZGcHp#gfHYW7Bns?UoB5AMx1Cec{I7MQHKVw4zrcC5i~p`2P<tfH?1Hx=`)oxV=SsLxG;$?FfdCnO)Nn$p*7hy=`Y(dF)iUTTr1isBr$9>G&t`qWiARcUM@K`-8679>@VpumofY^A2m!hQZV&0^e>|{;4z9dC@>H<^el%lRW?dC(>Lfaw=fAcXf*9J-8UXK8a8$`<0KI!88MYLYcQ)dpf@f!o;R8_J~rhx_$>xJu{hE?`Z$a`hcEdwCOC#R-YkSP2s?W^Wiy94)Hb_1yE>aJXFPf~8a0|WP&wr-K`_5L$~J~O7Bu8E;X9Ey**4oYXgI_%$}_n*>o!L)oj6W77dLu2(KR<R_c?t$(>A~~GCadEdN}Pi8a(qkDmUvdBD{mLUZGgHBCMRG94#@kqq91+v9?dGGbBhUy|bq^Tej*osV{adML1Zk^RZ{Lu9#Q4EwUOm!Z*P;n>EciK&~+~`Yw#5n=&B0(>qoyi!K(rd>_L&4!1|K$-MzQn>LX*$~eBEFFJfSoxJ-v8@U2FJv*N=e=#z!478;;u&!sY@VYKJ(6d80L@{8p$+#9QcQ{!v8@U|35jys~LAsT=2{PF=UpE=NtGt3Gu(-#qDYUb=kt~z9Z?;~z8aS#jG&Gz!9<^Dy5VT7**R*LXN40!6+$NE)rY@1R)3DaOEINj>zqd@kBD8$A61D-jMmat>xw`Q+0y)Pz!88XofHuN8PBfi4{WY>SBsbDK)Hy^ndNd9;vNR(&F*IyBJ2mn#Lpdrrzc_I!g)!7O;5yJWIy$H@AT(|?9yV_|2sDH=2RPF;&^8!3RW+tKjW<3x$~e<Ek2!reIyTif-Y_0Ap)vb5%QZ7M<~jB{+c_jQG&s#TA2pjYX1RH{6*RKBS2V}0h_%$TinNn4OSVO~hCE%d0<d2++BRW0jx{#4Iwin0v9Dw<Q#V4fGdKe@JGiT=^SRHn_&AlSo~`Ju6tN_@!!C8XF1sK+r8X5g*f|qG(X^E?{;Hj|wX~eLOgGCjS2mF{C^=~_CL|HJRWxd<<2m{_mozIlQY>*ceKHL>2Qdb-Pq+Luoh__0RyvNmin**oh&awZU^^T*5j2Q4%{nqU9yLiX3q0>IojfHvdom_Gi8*XFD>{ic7B*Kqc|i&^DK;@cAv-ZKAwAVKt2)3qIX7Q8FgU?DianSxsW8|u);!NSS39yePAvpIB|ASccsrLn|2#e}7Bqf5i#aziTs;^we>W*R1UM`?OfWDx%RGlO2sqw5L^^IkAuz2#_B>!PM?2p&aXzgxNhA(GOE_9WCpi>0GCol`;5_|6^FMn#a6c|O5IqGtj6hU5J2)aX<vc(+{W=~%{WT6esyWa%r9Lq@+&nil6gZ?k);j$<qdAB+8!s?G<~0R9W<nD{9x&rG3_bTaI4%-1s<zHL_qp`FXS}Gg2(jzD+`e+QH$6(ds=m;<hrDmV&btY^^}Ut9I<ybDH>>)(Q^2OZpS&r(AH9CLK)ofrv$vJF;J_BWfW9od{Jgh3IK2izb-tCnExbXx1UTHb4!e)L1H0%lP&10Rf4nEZAUG7e9=krb*uO5noW3K#NW8x-$2&N@u)Rn*?zJ|+c0AWXc)p4_OTDDAS-UU3x4j}Vf4|$fLOF83-8h@L@4sR^A-#CDH9>#1C_7p=@Vur$|3UvSUOz7}Bef+!p1fPU<~NtTHMfYo*R+H&ro5#-;J#73XgHTJ7`hU`(lNufkiDwEiMxKehP_TK11QlcYb<myY%Yi{S1rXS_al-lr6p`A?k%Gvpe#Hlktn7mfGJ@tY${VGj4rw%3nM!!=`hhTp(;TwM=e7jyez*aB`{eo=P0c&P$aM{axgwK!Y}+Rjwrh<6D%_=xh+~H<|f7{BP~!YZ!1eLa4h314J@iD{UL}iu`z-!g)?%%M>`BWTe*F{kh!Lz?>(|E_q?;h5x9x4Tsk<sExbB7DLo;!ra%%q&psHumOijP-ZrN=#J+<lk*~%+QocYu6)*)kQo6%E3$S;wbhW9v2EIBxwz_RJJ-isY54`3(b-#|Y;J(8;MJ~m+ATnRMzbrRBCO%g=YP6>)1u-`)t|gT%Qztzw>M=ek*D*UQO)F<I$tmC~4k)512_b|nD=TOxXDpgAD=wQSS1mv!fhQm@zb#2FPAcFncPMx#6fl-7BqSOoa3zB#{VE_R_$($UZ70+up(}hVu_l`;4I{}dIW6KRAS~!7aVR=63?x}6mM>N+<}1*?Hn#D$SF}>O+cqS%eY`I=c)88F+PCLDCb(O=c(&WPQM|7=45}EvX}|!x(Kq|IIJ7Fh8?aTqS}B=2btw<Hl{<4bxU=xJ6+3Xgl(ihX%eG;)Rk&fh0lF8w0lH$jI=dph0l4_QRWv*;Pc`>6aj!!=d7N`OA2>3&+NXjpOD#DwS~OQL`ZL-v!7&IfTQK-G^fJOUFEOq*ZZg^}H7(vPC^VZaQ!tYy95vZ7_$<&dStiUhW-%8%HZyWA+ckbOK{7})l`~c_)jY&995PNaur8A|Ix_Gr3@^4bLNeemSS{i-<uV2_WiW{{UolfV+A>8j?K5dCp*Dasv@@VBNiw1|GB~j`b1arF2{Ifmh%p#A7cjLijx9?yg)!eT@i9d-oHMU2YBcCE*e}mJUMxN^M=?b;bu#oVDXCYsNuwvYDmdCWr=%<~-!5A@U88iZSTpRVnXC&jG&rX#PdsL_c{tIoA2us0P&p4bC7)2XK0C3u$1kZb6*TLv>p1Q;{W82S1wDx^mN6POFD|*bd%F-X0X5dBd$<@lOfpe6#<N&EkUHkGY_QonM!BFlpDccmu{9{EkU5R4s<ZbmyRncuiZe94AGuLD#5!=X4>5(MurUU<PBy%?fHM{`U_AV?^*TN``ZzH<ma*SB=R34Atu1RfBsI)6-!q6e=r*J_wKXs}#I;B`TQ*m=!8GK$>9dwJYBF%OTQ)Z~@UTEMEU|U2P_Uvj%(?R{oi+C~D6><rAF;tVq%VNAvABIOLNpyPKQsk1M>sY#T(dB+P&WlP^fk^lU9}}LUanC!skLn~kE}&8!LhnH8K~$k-L{st7O)1gz%*ts12_h<EwqES?XY9D&#j&?(XlhICA01>;k!6A3b_h4KQ}D5GC9dMeKst)_Bg#W{5C<g_%=(m1hd68thH-2qPCqe`#EMhu{b3$S~P66@3^Bk*SJzPZn!Kn-nQs8&p4vCbvUlN7&4M7+%ayq#x_c<39-XE6tp@tGP?b_1HH?(CO8kV!#K_^Vm7|E=ehMY8MyJT1~h{;Qa1{?C_Z>JR=IgN(YaeO#=RA|@wb_|7PwnCQnWHV1~==q;<gwzC%4tKH#SbUmOLXl6}ihSmo|gB=C(&VD?Fw)J2+`J!L`)3-Zh3ZxI6=}i!_=o?6;yWFF1QPn=>G|DY_akmow$O4!o7P_OmUxakYvwO*;uMel)|pK{bG}ydKvhRX9E=JRq*9F*iT6H!-R*(zDbz1}^|QTQQ(CnUuykHa7w;q%@v2RVe{Dk~QeJ&@fsyz%W#?>NdbPM>PzWAvfPKwKt$T1U3LVJ}n+NJvVVWGObrIkh7{T0y*BSAvt>_R6CNp7pYV+LagAQJu*YB8ah)s_%$jpa5X<PTr<-(*D~@k6E;#XDK`Ew$uv7S)iQuL$~1B{95j(R%r@XPCN(QLM>X#?IW{kz12Q-;k1$O$`ZISkL^v`wx-POcH#mect1%xidNNcroiw90H<e>AOE^(A>ZR5-pEAuimNC6F=P@QUH8%(~CN^w0Y%iZJur|*)#5EW*H#vwod@;&8?>SB~MlK>bD=>#R$}@*JVl~`24LZRw1~>0ECO1Aev^Q=!?>rkd7de+Ut~9bZWI6>iT08?bG_-Iv%RD_f4m?~rJvBEtOF4-=4LB(|4?Mp(yEhy)cQ-LPaynHwuQ;DMq$?vljybhE5i~$KRjll~kUeia2s-~gdNEWjFF?UQb2d;u-aBqFe?b#I=RPexn?C0}9XU@yEIjEv{Wr5dD@4;co<*iSz&#2-i$o|o<2;`{C^`d2yg$4>_&PK=Zax-106IlL!aYDh-bAQF(>rKGra^^1AV4}ozCYPN5kc}k3_*}U*gqCStG{-<uDn3N|2Q!=XgKn?9<*b?2)CX*2|G_Omo~>aJve8&jzCy9aI-Nc9KB#U975VVeL#Y%T`eBC53)tHxIm0H4n8kAJw3ZL=Q;K+TRsjvAVDQQd^znwVm!{WZa@=6+CKX|X+Ryk<Tzb4T0G3U+d=`MhP*#FlR;KKNiw@SS2#F14mqATNjASVt2XvH95d87v^Hxt@ip-_4mK}1?liSIw>L~UEI0!;NjL>K>o*-ZqcuM`qc*@amN(2bNjmX3U^|OAnKqj_^EJdYOgpVPK{_-u@HZ?sVm6aF*Enf9D>z#?);KFTVmZn=Oga2H3O1oRJ~i+<fH++_Lo}$cR4`*4{Wc~!2{6|-5I9V(jxn00Z#NG*3pWKe6E*2LTQJS7jxlj9+O_#0xit7Ux;MTtZm4rNPBrf}O|!u-jx;MNp*#{fb~7)vX*g>);x+m)f;B3zH8+K}L^X@G6}Y)MP%Uydqc&SLoH=(mJTp3}&$0+S7d%HivN*RqxIKb9$vQwg&^&26aXUdikUn}pVLhBR@;m217ChcOEIFvelQWV(FF=wwgFdc44M5^Q<Uc4qp*fg8J3OgBRWy)7jy_&F9lW|c*FDBP0lvyK6g|j5o<RRV<~__jJUQq-Qa`ppc{$HQ+BuOw^gmF&YdwECmZZJF0;rxi**xGf$unNTt~<NKc)Wl)f4?EOlr`+VioHcT067OfK|OpjE1sUW8@WoLhpl8bUp6g1D#Z;m06V$6`8ZQO3o-;i?5*HGhO7EDM!QhFz(BD*KRkmxnK`69=eKJ-U^ufmKR%^03q43ZYdoJgH9Y}57&#p}Fg8><9yJd<_%pRQC#m!_UNy!yjW<y?$2kZ%Og88^f-c21RyEH$u`)9{hc<sW_%P5oNH!KWSvKA{05!ij05)SZ;4_RjKshEl**1qbuQxe0B{caqML4E3PBw};el<=vf;Yc7Avw}A1~pYV#yZzGOE+&cUpQ|zDL1G&_Bm}cA2NnA>Nx?SvNyCcax_LX+&cd_M<uH^CoyWC1~$^A3^|T3)v*;gwK#=0DYvn)w=^<31gs!BIkW#WYNSUtQ8<6CL$3%n^)a6`xj6Vam^chJJvbCOyFZdR?lfjF88=k12QOQs<1=D1k2GdE_&KOJjx?V&4mUM43Ntr7CooMtt~xb6csu(&_CcRNWvtS)9z4Q8G(C1aBsY#am^qU_ctRVxv^+P#m^*+#i9A<8$vkU2csB|?wL1ttzCBz+I79J34?65U%|E$0+rV-_?LeG87DH}9v@=RUk3B{|%d*t8N<H5^0zpwic|L?Zqe3J<6hCM{fI6bNsk)85Avtk56+tGja<$XDHNojV=DpjnzqRW$p*SEtt+*vSKDGopAVSx!lscY2khd*6m%ahPR6k?9-nVKxTEm1kS~$Kqb0tMJ4xTY8**k2r0y;{o4>+4YE<Z{?LO+!|NISQ-z&&|6fHd<a)H&`v2|o@%5jwOyfHdzmo;Q3rt}==;`7?<$ayY3t<uZ;jQ#r;s%QVG0eKBS^?=}!PgE*x+2{fZMd${E_GBTt$NiHHbVmYQbS~Q6^>@^BJ*E!^!T{cfSG&qbnEi?x=IyS_#(=@U&iZm@XSvZ(DnK=kI*f=3OYBsVpm^08eLo^RHnLCL*%EJS}{4ztZOtZDH%sZ|%$g#RBnzVkd$~ZK^LNXG$RXJifEWq3-#lAzqM>BglZ8I7%e>OU=J+{|2H9K-OHas>h_p}4HSi#RCCcj=Yr9rwemNw!xJU*-?AVHKlySWj*pRjT*w89{(uD_Nz+&;NMrn&02{<xvE$h1qnk23r@bU1!F-Y^d}#4`mmIx@O8A2Jd-;yB7OayK+LB{|MF8#pgGvpmQ;eK-<2<v4#fp*GMr12r!>q&9;#LpRPe%r+xChB=Wlzcg?-#x(XcKQ(7Kb2GOxn>6b*U^O2&0Xe@g@;C!D<ux)okT|k7-ZZc+EI3Fq?Kmbm";var r0="const a:u32=64u;const ua:u32=32u;const va:u32=96u;const V:u32=9u;const s:u32=5u;const b:u32=16u;const Bc:u32=4u;const Gk:u32=64u;const l:u32=8u;const Id:u32=0u;const Jd:u32=1012u;const Kd:u32=3u;const Ld:u32=0u;const Nf:u32=3036u;const Of:u32=11u;const Pf:u32=75u;const Pb:u32=3100u;const Qf:u32=139u;const Rf:u32=171u;const Sf:u32=3228u;const Tf:u32=203u;const Uf:u32=587u;const E:u32=5700u;const Vf:u32=3323u;const Wf:u32=3387u;const Md:u32=6212u;const Xf:u32=3451u;const Yf:u32=3515u;const F:u32=6340u;const Nd:u32=3579u;const Od:u32=3675u;const Cc:u32=6724u;const Zf:u32=3771u;const ag:u32=3780u;const bg:u32=4942u;const cg:u32=3790u;const Pd:u32=3982u;const dg:u32=3u;const eg:u32=32u;const fg:u32=3789u;const gg:array<u32,10> =array<u32,10>(0u,4u,12u,140u,268u,780u,908u,924u,940u,972u);const hg:u32=1004u;const Qd:u32=10u;const ig:u32=8u;struct Hk{token_count:u32,token_offset:u32,stage:u32,stride:u32}@group(0) @binding(0) var<storage,read> tokens:array<u32>;@group(0) @binding(1) var<storage,read> planes:array<u32>;@group(0) @binding(2) var<storage,read> fp:array<f32>;@group(0) @binding(3) var<storage,read_write> hid:array<f32>;@group(0) @binding(4) var<storage,read_write> scratch:array<f32>;@group(0) @binding(5) var<storage,read_write> out_cls:array<u32>;@group(0) @binding(6) var<uniform> jobs:array<Hk,Gk>;var<workgroup> c:array<f32,1536>;var<workgroup> n:array<f32,2048>;var<workgroup> t:array<f32,1024>;var<workgroup> v:array<f32,64>;var<workgroup> Dc:array<f32,144>;fn r(jg:f32)->f32{return tanh(clamp(jg,-15.,15.));}fn j(kg:f32)->f32{return 1./(1.+exp(-clamp(kg,-3e1,3e1)));}fn ra(lg:u32,mg:u32,Fc:u32,Rd:u32,Gc:f32)->f32{var Qb:u32=0u;let ng=Rd>>5u;let og=Rd&31u;for(var wa:u32=0u;wa<Fc;wa=wa+1u){Qb=Qb|(((planes[lg+wa*mg+ng]>>og)&1u)<<wa);}if (Fc==1u){return select(-Gc,Gc,Qb==1u);}return (f32(Qb)-f32(1u<<(Fc-1u)))*Gc;}fn g(pg:u32,qg:u32,Sd:f32)->f32{return select(-Sd,Sd,((pg>>qg)&1u)==1u);}fn Gf(rg:u32,sg:u32)->f32{var Hc:f32=0.;for(var xa:u32=0u;xa<32u;xa=xa+1u){Hc=Hc+g(rg,xa,c[sg+xa]);}return Hc;}fn u(tg:u32,ug:u32,Td:u32)->f32{var ya:f32=0.;for(var za:u32=0u;za<32u;za=za+1u){ya=ya+g(tg,za,c[Td+za]);}for(var Aa:u32=0u;Aa<32u;Aa=Aa+1u){ya=ya+g(ug,Aa,c[Td+32u+Aa]);}return ya;}fn Hf(vg:u32,wg:u32,xg:u32,Ic:u32)->f32{var Q:f32=0.;for(var Ba:u32=0u;Ba<32u;Ba=Ba+1u){Q=Q+g(vg,Ba,c[Ic+Ba]);}for(var Ca:u32=0u;Ca<32u;Ca=Ca+1u){Q=Q+g(wg,Ca,c[Ic+32u+Ca]);}for(var Da:u32=0u;Da<32u;Da=Da+1u){Q=Q+g(xg,Da,c[Ic+64u+Da]);}return Q;}fn If(yg:u32,zg:u32,Ag:u32,Bg:u32,Rb:u32)->f32{var y:f32=0.;for(var Ea:u32=0u;Ea<32u;Ea=Ea+1u){y=y+g(yg,Ea,c[Rb+Ea]);}for(var Fa:u32=0u;Fa<32u;Fa=Fa+1u){y=y+g(zg,Fa,c[Rb+32u+Fa]);}for(var Ga:u32=0u;Ga<32u;Ga=Ga+1u){y=y+g(Ag,Ga,c[Rb+64u+Ga]);}for(var Ha:u32=0u;Ha<32u;Ha=Ha+1u){y=y+g(Bg,Ha,c[Rb+96u+Ha]);}return y;}fn Jf(Eg:u32)->f32{var Jc:f32=0.;for(var La:u32=0u;La<32u;La=La+1u){Jc=Jc+g(Eg,La,v[La]);}return Jc;}fn sa(Fg:u32,Gg:u32,Hg:u32,Ig:u32,Sb:u32)->f32{var z:f32=0.;for(var Ma:u32=0u;Ma<32u;Ma=Ma+1u){z=z+g(Fg,Ma,n[Sb+Ma]);}for(var Na:u32=0u;Na<32u;Na=Na+1u){z=z+g(Gg,Na,n[Sb+32u+Na]);}for(var Oa:u32=0u;Oa<32u;Oa=Oa+1u){z=z+g(Hg,Oa,n[Sb+64u+Oa]);}for(var Pa:u32=0u;Pa<32u;Pa=Pa+1u){z=z+g(Ig,Pa,n[Sb+96u+Pa]);}return z;}fn U(Jg:u32,Kg:u32)->f32{var Kc:f32=0.;for(var Qa:u32=0u;Qa<32u;Qa=Qa+1u){Kc=Kc+g(Jg,Qa,n[Kg+Qa]);}return Kc;}fn P(Lg:u32,Mg:u32)->u32{return tokens[(Lg+Mg)*2u];}fn ta(Ng:u32,Og:u32)->u32{return tokens[(Ng+Og)*2u+1u];}fn Kf(Pg:u32,Qg:u32)->u32{return P(Pg,Qg)&3u;}fn Lf(Rg:u32,Sg:u32)->u32{return (P(Rg,Sg)>>19u)&255u;}fn Mf(w:u32,x:u32,Tg:u32)->u32{switch Tg{case 0u:{return P(w,x)&3u;}case 1u:{return (P(w,x)>>2u)&7u;}case 2u:{return (P(w,x)>>5u)&127u;}case 3u:{return (P(w,x)>>12u)&127u;}case 4u:{return ta(w,x)&1023u;}case 5u:{return (ta(w,x)>>10u)&127u;}case 6u:{return (ta(w,x)>>17u)&15u;}case 7u:{return (ta(w,x)>>21u)&15u;}case 8u:{return (ta(w,x)>>25u)&31u;}default:{return (P(w,x)>>27u)&31u;}}}fn Ob(Lc:u32,Ug:u32){if (Lc<Ug){var Mc:f32=0.;for(var Tb:u32=0u;Tb<a;Tb=Tb+1u){let Ud=c[Lc*a+Tb];Mc=Mc+Ud*Ud;}v[Lc]=inverseSqrt(Mc/f32(a)+1e-6);}}@compute @workgroup_size(64) fn embed(@builtin(local_invocation_id) Vg:vec3<u32>,@builtin(workgroup_id) Ub:vec3<u32>){let A=Vg.x;let Ra=jobs[Ub.y];let Vd=Ra.token_count;let Nc=Ra.token_offset;let Wg=Ra.stride*Ub.y;let Xg=l*Ra.stride*Ub.y+7u*Ra.stride;let Wd=Ub.x*b;let Yg=planes[Nf+A];let Zg=fp[Of+A];let ah=fp[Pf+A];for(var Sa:u32=0u;Sa<b;Sa=Sa+1u){let Vb=Wd+Sa;if (A<ua){var Ta:f32=0.;if (Vb<Vd){let bh=Kf(Nc,Vb);for(var G:u32=0u;G<Qd;G=G+1u){if ((G==4u||G==5u)&&bh!=0u){continue;}let ch=gg[G]+Mf(Nc,Vb,G);Ta=Ta+ra(Id,Jd,Kd,ch*ua+A,fp[Ld+G]);}let dh=Lf(Nc,Vb);for(var Ua:u32=0u;Ua<ig;Ua=Ua+1u){if (((dh>>Ua)&1u)==1u){Ta=Ta+ra(Id,Jd,Kd,(hg+Ua)*ua+A,fp[Ld+Qd]);}}}c[Sa*ua+A]=Ta;}}workgroupBarrier();for(var Va:u32=0u;Va<b;Va=Va+1u){let Oc=Wd+Va;if (Oc<Vd){let Xd=ah+Zg*Gf(Yg,Va*ua);hid[Wg+Oc*a+A]=Xd;scratch[Xg+Oc*a+A]=Xd;}}}@compute @workgroup_size(64) fn sig_pool(@builtin(local_invocation_id) eh:vec3<u32>,@builtin(workgroup_id) Pc:vec3<u32>){let Qc=eh.x;let Wb=jobs[Pc.y];let Yd=Wb.token_count;let fh=Wb.stride*Pc.y;let Zd=l*Wb.stride*Pc.y+6u*Wb.stride;var Rc:f32=0.;var Sc:f32=-3.4e38;for(var Xb:u32=0u;Xb<Yd;Xb=Xb+1u){let ae=hid[fh+Xb*a+Qc];Rc=Rc+ae;Sc=max(Sc,ae);}scratch[Zd+Qc]=Rc/max(1.,f32(Yd));scratch[Zd+a+Qc]=Sc;}@compute @workgroup_size(64) fn film(@builtin(local_invocation_id) gh:vec3<u32>,@builtin(workgroup_id) be:vec3<u32>){let k=gh.x;let ce=jobs[be.y];let Tc=l*ce.stride*be.y+6u*ce.stride;c[k]=scratch[Tc+k];c[a+k]=scratch[Tc+a+k];workgroupBarrier();var Uc:f32=0.;for(var Wa:u32=0u;Wa<2u*a;Wa=Wa+1u){Uc=Uc+c[Wa]*c[Wa];}let de=inverseSqrt(Uc/f32(2u*a)+1e-6);let hh=c[k]*de*fp[Pd+k];let ih=c[a+k]*de*fp[Pd+a+k];workgroupBarrier();c[k]=hh;c[a+k]=ih;workgroupBarrier();if (k<eg){v[k]=r(fp[Rf+k]+fp[Qf+k]*If(planes[Pb+k*4u],planes[Pb+k*4u+1u],planes[Pb+k*4u+2u],planes[Pb+k*4u+3u],0u));} else{v[k]=0.;}workgroupBarrier();let jh=dg*2u*a;for(var B=k;B<jh;B=B+64u){let ee=fp[Uf+B]+fp[Tf+B]*Jf(planes[Sf+B]);let kh=B/(2u*a);let fe=B%(2u*a);let lh=fe%a;let ge=fp[cg+kh*a+lh];let mh=select(ge*r(ee),1.+ge*r(ee),fe<a);scratch[Tc+2u*a+B]=mh;}}@compute @workgroup_size(64) fn l0_pre(@builtin(local_invocation_id) nh:vec3<u32>,@builtin(workgroup_id) Yb:vec3<u32>){let H=nh.x;let Zb=jobs[Yb.y];let he=Zb.token_count;let oh=Zb.stride*Yb.y;let ie=l*Zb.stride*Yb.y;let ph=ie;let je=ie+6u*Zb.stride;let ke=Yb.x*b;let qh=fp[4302u+H];let rh=scratch[je+2u*a+(0u*2u+0u)*a+H];let sh=scratch[je+2u*a+(0u*2u+1u)*a+H];for(var Xa:u32=0u;Xa<b;Xa=Xa+1u){let le=ke+Xa;c[Xa*a+H]=select(0.,hid[oh+le*a+H],le<he);}workgroupBarrier();Ob(H,b);workgroupBarrier();for(var W:u32=0u;W<b;W=W+1u){let me=ke+W;if (me<he){scratch[ph+me*a+H]=(c[W*a+H]*v[W]*qh)*rh+sh;}}}@compute @workgroup_size(64) fn l0_conv(@builtin(local_invocation_id) th:vec3<u32>,@builtin(workgroup_id) Vc:vec3<u32>){let d=th.x;let Ya=jobs[Vc.y];let Za=Ya.token_count;let ac=l*Ya.stride*Vc.y;let uh=ac;let vh=ac+Ya.stride;let wh=ac+2u*Ya.stride;let xh=ac+3u*Ya.stride;let bc=Vc.x*b;let yh=planes[3652u+d*2u];let zh=planes[3652u+d*2u+1u];let Ah=planes[3652u+(a+d)*2u];let Bh=planes[3652u+(a+d)*2u+1u];let Ch=fp[1099u+d];let Dh=fp[1099u+a+d];let Eh=fp[1227u+d];let Fh=fp[1227u+a+d];let Gh=fp[1035u+d];let Hh=fp[971u+d];var ne:array<f32,5>;for(var ab:u32=0u;ab<s;ab=ab+1u){ne[ab]=ra(3612u,10u,4u,d*s+ab,Hh);}for(var bb:u32=0u;bb<b;bb=bb+1u){let oe=bc+bb;var cc:f32=0.;if (oe<Za){cc=Gh;for(var cb:u32=0u;cb<s;cb=cb+1u){let Wc=i32(oe)+(i32(cb)-i32(s/2u))*1;if (Wc>=0&&Wc<i32(Za)){cc=cc+ne[cb]*scratch[uh+u32(Wc)*a+d];}}}c[bb*a+d]=cc;}workgroupBarrier();if (d<32u){for(var X:u32=0u;X<b;X=X+1u){let Ih=bc+X;var pe:f32=0.;if (Ih<Za&&d<8u){let Jh=fp[1491u+d]+fp[1483u+d]*u(planes[4164u+d*2u],planes[4164u+d*2u+1u],X*a);pe=r(Jh);}n[X*2u*a+d]=pe;}}workgroupBarrier();for(var Y:u32=0u;Y<b;Y=Y+1u){let Xc=bc+Y;if (Xc<Za){let Kh=fp[1627u+d]+fp[1499u+d]*U(planes[4180u+d],Y*2u*a);let Lh=fp[1627u+a+d]+fp[1499u+a+d]*U(planes[4180u+a+d],Y*2u*a);scratch[wh+Xc*a+d]=j(Kh);scratch[xh+Xc*a+d]=j(Lh);}}workgroupBarrier();for(var Z:u32=0u;Z<b;Z=Z+1u){let qe=bc+Z;if (qe<Za){let Mh=Eh+Ch*u(yh,zh,Z*a);let Nh=Fh+Dh*u(Ah,Bh,Z*a);scratch[vh+qe*a+d]=r(Mh)*j(Nh);}}}@compute @workgroup_size(64) fn l0_scan(@builtin(local_invocation_id) Oh:vec3<u32>,@builtin(workgroup_id) re:vec3<u32>){let I=Oh.x;let db=jobs[re.y];let Yc=db.token_count;let Zc=l*db.stride*re.y;let se=Zc+db.stride;let te=Zc+2u*db.stride;let ue=Zc+3u*db.stride;let Ph=j(fp[4174u+I]);let Qh=j(fp[4238u+I]);var ad:f32=0.;for(var aa:u32=0u;aa<Yc;aa=aa+1u){let Rh=scratch[se+aa*a+I];let Sh=Ph*(1.-scratch[te+aa*a+I]);ad=Sh*ad+Rh;scratch[te+aa*a+I]=ad;}var bd:f32=0.;for(var dc:u32=0u;dc<Yc;dc=dc+1u){let cd=Yc-1u-dc;let Th=scratch[se+cd*a+I];let Uh=Qh*(1.-scratch[ue+cd*a+I]);bd=Uh*bd+Th;scratch[ue+cd*a+I]=bd;}}@compute @workgroup_size(64) fn l0_post(@builtin(local_invocation_id) Vh:vec3<u32>,@builtin(workgroup_id) ec:vec3<u32>){let o=Vh.x;let eb=jobs[ec.y];let ve=eb.token_count;let we=eb.stride*ec.y;let xe=l*eb.stride*ec.y;let Wh=xe+2u*eb.stride;let Xh=xe+3u*eb.stride;let ye=ec.x*b;let Yh=planes[3908u+o*4u];let Zh=planes[3908u+o*4u+1u];let ai=planes[3908u+o*4u+2u];let bi=planes[3908u+o*4u+3u];let ci=fp[1355u+o];let di=fp[1419u+o];let ei=j(fp[4110u+o]);for(var ba:u32=0u;ba<b;ba=ba+1u){let dd=ye+ba;if (dd<ve){n[ba*2u*a+o]=scratch[Wh+dd*a+o];n[ba*2u*a+a+o]=scratch[Xh+dd*a+o];}}workgroupBarrier();for(var fb:u32=0u;fb<b;fb=fb+1u){let ed=ye+fb;if (ed<ve){let fi=di+ci*sa(Yh,Zh,ai,bi,fb*2u*a);hid[we+ed*a+o]=hid[we+ed*a+o]+fi*ei;}}}@compute @workgroup_size(64) fn l1_pre(@builtin(local_invocation_id) gi:vec3<u32>,@builtin(workgroup_id) fc:vec3<u32>){let J=gi.x;let gc=jobs[fc.y];let ze=gc.token_count;let hi=gc.stride*fc.y;let Ae=l*gc.stride*fc.y;let ii=Ae;let Be=Ae+6u*gc.stride;let Ce=fc.x*b;let ji=fp[4558u+J];let ki=scratch[Be+2u*a+(1u*2u+0u)*a+J];let li=scratch[Be+2u*a+(1u*2u+1u)*a+J];for(var gb:u32=0u;gb<b;gb=gb+1u){let De=Ce+gb;c[gb*a+J]=select(0.,hid[hi+De*a+J],De<ze);}workgroupBarrier();Ob(J,b);workgroupBarrier();for(var ca:u32=0u;ca<b;ca=ca+1u){let Ee=Ce+ca;if (Ee<ze){scratch[ii+Ee*a+J]=(c[ca*a+J]*v[ca]*ji)*ki+li;}}}@compute @workgroup_size(64) fn l1_conv(@builtin(local_invocation_id) mi:vec3<u32>,@builtin(workgroup_id) fd:vec3<u32>){let e=mi.x;let hb=jobs[fd.y];let ib=hb.token_count;let hc=l*hb.stride*fd.y;let ni=hc;let oi=hc+hb.stride;let pi=hc+2u*hb.stride;let qi=hc+3u*hb.stride;let ic=fd.x*b;let ri=planes[4348u+e*2u];let si=planes[4348u+e*2u+1u];let ti=planes[4348u+(a+e)*2u];let ui=planes[4348u+(a+e)*2u+1u];let vi=fp[1883u+e];let wi=fp[1883u+a+e];let xi=fp[2011u+e];let yi=fp[2011u+a+e];let zi=fp[1819u+e];let Ai=fp[1755u+e];var Fe:array<f32,5>;for(var jb:u32=0u;jb<s;jb=jb+1u){Fe[jb]=ra(4308u,10u,4u,e*s+jb,Ai);}for(var kb:u32=0u;kb<b;kb=kb+1u){let Ge=ic+kb;var jc:f32=0.;if (Ge<ib){jc=zi;for(var lb:u32=0u;lb<s;lb=lb+1u){let gd=i32(Ge)+(i32(lb)-i32(s/2u))*2;if (gd>=0&&gd<i32(ib)){jc=jc+Fe[lb]*scratch[ni+u32(gd)*a+e];}}}c[kb*a+e]=jc;}workgroupBarrier();if (e<32u){for(var da:u32=0u;da<b;da=da+1u){let Bi=ic+da;var He:f32=0.;if (Bi<ib&&e<8u){let Ci=fp[2275u+e]+fp[2267u+e]*u(planes[4860u+e*2u],planes[4860u+e*2u+1u],da*a);He=r(Ci);}n[da*2u*a+e]=He;}}workgroupBarrier();for(var ea:u32=0u;ea<b;ea=ea+1u){let hd=ic+ea;if (hd<ib){let Di=fp[2411u+e]+fp[2283u+e]*U(planes[4876u+e],ea*2u*a);let Ei=fp[2411u+a+e]+fp[2283u+a+e]*U(planes[4876u+a+e],ea*2u*a);scratch[pi+hd*a+e]=j(Di);scratch[qi+hd*a+e]=j(Ei);}}workgroupBarrier();for(var fa:u32=0u;fa<b;fa=fa+1u){let Ie=ic+fa;if (Ie<ib){let Fi=xi+vi*u(ri,si,fa*a);let Gi=yi+wi*u(ti,ui,fa*a);scratch[oi+Ie*a+e]=r(Fi)*j(Gi);}}}@compute @workgroup_size(64) fn l1_scan(@builtin(local_invocation_id) Hi:vec3<u32>,@builtin(workgroup_id) Je:vec3<u32>){let K=Hi.x;let mb=jobs[Je.y];let id=mb.token_count;let jd=l*mb.stride*Je.y;let Ke=jd+mb.stride;let Le=jd+2u*mb.stride;let Me=jd+3u*mb.stride;let Ii=j(fp[4430u+K]);let Ji=j(fp[4494u+K]);var kd:f32=0.;for(var ga:u32=0u;ga<id;ga=ga+1u){let Ki=scratch[Ke+ga*a+K];let Li=Ii*(1.-scratch[Le+ga*a+K]);kd=Li*kd+Ki;scratch[Le+ga*a+K]=kd;}var ld:f32=0.;for(var kc:u32=0u;kc<id;kc=kc+1u){let md=id-1u-kc;let Mi=scratch[Ke+md*a+K];let Ni=Ji*(1.-scratch[Me+md*a+K]);ld=Ni*ld+Mi;scratch[Me+md*a+K]=ld;}}@compute @workgroup_size(64) fn l1_post(@builtin(local_invocation_id) Oi:vec3<u32>,@builtin(workgroup_id) lc:vec3<u32>){let p=Oi.x;let nb=jobs[lc.y];let Ne=nb.token_count;let Oe=nb.stride*lc.y;let Pe=l*nb.stride*lc.y;let Pi=Pe+2u*nb.stride;let Qi=Pe+3u*nb.stride;let Qe=lc.x*b;let Ri=planes[4604u+p*4u];let Si=planes[4604u+p*4u+1u];let Ti=planes[4604u+p*4u+2u];let Ui=planes[4604u+p*4u+3u];let Vi=fp[2139u+p];let Wi=fp[2203u+p];let Xi=j(fp[4366u+p]);for(var ha:u32=0u;ha<b;ha=ha+1u){let nd=Qe+ha;if (nd<Ne){n[ha*2u*a+p]=scratch[Pi+nd*a+p];n[ha*2u*a+a+p]=scratch[Qi+nd*a+p];}}workgroupBarrier();for(var ob:u32=0u;ob<b;ob=ob+1u){let od=Qe+ob;if (od<Ne){let Yi=Wi+Vi*sa(Ri,Si,Ti,Ui,ob*2u*a);hid[Oe+od*a+p]=hid[Oe+od*a+p]+Yi*Xi;}}}@compute @workgroup_size(64) fn l2_pre(@builtin(local_invocation_id) Zi:vec3<u32>,@builtin(workgroup_id) mc:vec3<u32>){let L=Zi.x;let nc=jobs[mc.y];let Re=nc.token_count;let aj=nc.stride*mc.y;let Se=l*nc.stride*mc.y;let bj=Se;let Te=Se+6u*nc.stride;let Ue=mc.x*b;let cj=fp[4814u+L];let dj=scratch[Te+2u*a+(2u*2u+0u)*a+L];let ej=scratch[Te+2u*a+(2u*2u+1u)*a+L];for(var pb:u32=0u;pb<b;pb=pb+1u){let Ve=Ue+pb;c[pb*a+L]=select(0.,hid[aj+Ve*a+L],Ve<Re);}workgroupBarrier();Ob(L,b);workgroupBarrier();for(var ia:u32=0u;ia<b;ia=ia+1u){let We=Ue+ia;if (We<Re){scratch[bj+We*a+L]=(c[ia*a+L]*v[ia]*cj)*dj+ej;}}}@compute @workgroup_size(64) fn l2_conv(@builtin(local_invocation_id) fj:vec3<u32>,@builtin(workgroup_id) pd:vec3<u32>){let f=fj.x;let qb=jobs[pd.y];let rb=qb.token_count;let oc=l*qb.stride*pd.y;let gj=oc;let hj=oc+qb.stride;let ij=oc+2u*qb.stride;let jj=oc+3u*qb.stride;let pc=pd.x*b;let kj=planes[5044u+f*2u];let lj=planes[5044u+f*2u+1u];let mj=planes[5044u+(a+f)*2u];let nj=planes[5044u+(a+f)*2u+1u];let oj=fp[2667u+f];let pj=fp[2667u+a+f];let qj=fp[2795u+f];let rj=fp[2795u+a+f];let sj=fp[2603u+f];let tj=fp[2539u+f];var Xe:array<f32,5>;for(var sb:u32=0u;sb<s;sb=sb+1u){Xe[sb]=ra(5004u,10u,4u,f*s+sb,tj);}for(var tb:u32=0u;tb<b;tb=tb+1u){let Ye=pc+tb;var qc:f32=0.;if (Ye<rb){qc=sj;for(var ub:u32=0u;ub<s;ub=ub+1u){let qd=i32(Ye)+(i32(ub)-i32(s/2u))*4;if (qd>=0&&qd<i32(rb)){qc=qc+Xe[ub]*scratch[gj+u32(qd)*a+f];}}}c[tb*a+f]=qc;}workgroupBarrier();if (f<32u){for(var ja:u32=0u;ja<b;ja=ja+1u){let uj=pc+ja;var Ze:f32=0.;if (uj<rb&&f<8u){let vj=fp[3059u+f]+fp[3051u+f]*u(planes[5556u+f*2u],planes[5556u+f*2u+1u],ja*a);Ze=r(vj);}n[ja*2u*a+f]=Ze;}}workgroupBarrier();for(var ka:u32=0u;ka<b;ka=ka+1u){let rd=pc+ka;if (rd<rb){let wj=fp[3195u+f]+fp[3067u+f]*U(planes[5572u+f],ka*2u*a);let xj=fp[3195u+a+f]+fp[3067u+a+f]*U(planes[5572u+a+f],ka*2u*a);scratch[ij+rd*a+f]=j(wj);scratch[jj+rd*a+f]=j(xj);}}workgroupBarrier();for(var la:u32=0u;la<b;la=la+1u){let af=pc+la;if (af<rb){let yj=qj+oj*u(kj,lj,la*a);let zj=rj+pj*u(mj,nj,la*a);scratch[hj+af*a+f]=r(yj)*j(zj);}}}@compute @workgroup_size(64) fn l2_scan(@builtin(local_invocation_id) Aj:vec3<u32>,@builtin(workgroup_id) bf:vec3<u32>){let M=Aj.x;let vb=jobs[bf.y];let sd=vb.token_count;let td=l*vb.stride*bf.y;let cf=td+vb.stride;let df=td+2u*vb.stride;let ef=td+3u*vb.stride;let Bj=j(fp[4686u+M]);let Cj=j(fp[4750u+M]);var ud:f32=0.;for(var ma:u32=0u;ma<sd;ma=ma+1u){let Dj=scratch[cf+ma*a+M];let Ej=Bj*(1.-scratch[df+ma*a+M]);ud=Ej*ud+Dj;scratch[df+ma*a+M]=ud;}var vd:f32=0.;for(var rc:u32=0u;rc<sd;rc=rc+1u){let wd=sd-1u-rc;let Fj=scratch[cf+wd*a+M];let Gj=Cj*(1.-scratch[ef+wd*a+M]);vd=Gj*vd+Fj;scratch[ef+wd*a+M]=vd;}}@compute @workgroup_size(64) fn l2_post(@builtin(local_invocation_id) Hj:vec3<u32>,@builtin(workgroup_id) sc:vec3<u32>){let q=Hj.x;let wb=jobs[sc.y];let ff=wb.token_count;let gf=wb.stride*sc.y;let hf=l*wb.stride*sc.y;let Ij=hf+2u*wb.stride;let Jj=hf+3u*wb.stride;let jf=sc.x*b;let Kj=planes[5300u+q*4u];let Lj=planes[5300u+q*4u+1u];let Mj=planes[5300u+q*4u+2u];let Nj=planes[5300u+q*4u+3u];let Oj=fp[2923u+q];let Pj=fp[2987u+q];let Qj=j(fp[4622u+q]);for(var na:u32=0u;na<b;na=na+1u){let xd=jf+na;if (xd<ff){n[na*2u*a+q]=scratch[Ij+xd*a+q];n[na*2u*a+a+q]=scratch[Jj+xd*a+q];}}workgroupBarrier();for(var xb:u32=0u;xb<b;xb=xb+1u){let yd=jf+xb;if (yd<ff){let Rj=Pj+Oj*sa(Kj,Lj,Mj,Nj,xb*2u*a);hid[gf+yd*a+q]=hid[gf+yd*a+q]+Rj*Qj;}}}@compute @workgroup_size(64) fn pool_reduce(@builtin(local_invocation_id) Sj:vec3<u32>,@builtin(workgroup_id) zd:vec3<u32>){let R=Sj.x;let yb=jobs[zd.y];let tc=yb.token_count;let kf=yb.stride*zd.y;let Ad=l*yb.stride*zd.y;let Tj=Ad;let Uj=Ad+yb.stride;let lf=Ad+5u*yb.stride;let Vj=fp[4878u+R];var Bd:f32=0.;var Cd:f32=0.;var Dd:f32=0.;var Ed:f32=-3.4e38;for(var zb:u32=0u;zb<tc;zb=zb+1u){let uc=hid[kf+zb*a+R];Bd=Bd+uc;Ed=max(Ed,uc);let mf=j(uc*Vj);Cd=Cd+uc*mf;Dd=Dd+mf;scratch[Tj+zb*a+R]=Cd/max(1.,Dd);}var Fd:f32=0.;for(var Ab:u32=0u;Ab<tc;Ab=Ab+1u){let nf=tc-1u-Ab;Fd=Fd+hid[kf+nf*a+R];scratch[Uj+nf*a+R]=Fd/f32(Ab+1u);}scratch[lf+R]=Bd/max(1.,f32(tc));scratch[lf+a+R]=Ed;}@compute @workgroup_size(64) fn pool_apply(@builtin(local_invocation_id) Wj:vec3<u32>,@builtin(workgroup_id) vc:vec3<u32>){let h=Wj.x;let oa=jobs[vc.y];let pf=oa.token_count;let Xj=oa.stride*vc.y;let wc=l*oa.stride*vc.y;let Yj=wc;let Zj=wc+oa.stride;let ak=wc+4u*oa.stride;let qf=wc+5u*oa.stride;let rf=vc.x*Bc;let bk=planes[E+h*8u];let ck=planes[E+h*8u+1u];let dk=planes[E+h*8u+2u];let ek=planes[E+h*8u+3u];let fk=planes[E+h*8u+4u];let gk=planes[E+h*8u+5u];let hk=planes[E+h*8u+6u];let ik=planes[E+h*8u+7u];let jk=fp[Vf+h];let kk=fp[Wf+h];let lk=planes[Md+h*2u];let mk=planes[Md+h*2u+1u];let nk=fp[Xf+h];let ok=fp[Yf+h];for(var C:u32=0u;C<Bc;C=C+1u){let xc=rf+C;let Gd=xc<pf;t[C*4u*a+h]=scratch[qf+h];t[C*4u*a+a+h]=scratch[qf+a+h];t[C*4u*a+2u*a+h]=select(0.,scratch[Yj+xc*a+h],Gd);t[C*4u*a+3u*a+h]=select(0.,scratch[Zj+xc*a+h],Gd);c[C*a+h]=select(0.,hid[Xj+xc*a+h],Gd);}workgroupBarrier();for(var pa:u32=0u;pa<Bc;pa=pa+1u){let sf=rf+pa;if (sf<pf){let N=pa*4u*a;var m:f32=0.;for(var Bb:u32=0u;Bb<32u;Bb=Bb+1u){m=m+g(bk,Bb,t[N+Bb]);}for(var Cb:u32=0u;Cb<32u;Cb=Cb+1u){m=m+g(ck,Cb,t[N+32u+Cb]);}for(var Db:u32=0u;Db<32u;Db=Db+1u){m=m+g(dk,Db,t[N+64u+Db]);}for(var Eb:u32=0u;Eb<32u;Eb=Eb+1u){m=m+g(ek,Eb,t[N+96u+Eb]);}for(var Fb:u32=0u;Fb<32u;Fb=Fb+1u){m=m+g(fk,Fb,t[N+128u+Fb]);}for(var Gb:u32=0u;Gb<32u;Gb=Gb+1u){m=m+g(gk,Gb,t[N+160u+Gb]);}for(var Hb:u32=0u;Hb<32u;Hb=Hb+1u){m=m+g(hk,Hb,t[N+192u+Hb]);}for(var Ib:u32=0u;Ib<32u;Ib=Ib+1u){m=m+g(ik,Ib,t[N+224u+Ib]);}let pk=r(kk+jk*m);let qk=j(ok+nk*u(lk,mk,pa*a));scratch[ak+sf*a+h]=pk*qk;}}}@compute @workgroup_size(64) fn head(@builtin(local_invocation_id) rk:vec3<u32>,@builtin(workgroup_id) yc:vec3<u32>){let i=rk.x;let qa=jobs[yc.y];let zc=qa.token_count;let sk=qa.token_offset;let tk=qa.stride*yc.y;let tf=l*qa.stride*yc.y;let uk=tf+4u*qa.stride;let vk=tf+7u*qa.stride;let Hd=yc.x*b;let wk=fp[bg+i];let S=i;let D=a+i;let xk=planes[F+S*4u];let yk=planes[F+S*4u+1u];let zk=planes[F+S*4u+2u];let Ak=planes[F+S*4u+3u];var uf:u32=0u;var vf:u32=0u;var wf:u32=0u;var xf:u32=0u;if (D<va){uf=planes[F+D*4u];vf=planes[F+D*4u+1u];wf=planes[F+D*4u+2u];xf=planes[F+D*4u+3u];}var yf:u32=0u;var zf:u32=0u;var Af:u32=0u;if (i<V){yf=planes[Cc+i*3u];zf=planes[Cc+i*3u+1u];Af=planes[Cc+i*3u+2u];}let Bk:f32=fp[fg];for(var Jb:u32=0u;Jb<b;Jb=Jb+1u){let Ac=Hd+Jb;let Ck=select(0.,hid[tk+Ac*a+i],Ac<zc);let Dk=select(0.,scratch[vk+Ac*a+i],Ac<zc);c[Jb*a+i]=Ck+Bk*Dk;}workgroupBarrier();Ob(i,b);workgroupBarrier();for(var O:u32=0u;O<b;O=O+1u){let Bf=Hd+O;n[O*2u*a+i]=c[O*a+i]*v[O]*wk;n[O*2u*a+a+i]=select(0.,scratch[uk+Bf*a+i],Bf<zc);}workgroupBarrier();for(var T:u32=0u;T<b;T=T+1u){let Kb=fp[Od+S]+fp[Nd+S]*sa(xk,yk,zk,Ak,T*2u*a);let Ek=.7978845608*(Kb+.044715*Kb*Kb*Kb);c[T*va+S]=.5*Kb*(1.+r(Ek));if (D<va){let Lb=fp[Od+D]+fp[Nd+D]*sa(uf,vf,wf,xf,T*2u*a);let Fk=.7978845608*(Lb+.044715*Lb*Lb*Lb);c[T*va+D]=.5*Lb*(1.+r(Fk));}}workgroupBarrier();if (i<V){for(var Mb:u32=0u;Mb<b;Mb=Mb+1u){Dc[Mb*V+i]=fp[ag+i]+fp[Zf+i]*Hf(yf,zf,Af,Mb*va);}}workgroupBarrier();if (i<b){let Cf=Hd+i;if (Cf<zc){var Df:u32=0u;var Ef:f32=Dc[i*V];for(var Nb:u32=1u;Nb<V;Nb=Nb+1u){let Ff=Dc[i*V+Nb];if (Ff>Ef){Ef=Ff;Df=Nb;}}out_cls[sk+Cf]=Df;}}}";var x0=I({tokenize:$,shader:r0,meta:e0,pipeline:t0,sym:a0,f16:u0});export{x0 as parse};
package/package.json CHANGED
@@ -1,7 +1,17 @@
1
1
  {
2
2
  "name": "gpu-lexer",
3
- "version": "0.0.2",
4
- "description": "Experimental language-agnostic WebGPU syntax highlighter",
3
+ "version": "0.0.3",
4
+ "description": "Tiny language-agnostic WebGPU syntax lexer",
5
+ "author": "Shu Ding (https://x.com/shuding)",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/shuding/gpu-lexer.git",
9
+ "directory": "packages/core"
10
+ },
11
+ "homepage": "https://github.com/shuding/gpu-lexer#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/shuding/gpu-lexer/issues"
14
+ },
5
15
  "type": "module",
6
16
  "main": "./dist/index.js",
7
17
  "module": "./dist/index.js",
@@ -11,11 +21,17 @@
11
21
  "types": "./dist/index.d.ts",
12
22
  "import": "./dist/index.js",
13
23
  "default": "./dist/index.js"
24
+ },
25
+ "./lite": {
26
+ "types": "./dist/lite.d.ts",
27
+ "import": "./dist/lite.js",
28
+ "default": "./dist/lite.js"
14
29
  }
15
30
  },
16
31
  "files": [
17
32
  "dist"
18
33
  ],
34
+ "sideEffects": false,
19
35
  "scripts": {
20
36
  "build": "node scripts/build.js",
21
37
  "prepack": "pnpm build",