精华内容
下载资源
问答
  • C语言读取txt里面图像数据字符串换成十六进制然后保存为bmp格式图像文件 一、现在因为某种原因,图片的数据是放在image_data.txt文件里面,现在我需要把image_data.txt里面的数据读出来然后换为十六进制,...


    C语言读取txt里面的图像数据字符串换成十六进制然后保存为bmp格式的图像文件


    一、现在因为某种原因,图片的数据是放在image_data.txt文件里面,现在我需要把image_data.txt里面的数据读出来然后换为十六进制,再保存为bmp文件。

    二、测试代码

        1、read_image.c文件的代码

    #include <stdio.h>  
    #include <string.h>  
    #include <errno.h>  
    #include <fcntl.h>
    #define IMAGE_W 160
    #define IMAGE_H 160
    #define BUFSIZE IMAGE_W*IMAGE_H*2
    int write_data_to_txt( const char* fs_path, char buf[][8], int nbytes)
    {
    	int i=0;
        //下面是写数据,将数字0~9写入到data.txt文件中  
        FILE *fpWrite=fopen("data.txt","w");  
        if(fpWrite==NULL)  
        {  
            return 0;  
        }  
        for(i=0;i<10;i++)  
            fprintf(fpWrite,"%d ",i);  
        fclose(fpWrite); 
    	printf("success write!\n");
    	return 0;
    }
      
    int read_data_txt( const char* fs_path,unsigned char *buf, int nbytes,unsigned char *hex_buf)
    {
    	int i=0;  
    	unsigned int nValude = 0; 
    	unsigned char  hex_data[5]; 
    	hex_data[0]='0';
    	hex_data[1]='X'; 
    	hex_data[4]=" "; 
        //下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上   "image_data.txt"
        FILE *fpRead=fopen(fs_path,"r");  
        if(fpRead==NULL)  
        {  
            printf("failed to open the file\n"); 
            return 0;  
        }  
        for(i=0;i<nbytes;i++)  
        {  
            fscanf(fpRead,"%c ",buf+i); 
    		if(i%2!=0)
    		{
     			hex_data[2]=buf[i-1];
    		    hex_data[3]=buf[i];
    		    sscanf(hex_data, "%X", &nValude); 
    			hex_buf[i/2]=(unsigned char)nValude;
    			//printf("read data from txt i=%d nValude=%d\n",i,nValude); 
    		}
    		
        }  
    	fclose(fpRead);
    }
    int chips_fs_write( const char* fs_path,unsigned char *buf, int nbytes)
    {
    	int fd;
    	int ret; 
    	
    	fd = open( fs_path, O_CREAT|O_RDWR,0666);
    	if(fd < 0)
    	{
    		printf("[chipsailing:%s] open %s failed,ret = %d", __func__,fs_path, fd);
    		return -1;
    	}
    	
    	ret=write(fd , buf, nbytes);
    	if(ret < 0)
    	{
    		printf("[chipsailing:%s] write %s failed,ret = %d",__func__, fs_path, ret);
    		return -1;
    	}
    
    	close(fd);
    
    	return 0;
    }
    
    void WriteBmpFile(char *fs_path,unsigned char *buf, short img_w, short img_h)
    {
    	int len = img_w * img_h;
    	unsigned char temp_head[54] = 
    		  {   
    		       0x42, 0x4d, // file type
    			0x0, 0x0, 0x0, 0x00, // file size
    			0x00, 0x00, // reserved
    			0x00, 0x00, // reserved
    			0x36, 0x4, 0x00, 0x00, // head byte
    			// infoheader
    			0x28, 0x00, 0x00, 0x00, // struct size
    			// 0x00,0x01,0x00,0x00, //map width
    			0x00, 0x00, 0x00, 0x00, // map width
    			// 0x68,0x01,0x00,0x00, //map height
    			0x00, 0x00, 0x00, 0x00, // map height
    			0x01, 0x00, // must be 1
    				0x08, 0x00, // color count
    				0x00, 0x00, 0x00, 0x00, // compression
    				// 0x00,0x68,0x01,0x00, //data size
    				0x00, 0x00, 0x00, 0x00, // data size
    				0x00, 0x00, 0x00, 0x00, // dpix
    				0x00, 0x00, 0x00, 0x00, // /dpiy
    				0x00, 0x00, 0x00, 0x00, // color used
    				0x00, 0x00, 0x00, 0x00, // color important
    		};
            unsigned char head[1078] = { 0 };
            unsigned char *newbmp = malloc(1078 + len);
    		memset(newbmp,0,1078 + len);
                    memcpy(head,temp_head,sizeof(temp_head));
    		int i, j;
    		long num;
    		num = img_w;
    		head[18] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[19] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[20] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[21] = (unsigned char) (num & 0xFF);
    
    		num = img_h;
    		head[22] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[23] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[24] = (unsigned char) (num & 0xFF);
    		num = num >> 8;
    		head[25] = (unsigned char) (num & 0xFF);
    
    		j = 0;
    		for (i = 54; i < 1078; i = i + 4) 
    		{
    			head[i] = head[i + 1] = head[i + 2] = (char) j;
    			head[i + 3] = 0;
    			j++;
    		}
            memcpy(newbmp,head,sizeof(head));		
            memcpy(newbmp+1078,buf,len);	
    		chips_fs_write(fs_path,newbmp,1078 + len );
    		free(newbmp);
    }
    
    void main()  
    {   
        int i;
        unsigned char  bufffer_data[BUFSIZE];
    	unsigned char  bufffer_hex_data[BUFSIZE];
        read_data_txt("image_data.txt",bufffer_data,BUFSIZE,bufffer_hex_data);
    	
    	printf("\n\n\nbuffer data is :%s\n\n\n\n\n\n\n\n\n\n",bufffer_data);
    	for(i=0;i<BUFSIZE/2;i++)
    	   printf(" 0X%02X",bufffer_hex_data[i]);
       WriteBmpFile("image.bmp",bufffer_hex_data, IMAGE_W,IMAGE_H);
       printf("\nread to read image data! IMAGE_W=%d,IMAGE_H=%d\n",IMAGE_W,IMAGE_H);  
    }  
    
        2、图像数据txt文件image_data.txt
    D6D6CECBD3D3C9C2CDCBBCB0C3BF9E90B8B59B95AAACA4A4B2B1A899A1998E818B898C808C8D8F828B90979198949188929191898C878B7E878A928D979CA09A9C9594878C8C90868A898E8184858C838C8F9A959A9A9D92918F91888D90948B92979E9CA4A9ADA3A19D9A8C8F8C938A9193979096999E9595909283898D9C9AA3A3A0918F8B918588878C8089909C9BA2A09F93959398929EA0A099AAAFAAA1CCCBC9C7C7C5C4C0BFBBB7B1AAA097908D8C8D8F93969A9FA5A4A49D97918D8A898A89888687878684898F92929191909194989894908C8A888C8F9395999D9C9A959491919294959492918D87878A8A898D94979A9EA09C98969695949695939193989FA6ADB0B1ACA8A49D969392908E8F9295989FA2A39E98928A888D939BA0A3A09996949694918E8D8A888E959BA0A3A29E9B9A9A9A99989696999DA0A0C5C3C1BFBEBDBCBBB9B7B3AEA69E958E8A898887898E91959A9FA09D9994918F8F8F8C8A878685858487898C8D8D8D8F90979B9E9A97908D8B8E9394959897959492918F8F93979A9B9C98948F8E8D8C8B8D9093969B9E9D9A9A99999999989594959A9FA5ACB2B4B3B1ACA8A19C95908D8D8E9197A1A5A7A39F97908A8B8F969BA09E9C9A9B9C9D9A97918D898D91989DA1A2A19F9E9F9D9895929093999D9FBCB99DABB3B39AABB3B196A1A59E76828B86607484876480939676919A956E8793936C8187865C728383617B888863808F967A979F9A6F828F91748B98977486908E68818E9272939F9E7F9198957383908D6B809196778E9896738E9A9A788E99997A94A4AB98ADB4B397A4A8A17B868D8A6780949D879FA6A27D868F8D6E849799788F9A9B7C969F9B74828D8C6D88999D7E989FA07F9499936C808F937794ADB4ADA8A3ADABABA9B1ABA8A1A69994889286867C8E868A85989699939F9A96929C9893879087857D8E888982918B8B899C9D9F9AA196918C9D9C9C97A299948A968D8D8797979C9DA9A5A49DA69E9C909B918F899993948D9A959590A09D9E9AA6A0A09FAFAFB1AEB6B2AFA7AC9F998A968D8E8CA3A2A6A3ACA29C8F9C93938C9B9597929F9E9F9DA59D988D999093919F9C9E9AA5A39F969C918C8799989AA1A39F9E999D9FA2A1A4A4A5A0A19D988C8E8B8881858588858D919694979798959899958D8D8988838A8A8D868B888A8890959C98999392919A9FA19EA09D9890918E8F8992949B9CA3A6A7A4A7A6A39A9A96958E918F8F898E8E918D979CA3A2A6A4A6A2A8A8A9A6ACADADA7A7A19C91928F8E8D959CA3A4A9A6A39B9D99958E8F8E8F8D95989D9DA4A19E959692928C929498979EA0A09A97938E8790939797979593949395979A9B9E9FA19F9D9A96918F8B878888888A8D91939393949495979897928D8A8A8A8F90918F8D8A88888C909494939090959CA1A4A5A5A29D99959290919194969A9FA4A7AAABABA8A6A19E9996938F8C88898A898E959CA4A9ABABA9A6A4A29FA0A2A4A7A5A3A29D9A9793919093979BA1A6A7A7A4A39F99928C8B898B90949A9FA4A6A4A09995908C8D8E92969A9EA1A09D97928C8D90928A8E96878B8F95868D939C929B9FA39597989886888D93858A90988B8D90968A8E969C8E8F8F90848A939C9091919381868B93858A8E9488949DA5A1A6A9AB9F9C9A9B8E92969C8E949CA7A0A9ADB1A7A8A9A99C9997958183878E808794A1A1ABB0B3A7A7A4A4929499A2979C9FA296989B9E8F8E92988B97A0A9A0A3A6A997938F917F848C978F9AA3AAA3A3A19F87888A91858E97A29DA2A3A38F8C8C94858D909293918F8C8B8C8D9195999C9C9D9B9796929191929293959595948F8F8D90909391908C8C8A8F93999C9B97928F8C8B8D8D8B888B8C959A9FA3A6A9A9A7A29D9A9B9B9A9A9998999FA5A9ABADADACABAAA7A29B938C878687888D949EA7ADB2B2B1ACA59E9693909395969596999A9D9C9B95918E8E92969CA1A4A5A6A39D938D8987888C91999FA7ABAAA49F958F8A8B8C90949DA3A6A6A59D948E8C8A8E9397979792918E8C8C8E9295989A99999595939293939696979A9B98938F8C8E8C8F8F8C8987898E93999D9E9A989491908F8F8B88898B9095999DA1A4A6A5A39F9D9C9DA0A09D9D9C9FA2A7A8A9AAABACADA9A59E95908B89888A8E949DA5ACB0B1B1ADA69E968F8A8B8D8E8E9092989B9D9C98928C898B8D94989DA2A5A6A29A938C8986898C949CA4AAADAAA49C958D8C8C8E949BA2A8ABA9A39C938E898E9E9B999DA4978F939A928D969F9791959A938C929B938F98A29C989DA093898E958C87899186818A979698A0A59D95999E958D8F9488838C98908F99A49F9CA0A59D99A1AAA39FA2A9A29EA2AAA3A1A8B1ABA6A7A7988D8F978E87909D9C9CA8B2AFABACAD9E908D91878088908A87939E9B94979A8B8286918C8A96A4A3A2A6A7998B8B9188818D9DA1A3ADB3AA9F9C9D908A909B989CA6B1ACA4A2A2948588989CA19EA49E9C969B9699979E97958F958E8D8A928E92909A9C9F9C9F96938E938E8C858A8385828F909899A3A0A09B9E99968C8E8688858D898C8A969598989C9A9C9EA6A5A6A4A8A2A09CA29EA0A0A8A5A6A1A19A9691979394909A989C9DA8A7ABA6A69B94888B84837E88848988959596929289867F8983898A999EA4A4A79D968B8F8686849397A2A5AEACAAA0A095938D94929A9EABABACA5A499908B939BA0A4A6A4A4A4A2A3A3A3A29F9D9B96928F8D8E8C8E91959A9E9F9F9B9A98979593908C8A88888A8F969DA2A4A4A4A2A19C97928D8D8C8C8B8C8C8E9093969798999EA2A6A9AAAAA7A3A29E9FA0A0A1A1A2A09E9B9B9B9C9D9D9D9C9B9B9DA0A2A4A4A099918D888788868684878A8E929293908D8A888786888D9299A2A6A7A39E98948D8B8A8E939CA4ACAEAEABA6A19A979391949CA5ACAEAEA8A096868F97A0A1A3A7A9A6A7A9ABA8A7A6A59F9A97958D8C8C8E8C8F949B9A9A9B9D9A9A9B9E97928F8F8A8B919A9BA3A8ACA7A5A3A3999492948E8E8D908B8B8E928F919399989EA4AAA9ABAAAAA5A3A3A39E9C9C9C97979A9F9DA0A3A6A19FA0A09B9C9D9F9B9895938A8A8B8E8986888886888B928D908F908A898A8C8A8F939EA0A3A4A59E9995918B8A8F989CA6ADB3AEACA8A39A928F93949FA9B2AEACA5A0769E8C9A93AFA1A79BB3A4ACA0B5A6AA9BAF989B879F888F7D9E899587A4929A90AA9AA192A9919584A0919D95B2A6ADA1B3A1A290A58F9588A28D95849F899082A08B9589A99CA9A2B7A9ADA1B4A4A795AA949885A2909C94AEA1A99DB29FA496AA949A88A38A8F7F9B8991819D858B7998838D81A08E94859F8A91809E8C9890AC9EA59AAE9797819E88938AADA5B0A9BBA9A893A58A8F84A7A0B0A8BAA6A2868A9094999FA0A0A1A0A1A3A5A6A6A6A6A3A09C9794918E8D8A8A8A8C8E8E9095999D9D9E9C999897979A9EA4A9ACACABA7A39D98969593949496979693918E8E8E909092979EA3A9ACACADACACABA8A39D96918F8E8F94999EA2A5A7A8A8A5A29D98928E8C8A8A888C909293908D8A868586878B909094939492908F8C8E8F93979BA1A4A5A19A94908D8E9199A3A9ADAFAEA89F968E8B8F959EA8AEAFACA48A8E9194999C9E9E9C99999C9C9E9FA3A3A2A2A19D9B9794908C8A898885878A8E919599999B9B9C9B9DA0A5A9ACADADABA6A09B969392929195979B9B9894939191909395989DA3A8A9AAACADADADAAA7A199938D8A898E92959B9FA3A5A8A7A49F97908B878587888C90949795928C88868387888B909496979796928F8A8C8D90969EA4A6A49F98938F8F8F939AA3A8ACADABA49A918E8F9198A3A9ADABA693A183959EAB919D9EA5819398A384989FA98F9FA1AA8E96989D7A868A966D848D9A7A8F96A38B989FAA99A7AFB7A4ADADB08F96969C7E8C929E8C9B9FA7889396A080939AA78FA1A8B19BA6B0B5A4ADADB08F95949B73868E9C80959FAB9CA7A9AD8A908F966C83899781939BA5889090996E818998798F99A58E989AA07C8A8E9B7D96A2B09BA19FA3838F939E8097A4B19FABABAB868E919F829CA8B4A3A8927E97999D8BA39E9D8297909072908F927996969B869E99977D918B89698783876C8A8A8F7894959A8DA7A9ADA0B2ADAB94A09690718C888D7999999E889A94937993949A89A3A3A48EA4A1A596AEADAC97A29794738A84886A8C8C9687A2A6A8939F948E6B8681856F91949C889E9794738A838566898B94859F9E9D83978F8E6F8F929C90A8A4A2899B9392728E909789A7AAAA919F9493769598A093ACA9929595999DA2A4A4A19F9A95918F8C8B8D909093959999999897948F8C8B8A898A8B8C8C8C8D8F93989EA3AAAFB2B1AFADA99F988F8C89888991959A9E9D9894919393979CA2A5A6A5A39F9E9FA5A9ADACAAA29A95918B878587868A8E999FA5A9A9A39B938D8685868C90969B9F9F9F9B97908A8786878A91979EA3A4A39D9791908E9199A2A7A8A9A8A49F98918D8D9199A0A8ACADA7A19A9896979BA2A5A98C8F94959AA0A4A4A3A19E979390908C8A8B8E8E8F909492949495918E8D8F8C8F8F928F8C8C8E91959BA2A8ADB0B2B0ADA8A3988E888985878E95979A9996918F8E94969CA2A7A8A6A2A19C9DA0A8ABACA9A49C9591908B878688878B919CA2A6A7A6A097908C8787888E91969BA1A19E9C98908A8788888B939EA3A6A6A49D98919190959DA7A9AAACACA89F96908B8B919CA3AAADADA7A29C9B959598A1A4898F8C90959D9FA2A3A29E9B9999908F90938E8D8D908A8C9094919091929193979B969491928E92979DA0A6ADB1B0B0ADAAA197918D8686898F90949A9C95908F918E929BA3A5A8A9A7A19EA0A6A7AAABA9A29C9998938F8E8E89898D92959CA3A7A5A19D99908C8B8D898D92979A9EA1A39D96908E86868B94979FA6AAA7A39F9B9290969EA1A6ADB2B0AFA7A0928B8B91969EA9B0AFACA9A59A929197999E858B8B8B8F94989C9D9D9C9B9B9B9996949494908D8C8C898A8D8D8D8D909296999C9C9A969594969A9DA0A5A9ADB0AFABA7A0968E8A8786878C9095989A98938F8D8D90949CA3A6A7A7A6A5A5A8A8AAA7A49E9A9997969392928E8D8C8E919498A0A3A2A09C98938E8D8A8A8A8F94999EA19F9B95908A85888D93999FA5A6A6A39E979495989BA1A6AEB0B0ACA3978E8889909AA5ACAFAEAAA49A908C8E9499888B8C8B8C8E9295969696999A9D9D9C9B9B9A9792908D8B8A8A8A8A8B8E91959A9DA19F9D9A9B9B9DA0A3A5A9ACAFADAAA6A0958D888887888C91979D9E9D9895908F9092979EA3A6A8A9AAAAACACA9A49F9B9596979A999899979493928E9093989FA2A3A19E9B96908D89878B8E92989DA19F9C958E8A8A898D92979EA4A6A5A09E9A979696999FA7ADB1AFA79C908A8A8F959EA7ADAEABA49A8F89898F928F8B968991889386928D978E9897A298A09AA2959C9299898E868F828D88938A9895A29AA19DA49BA2A0AAA3ACA9B1A8ABA1A38F8F848D818B8B9A96A19FA79A9D949A8C9592A099A7A7B0AAAFABB0A5A6999C8C95919E969E9CA4949A919685918E9E96A39FA89C9E9397858C8490849595A29AA0969C898E8691849492A29DA7A1A8999D91998D9B9DAEAAB0A7A690918791899B9FADA7AA9E9C868B83908693949593948F8D8D908F9092969699999D9D9D9D9E9A9894938F8C8B8D8C8B8D9293989A9FA0A2A1A5A4A7A8ADAEAFACAAA39C938E898A888C90969CA4A5A5A2A39F9C989A999CA0A6A9ABADAFAEACA9A39B9591929396999EA1A1A19F9A948E8F8E92979DA2A4A3A29D97918F8987898E94989C9F9D9B96938E8B898D90979DA3A6A6A4A1999491969BA3ABB0AEA89D96918B8D969BA3A7A8A1998F8C8688889096979693908E8E8F9190929192929394979799999B9997959692908F8F8B8B8A8D8F95989B9D9EA0A4A6AAACB0B0AEA8A39C938B8B8888898E939B9FA3A2A3A1A3A19F9E9E9EA1A2A5A7A9AAABA8A6A19B94928E9092979A9EA1A19F9D97918D8D8D91949B9FA2A3A09C978F8C8787888E92989A9C9C9994918D8A888B8E959BA4A8A9A5A0989491959BA5ABB0ACA59B958D8B8D959CA3A5A39B928B8785868E939E959490999094949F92948F988C8E8C989093949D959997A0959790998A8A86938A91939F999E9FAAA6ABAEB4ACA9A2A3938F8993898B8B99959C9DA79FA2A1AAA1A2A0A99FA2A0A7A0A3A4AA9F9F9B9F908F8C97909698A49EA09DA192908C968C8F91A19DA19EA598968F95858785958F9498A29B9B94998A8884938D98A0AFAAAAA3A593908B9C9CA7ABB4A9A3979A8A8D8B9E9CA3A3A5958F858F82908C9495988D92949C969D9A9B8E8E8A8B8288898F8890929B969B9B9F94969191858B8B908A91949C969FA4AEAAAFADAFA19D97978B8D8D8E878E939A969C9DA59EA3A6ABA2A4A2A59999989F999E9DA2999A97978A8D8E9591999CA19A9C989A8E908E8F8992979F979C9CA094928D8C8087899390999DA29796908E82888C989AA8ACB1A4A19795888E97A5A5AEACAB9B968E8F859199A6A1A29B97858581868C8E90928F8F94999B9C9D9B948E8A878684868688898D94979A9D9D9D9A9795918E8E8E8E8D909394979EA4AAABADABA7A19B97939192908F8E91949797999C9EA2A7A9AAA8A5A29D969494979799989A9A9997928E8D90929397999A9B9B9C9A95928F8C8C909295989D9F9E98928A868386898F959CA1A19D9790888589909AA5ACAFACA69C938D8B929BA3ABAFACA69A928C8A8C959EA5A4A0998F8782838789B78B8C8DBB949A9BC1999691B9898785B3848387B68D9296BE9B9E9EC29C9A96BE949291BB909091BF9CA2A6C8AAA8A4C29A9695BD959392BA939596BE989CA0C7A9ACAAC9A49E98BB939393BC92959AC19A9893BB908F8FBA939699C19F9F9CBF918D8AB88C8F94C1A1A29FBF8F8885B3878B91C0A2A6A4C2958D88B58C949EC9AEAEA8C4978D8CB995A0A9CCAEAAA0BE8D8A8CBB9AA4A5C69C938AB3989388819D948B84A39E9890A89E9489A1978980999388829E99928EA7A39F9AB0A89F99ADA3988FA49B918CA6A3A09EB4ABA598AB9F9790A79F978FA7A09892AAA6A3A2B8B2ADA6B6A89C90A49C8F87A29B9A95ACA29C91A59B8F87A09A9694AFA8A498A89C8C829D989393B0AAA496A599877D9A969193B2AFAB9FAB9D897F9C9C9C9FB8B2ADA0AC9F8F87A5A5A8A9BDB2A595A4998B88A8A7A6A0AFA28F7F8E8A81868F8C858992918C9099958E9098948A8A928D8688938D888E9998969BA6A3A0A3AAA49C9B9E968B909997939BA5A29C9A9D978F939C9A9496A19E999BA5A2A0A7B0AEABABAFA79D9A9D93898B9492939BA7A59E9BA3988E8D95908C95A4A4A2A1A49A8B89908F8C98A7A8A3A2A09386868E8B8995A7ABA9A8A59887859090909EABACA8A7A99B8D8D999B9FAAB4B0A69F9E93888C9A9FA0A4A99F8D8684868587878687878588878A8A8B8D8F8F8F8E8E8B8D8E8D8A8D8A8B8B8F9195979DA0A4A6A7A5A29C969391908F909295979794918F8E8F8E9193979A9D9FA0A1A3A5A8A9ABAAA8A7A59F9A938F8A88868991999FA2A2A09F9995928C8C8C91969C9FA19E98908A85878B939CA3A5A49C958F8B87878A939BA5AAA69F948A8583868B939AA3A8A8A39B938E8C929AA4AAADAAA69B938C8C8E979FA2A29C9287868C858C8A8D868C878C838C888B888F8C918D929096919794938B908A8D8991919A9BA4A6ABA6A8A1A0969894938B918F948F9490918A8F8C908C9898A09EA5A5AAA7ACAAACA7A9A6A79C9C9592878A868D8C979EA6A2A4A2A2989A92928A90919A99A09E9E9191898C879297A2A0A7A2A094948C8C879298A4A4A79E988A8A8488859094A0A1A9A5A194928B90909FA5ADABABA29B8C8F8F989BA5A2A1938E8989888A8F8D8B8C8F8B898A8D8A87898C8A8C8E939496969995918F8F8C888A9292979CA5A7A6A7A7A29E9C9C958E8C8E8D8B8F93908E8D8E8A8B8E97999DA3A9AAA9ABACA8A5A2A39F9A96968E8A878B898B929B9EA0A3A5A3A09C9A928C8A8F90949AA09D9893918B888B949B9EA3A7A29D98948C888C969CA0A1A1968C868784828790969EA4A79F968E8D8A8B94A1A6ABABA79B908B90959CA2A6A0978C8486868B8C8D8C9090918F908E8D8989868785888A8E939595959393918D8B8D8E9091979B9FA1A4A5A4A3A39F9A928F8A8A8A8D8E908E8E8B8B8A8C8D93989EA2A7A8ABA9A8A3A09B9994928E8B8889888A8C9094999B9EA1A2A1A19B948E8A898B8E969A9D9D9A938E88898A91979FA2A4A29F97918A8D8D93969A99938C8784828185878F98A0A19E958E8887868D96A1A8ABA59C928D8D939BA3A3A1988E818587858A8E908F9495979394938F8787878681888A8F8D91949593949493919394938F94969B9BA0A3A5A4A4A09C908E8B8D8B8C8F908B8D8D8D868C9095969DA3A7A7A9A8A59C9994918A898989878D8E928E919395969CA1A3A19E98938A898A8D91999EA29D9A948E86878A91959FA5A5A29F9894898C8E919295948F868584847F838B959A9F9E988C89888785909BA6A6A69E968C8D929BA0A5A49E8F80928A888999909092A19B9997A2938D8894888382928A898A9C959595A29B9898A297928F9D959699A8A2A4A3ADA099919B8F8D8C99908E8D99908E8D9B949295A6A1A4A6B1A69E989F918887958C8D8FA197928E9A8F9095A6A1A39FA79A928D9A919398AAA4A29EA3938885948D9097ABA7A6A2A99B928C97908F919E938D899588838396929A9EAA9C938B9689868BA3A1A8A4AB9A918D9D9BA0A4AFA2968486868688898C8D919497989A9894908C87848383828384888A8E9296999B9D9F9C9A96918E8E9092959A9DA2A19F9C999491908E8B8A8B8C8F909092908E8E8F93979DA4A6A4A09B948D8A88888C91989B99948F8A8A8A91979DA1A2A19C99939090949AA0A4A3A09A90898685858B919AA2A7A8A49C948D89898C92939493938E888485888F98A0A39F9A938B86858B949EA5A7A29B93908F959EA4A6A399868987888585878A8C8F9399979593908D888787818282858486898F92969BA0A0A19F9D97928F8E8D8E9197989A9B9D9B9A98968F8B8889888B8E939493908E8B8B90999DA2A4A19D9691908B8B90979B9E9C98908A878A898F979FA2A3A3A29A959196999DA2A39F99918C858383898B939DA6A8A69F978D88888D8F95999C9A968E8B86878E9AA1A5A5A39990898989909AA5A7A49E978F8E919BA3A6A59C8594957E7F90937C819398888A999A878693937F7F8E8D7B7C8F917F869AA0959BA8AD9D98A29F8988969A878B9B9E9197A5A7958D96947B7F92978B909E9D858393968993A4AB9D9BA4A28C89999C8F97A5A7938D94937E7F959C939DACAFA09BA29E898DA1A698979E9A817D8D8F798098A29EA3ACAA9289939380889DA69C9CA49F837E91988F9CAEB1A29B9E95808398A29BA3ADAA938C979B8F9AABAE968F8D8B8A898888868786898A8A88898A8C8B8A898A868687878687888A8C93979B9FA3A4A29E9997938F8D8D8D8D8F93999CA09E988F888684868C919594918D8A86898D92999EA1A3A19D9B97939294989A9C9A988E898686878D959FA5AAA9A69C9690909296999A94908A86838184878B969EA7A5A19B948C89898D939BA3A5A19B918A878C949FA7ACAAA4978E8B8B8B95A0A8A8A59E968F8C949BA1A29B908F8E8B8C8D8C8A8987878685858587898A8B8C8C8C8D8C8D8D8C8B8A8C8D9095999EA0A1A19E9B9A9795908C8B8C8F959BA09F99938A8784878B8F9393918C8A88888A8E949AA0A3A4A29E989491909095999998948D8887878B929CA5ABABAAA39A918D8C8F949797938D88858383858C949EA5A6A5A099918B89899099A1A7A59E958F8A8A909BA4AAAAA59D90898689939DA6AAA7A19A918D8F979C9F978C909E7F8C91A1838B8C9D7982889B79848B9C808D92A1899296A5858D909F828D94A8909EA1AD959D9EA9898D8F9F82909AAB9299949C7984899E828C919F808A8C9D7D8991A58F9FA3AD959995A2808A91A28B9596A08187899E8497A2B3A5AAA8AE898A8C9E849397A3868D8A9A77838CA292A1A5B09A9D98A27C878DA594A3A7AF90928E9F8294A0B2A1A59EA37E868CA28EA1A9B39B9A94A0808F98A68C6C6A858572738F8E776F88856B6081806865868875779394848298957E748C89706C8C907F809A9A89889C977F768C8C797894957F7488826A688888726E8A88726F88866E6B8C8F82849C9881768A856E698C8E7E7D938C716784897883A3A89A959F937167868A787E9692786E838066658D948B8FA4A18C7E8D856B668C948A8FA29B7F6E8687757D9FA4928591886A648990878DA39E817087866E71908F7C858585838E90928E938F8D868A878580868687858F9297959EA09F989B9691888C8B8C8B93959796A09F9E979A96938E9392918C8D8884818A8B8D878B8B8A888D8B8A83898A8C8C96999990918C878187898D909998948B8B888988979FA8A9ACA4998989878A8B97999A929188857D878B9295A0A4A69F9C94887F858A9295A0A39F96938B8987969CA4A09F958E83888A8F939DA09C908C878380898E9280828288868A8D9493939395918F8E8E8887868A888B8E95979A9FA3A1A09B9A918D8A8E8A8A8E94949A9DA3A09F9C9C95918E908B888787878A8D938E8B8A8D8C8E8D8F8987868B8B90959A95918F8E8887889093989B9D948D8A8C8A909AA6AAAAA6A0928A878B8E949A9F9A958D8A83838892949BA2A8A59F989186848690949BA0A39C958E8E8B929BA4A39F99978D89888E92979A9C9289848684878C94767C817D7C828786878E92918F90918D88858782818589898992989A9D9FA099928E8C88848589878790989A9C9FA19D93908C86808284807E868D8D8A898A88868A8E8984838480818A92939090908C858486878B959C9A948F8B848189939AA3A6A59B8F888885868F999B98958F857C7E848689949DA4A19F988C817F848689959D9E9C96908A848C969BA09F9F978E8A8985868E94908A85847F7C838C8C7F83818182838487888D8E9093949495918D8A8B898A8789888D91979B9FA09E9B96918E8C8B89888A8D91979CA2A4A49D968D8A86858183848A8D9190908E90929492918D888382868B8E93959693918C8885888E969D9F9C978F8A86898D97A1A7A6A0979088898A92979D9E9B918B838382868B949DA4A5A3998E878480848A939CA0A09D95908C8E929CA2A6A4A19B938B878A8E91938F8A838382878C92828483828582838386878B8C8F8F93949491908F8F8C888685888A8E94989C9C9D999693918E8B8888898B90979EA3A5A39B938C8986838185868A8C90919496999A9A968F8A868386878B8F949494918E8886858C939B9FA09B928A88878A929CA3A6A29B918A898B8F959C9E9A938B85828283899199A2A7A29B9189858283878F979DA0A09A948F8C8F959FA4A6A5A0978D88888C8D91908D898585888E9385918189848D7C85828E7E8A88948792919C8C959299858A848D7E8989978D9898A09198969C898B848E808C8EA199A5A2A692958C917C85818C7D8A8D9B929EA0AA9B9D95958086828D808B8E998A9289917D86889890A0A0A48E8E868E808E94A69BA59B9D868B88948C9B9BA18D8F858B798485968FA2A4AA9596898D798282928C999DA696999197879398A79FA7A0A1888B8692858F9199858A869287958D8E8F898D898A83898587828A888E8C939399969A96948B8D8788828A898F8C969599989E9A978C8E88888690929C9EA5A0A097978D8A81878386838F929BA0A9A9A8A09E928E83898587858E8E938E8F8B8A828A8D969AA3A09B8E8D858887949AA3A1A29A958B8E8B94959E9B988D8C858580898E999EA7A4A2959288857D87888F929D9D9E999A918F8B969BA4A4A69D988A8D888D8E9695948B8D8C9292898C8D8D8C8B8887868584858688888B8D9094979897928E8B888683828585878B9093989D9D9A938F8A8584878D90979B9D9D9A96908A8482818283868E959DA5A7A7A39E958C8784828183878C8E908F8D888685888C959D9F9A938B8783868C949B9FA09D97918C8A8D939A9D98918A858180838D959EA4A5A19A938B84828083888D91999B9999918B898D939BA2A5A1978F8787898F9598968F8A8B8D90848984858C8A8784878784828A8988848A8E8E8F95958F8B8D8A848083817D7E84888B939C9F9B95948D847E8488888A9396969799958B8285817D7C84898D939EA19F9E9D968D8383817F7C85888A8D929089838686878B989B99928E88837E878D9399A1A099908D89888B969C98918C867E7A84899199A4A6A19C988E837D808083838E93949595908681878C959DA6A4998D8987858B989C988F8C89868777948C8A80978D897F968E8C849C918C859A9290889D938F84988E887A91858179948F9495AAA29F929E8F887C968C89859D9A9A96A4968C7D94868278958D908EA39D9C96A1978C7D93878279958F928F9F948C7E958B8E8CA6A09A8A998B867C98949999AAA09786998E8F8FA6A1998A978A837997959C9EAFA9A4959F8F8578908786829B9897909B8D867C9A9AA0A1B0A39783978F9194AAA39987988D8A7F828483858486868687898C8F8F90908F908D8B8B898A888A898A87848280808183878D969B9F9E99928C8987848686888B92989B99968F8A868582838286878C8F91929796948F8A85838283868A919696948D8784858890979B9B968F898583868B959C9F9E96908B8A8C959A9E9C958D878383879099A1A5A5A49E968E87847F8182888D9496948E89858689949DA4A6A0968E8889909BA1A39B918987857E81828383828485848486898C8E929494918F8C8985848586858687858281818282868A92979B9A958E8A878784858486888D94999897948F898887858383848586898E909193918E8885828283899196979691898585868C939A9C99928B87848589929A9C9C98908A878C93989FA09A908B8684858E97A0A3A3A19C96908A85828182858C9398978F898684868E99A1A29F978E8688909CA2A59E948A8584768399967C8599967B849A9A808BA1A18C95A39E7F8698977B859996798396947A859A9B8593A7A4898C9D9A80899B997E88A0A08C97A8A78E94A49D81889A967C849A98818FA1A1868C9C967A849B9F8B98A6A0828799988191A8AA9297A29B7F869D9F8F9DAAA6888B9C9C8899AEAE9598A19B7E89A1A494A0AEAA9095A19A7D8597957D8BA3A58D94A19A7D889FA3939FACA584889DA092A3B4B0928F9D967F8384868986848484827F828787868D92918D8989847F8182817E8083827F80858583888E8E8D8F8E8A8484898A88888A8785888D90909699999694928B848283837D83878B8D91958E868382828187909492908E868082868B919A9F99908A8886848C979B9A97948B84878E959CA2A39B8E88878789929A9B9795948E8B888A867E8083868B929A968F8A8684828B959795928B86838B98A1A5A29D9086817F84898A8D8D8C888784858383858588898A8A8988868481828081808180848387898C8C8E8E8E8E8D8886888A8F918F8E8B8987888B8F93999D9F9D98938D868482818184878E9194938D87838283848B9094918F898482848A91989D9B968E8989898B959C9D9B948E8A8689919AA0A09C938B86848A909496938E8B89898A8B88868282848A909698958E8884848B939496918C87868A94A0A8A59E938B837E85888D8F8F8D8D8A87848887858385858483898787848684828181817F7F84888B8F9293908E8D8A87878B90939496938F888885868890979DA0A39F9A928D888480828386899295958E8B84828085878D9194908C838483858D969B9A96908C86858C93999D9E97908988868C939EA09D938D8683868C91918C8A8685878C8E8D8A878484868E949996928B8581888D9495948E88858A929DA3A49E978D858985898D9790908C948B8B8B9589868490838484918787858F8685828D828284928D91949E94928F958A8A8D9A969999A1948D888F86878A9C9AA0A4AA9F9993968684828D858A919E98948D92848583908B91949B908A8890888C92A09A99939888878999999FA0A3948C85918A9198A69D978E9286878A97908D879086898D9C93908B9286888D9D9A9A9598878688979599979B8B88879999A1A4A79A9087808485888B8D8D8A8A8A8C8C8F8A88838281818083848584848586828281818185888E91969795918F898A8A9094979998959087868484858C949C9EA19E9B948F88847F8183888E9496968E8B85828183888F9294918E878686898E969A9A94908886868B949DA09E958F8785868B939A9C998F888485878C8D8C848484888E9598968E8886878C94989B96908784858D939998968D89878A939B9D9E978F848081848A8A87878989888C91918D8A8985827F838280818685848589868382858383879093959695918B888C8C8E92999694908E87838387898D939B9C9A989790888484827F848D929494968D86838382848B949796928E8A85878F94999A9A928B868989909BA2A0988F8A83828892969996948C85858C8D8C8B8985828891999C9A958C86868F94999D9B9088848A8C93999E988F8787888E959E9C958F888B878A758F8989738F898F7E97908F798E86866F8984846F8C8789778E8888708C858978969598879A8F8D76928D90829A959481938B8A748E8B91839B979885978D8A718A84877696959A89958A88718B888D839D9B9A84958A8A7B999BA08F9C918C7290909B93A79D967B8D87897B99989A84938A8B7B979392778D878B81A0A0A089978C8B7C9A9CA28E998C897693959E91A0928C738E8D958CA1989173888C848488888183878A83898F8E898A8A8A808286857D81848681858A8B838487877F858A8D8B91949188888A8B858991949092939187858889848A8F908A8F8F8D828184857F8590959395958E83828588848F999C9896928C84869399999A98918585898F939DA3A0928B88888289919592918D8B858D96988E8B8888848E9AA19D9A948F858A969C9B9B958E81868E96989D9B938482878B8B959B988B8385888986868382838282848486858685888585848482807F8080818485868583828080828385888B8E8D8C8987858484888B8E92928E89868382828485868685888685817F7F8082898E9595948C86838180858B95989895908885858C939898948D87838388909AA09D948C868283868B9091908B86888D9596928A8583848B959C9F9B948B888991989D97928883848E969D9D998E868080838A9297938E828686867E8C87827786827D7285817E778885837C8A858173837F7D738682817887817E71858182798D8B8B7D8C85807386868885938D877B86817E7183827D7587828071827E7C71888C908E988E87778581817D9496968D928781778D90948E958C847585858A8BA09D938188837E778E9090848C85848197978F808782807C969B9C93978C847A9196968F9387827991989C969C8E84718381858799928A7681838C8C8D888A8884818481807D83838283898D8D888A86828082828080858685838684817F8486888A8E8F8C868685818187898B898A88847E82807D7D8182807F83837F7C82828387919699908E89827F858A9094999790878586878F9798968D8A8681828B939C9B9890868184888E9296928B85888F9695948D8480848B949AA09D948A87888D929898908784898E98A2A19D8E8883807F899097918E85818687878B8B8A8A8B8886848382817F8285888C8E8F8B898783808080818283878889878683828385888A8D8C8B868483848486878889898987828080807E80818180808283808283888C919797908B878482888F969896918985848990969996938C84838388919A9E9A918A8583878E9698948D89888C9596938D87838389939DA09D958D87868D9497958F8884868E98A0A39F968B838184898F95938D82808385868788888C8C8B8A8A858382838183868B8B8C8C8C888683817E81808485898A8B888684838185898D8D8C89878483808485888B8E8D8A868280807E7F7F81808383858283828589919496938E888382888E95999B928A8585868E969B9A958C888482868F989D9B978B8683888E9698988F88878C9294938F8784838A929BA09F938C85878A9095968D8684878C959DA4A0988E878184889293928A827F83829581828499898E8F9E898682967F8083988588889A868784957E7C7E958185899C878785978081849A8A8B899982807E9481858B9F8F8D87967F7F7D927D7D8095838684978182859C8F95919E878381978A9397A7918B8696858C93A899978F9A8381849D939C9AA58A8584988B9296A38C8685998B92909E868283988E979BA992898496868C8F9F88858295869099AD9F998F998182899F918F8892897E8483867A84868D88919295888A87877A8282887E86898D848886877A8080857C868A90858987877B84858B838A89887D818287818E94988E8F88877A7F7D837881858C838987857C858B959297938E7D84868D8D989A988887848784949AA196958C897C858C9A989D98917E83858D8C9795927F85868F8B93908D7C82868F919A9B988686848A838C8F8E7F82828987979EA4979189887E8A91968D8B83888886817F818280868B90909394908B8683837F7F818385878A8B878583837E808285878C8E8D898583828182868A878784838183878C919695938A8681807E7E818184898B8C8784838488909899948E8885858A929999958F8982838791999F9C978C87838789949D9F988E878484888F938F8B858481888F94908B85828489919897928C858182878A8888858481838A959DA19D958984858A8F94948F8387898C827E7F857F7E848E8C8E91968E878487807D7D868182868D88848489807F7F8884868B918A8481857F7D828B868384898180838E8D9194978C8581837D7C7E8786898D9288828088888D959C958E888984858D9996928C8B817F8492959A9C9B8D8482898A939CA3998D888984858B958E86838682848D989189858881848D99958F8988807E808B858584877F8088979A9E9B988981828D8C91949585918A87868E8281828C828488948E8E8F968985828B807F818B848689948A87848C818284918A8B8B90817F7E8A818487928988858D84878B9A95948F92847E7E89808288978F8D8A8E82838798949795998B8584908B91959A8D86838C838A92A29C958E9185868E9E9E9F9B99898486938E918E918382828F8E929498888383918D93959A8B847F8A828386908782828D8A929CA79C938A8D83868D9C96918A83878987888786848381828385888B8B8B8A8984827F807F818286888C8E8D8885818083838687868382817E7E808385898A8B87848384888E9495918B85817E808083888F91918A868285888C939695918B878285888E92928E88838281878F9799978E8884868B969CA09B938A86868B90918E89838181868C949490898582868C9493908A85807F80848585858381838893999D9A93888481868B9296938B7D8480768C8D85778582776B81837D768A8C82748583796C808179768D928B7C8985796A7F817A6E8180776A7F7F7970868B8274858379728A918B7F8C87786A7E807A778F948C7C86847B738B928D848F8C7D70838784819290816F80817C7A92978D7B87857C76929A9588918B7F748E938D7F8883786D838B8A83918C7D6E848D8C87938C7E6E80817B7387867A6D818988899B9B8D7883817C7890958E7C7E7D8A8D8F8E94908B808884827D88878788908E8A848A84817D898B8F8F97938D838A85827C8684827A8582807A858486858F8C867F8987888993928C828883817D888C919299928A8189898B8D999792878C8684829195938E9188827E8B8E9091988F88808A8B90919D9A92878D8D8F929A948B8187838586939591888C878889989A978D8E86827D8A8988838884828392999C97978D857F8A8C91929A91787F82868790928F8A8884827E818182848B8C8E8C8A86837D808184889092918C8985837E7F7E7F7C80807F7B7E7F80808688878384828280888D8C878683817D8284898C9495928988858587919697908D86847F868D9394948D877F8384898D94928E858484878A9397988E8A868A8F989A958A86818180878D8E8C8A8583838E969B98938B847F82848A898885827F858C959A9B948C8284848A8F969791797E8382878C8F8D8C8B8B838280827F84888E90918F8D82807F8281868B8F8E8F8C89828180837D8080847F8280827F81838885848384808384898889868581828285868B91978F8B85858389909998958D8A8284868F9298969388848186888F94968E8A8586858D959A96918A8A8991999E968F86847D808389878A878682878E9A9B9C958D8481828A8A8B89877F81848D949B9C998B8680848790979C9074727E717F7B887D8A858D7B80767D717C7C8B82908A8E7880757E727E7C8B7F8B868C787C777C6F7B77837681767F727B788578827A81727D788477827D87757F78807684849181867B817483869890948889757E7B8A869490947D8078827B8C8D9886887E85798B8F9C8D8E81877D8E929F908F7E81717B79877C857E847482869991998D8D787E7A887E887F84717C7A8D8A999597818278827A89919C867B7F7F7F808284878A8E8F8C878381808083888F9196918B848180808081878A8F918E8B84817F7F7D8284878785838180818486868784817F818284848687868484828383888A8A87848384858E959C9A948D858383878E9395918B848283888E9497958F8988878F989C9A938C888990999E9B938A83807F83888C8B898585868E969A98938B85828488888785837F7E848C959B9B958D8683848C929A9D947F7E7F7F807F8185878C8E8D87837F818082868E9398949088837E807F81848B9192918E88837F7F808185888A8783818080828889878583817F80838484878A878481838386878985828082848B919B9B968C898383858F91918E8B858281878E949999928C888B91989C9A938B86898E979C9C928A83808084898F908C8384848B9297969087848084868885827F8180848B969A9B938C8483858E979F9F96828479887F80788B838A8492888678887F817B919199909A8C87788A7E817B9090968D97898478887F837C8E89887A8A7F807A8D878A7E8B7F81778981877F9088867B8A82857C8D8383788A838B8A9F9A98868F82827C8E8B91879284837A8C8B94919E938D7F928F98939F938C7F8F8B94919E928B7C8A80858297908F7E8D82898699928D7F8A81847B8B838176888085849A98988891848581989BA29A9E888A818083827D7D848887898A897F7E8084818692999795918C817E80848086919995918D897E7C828481868989807D80847E82878B848284847C7D838885898A887F808387838485847D7F858C8C979B998D85848481858B908D8A878680838C969697938F85868E969699948E84848A939395928D807D83898A9194918480848A898F908C84808287818383847B7C8187899298978A8584878A93A0A8A399868A88867F817E807C848389858784817B7E8287899597978E8984817B7F80878B9798968C8984817A828489848581817B808084828686837D7F7F817E87888D888582837F868888818280827E899198989790897F8283898B93929085858286889397998D8A8587869197988F8B8384828D93958D8B84837D868B928F8F86837F868C908D8C85837D83848680817F807C868C9494958C8880858D99A0A9A79E878B868783847D7E808280868888828180817F85898F9193948D828280817E868D96989B938D8381808381878887818081827E838387848482817C818488898E8D8980828389888987847F8183898E979A998D888483828A91969391898680848A9394938E898285888F9397918D838485908F95918C818283888A90928E848281888A91918D83828185838685837D8082898D9597968B8684878B98A3ABA89F7F89858783857D807C817E84858983837F817C80828B898D8A8982817C827C8389959A9C959184827E837F86858880817D817D80838882847F827C80818B8B908C8A7F83838A8B8E87887F81808A8D9694968C88828481898F98949187857F858993929189888084858F9296908D8285828C9096918D81818088898F8D8D84827F888B928E8F83837F86848884837B80818C8F9797958C8882878897A1ABA89F7E828384848383807F7D80848788888481817F7F828485858885837E7F80808489919A9D989188828180838587878783818081838688898482808180838990928F89868383888E908E88848182878D9394928E868382868A9297958E888382868A9193908B848281888D9595928B8784858B9396948A858282868A8D8C88847F83888F94948F88838385898987828181848B94989A96908986878C95A3AAABA17B7F8181828482817E7F7F83868B8B8783817E817F8183838584838180808081868F979A97908881808081848689888481818183878A8B8782817F80838A9092908A868383878E908E89858281878C8F92918C858183848A8F96948E868383878B92938F8A848383888E9696918A8684858D9597928B858283868A8C8A88848082878E9494918A8585888C8B87848180848A94989B97928A85858A94A0A9AAA37A7E80838283868680828387878B8E8D858281817E8083868685858580808284848D949A958E8785807F83858789898781818388898D8D8B84818185838A9195918B868583868C918D8A868681858A8F8E8D8B898281858C9093948E868284888D9295938886838688909799928B8687868C959A938B878683878B8D8A87848482868F9696928C8986898E918A868385858B959B9C99938F85858B959EA7AAA5817F8381868486868B8586858C8F908C8C848381868387888E8B878385808280898C9393958D8883868184848B8B8986878185858E8E908C8C8484838A8D9191948D898588888C8C8F8A888287868A8C918F8C868983898B9495938B8B848687929696908E8686848E939998968E89868C909596958C87848B8A8E8D90888581888991979A948F878D909594938986828B8D979CA2A0988E8B868B91A0A8ABA5787D7D7E80808384878686878A8B8B88847F807D7F81858A8B8A8781807C7E7E83868C8E8B88837F7E7E7F8183838381807F8082878B8D8B8682818184868C8F8E8983838182858787828080818485898B8A86848182848A90928F88848081848A8F928F89838183898F9699938A8484858990928E87838285888B8C8A84818082868C92938E898489909695918984818589969DA29F988F8784868E9AA5A9A4797C80727E7F847D88888C848E8E8E7D837E8173808289828D8B88787F7E807481848B818A8584767D7D8177838383757F7D8277888B8F828781827782868C848C8783777F82857C848182767F8288818A89877A81808683929293838481837A888F938687838377888F9790938A867983868E868A85847985878D858A84837681858E89908C887C898F9993958C8779848C989AA5A39D888883878499A3A99F72797F7E777B838480858F908D8D8F877C7C807E7981898B87858782797B807F7A7F8A89837F837E787B81817B7D827F787B82848187908B818082807C808C8A84818380797C84837D7E82807A7F898A848488837B7F868A8C8F948B7F7E83838187918C807E8380808996968C8685827C808A89817F83827E848F8D858282817B828E8F87848784828D9B9B928988837F8A9BA4A6A3A0928280878C94A0AAA37A7E7F7E7E7F818385878C9194949189827F7E7C7F838689898685807F7E7E7F808587878684827F7E7E80808381827F7F7D8082878C8F8C8782818082868A8A898583808080818180807F7F808388898A8885818082858A9193928C84818283878A8C8985808081848991928E888482818486868382808183888D8E8A85828182888E8F8B85848389929899958D888487909CA7ABA9A1948984878B98A2A7A27D807C847F7C7F848385899395958F8C827F7D828082878D898682867F7F7E838284858C868380847E7F808585848285807E7F87888D8E8F8782818685898C8F8A82808480818186827F7E848183878D8C8985878181818C8E908D8C85828087878B8B8D85807F85868B8B938D878385828284888580808485898C9189838084868A8E928B8582888B92979D948B8688888F9CAAADABA2988D85859098A2A5A46C9D9889679C988A6D9F9D9888A9A4926E9D97896C9FA09478A09A8B6B9B978B6F9D9D90759D9989699B988C759C9A8A6C9B988C73A4A397789F9B8D75A3A395789E998A6C9B9A8C6F9C978A6E9D9E967FA29C8C6D9C9A8F7AA19F8F709D998D77A2A191739D988B729FA1947A9F9A8C729E9C8D729B978A709FA194769E9A8D75A3A497779F9A8E7BA9AC9F83A29C8D74A6AFAFA5BAB39F7AA09C9889B3B4A770777F7E6C737D7E6E77878F858E8F8871757D7F6E7D8A8D7C7F85826C747D80717C8888737981806D768083727982806E747E8173818D8D777B848477838E8D777880816F788585717781806D7B8A8E7E82868270768284757E86846F7683867B878E8971767F81737F8B8A757B8284727E878671767E81717D8989757781847986918F787A82887D8E9998807E848376889CA9A2A4A194797A898F8B9CA49D8483817E7E7D7D7D7E82858C92928E87817D7D7D80858A90908C88817E7D7F7F83868A888783807E7E7D7F808383827F7F7D7F7F83878B8C89858283868A8C8A8582807F818386878481817E81848A8D8C8983807F7F808384838381808083888F9490898285878185898B898682828384878885827E7E7E81858785838281858A8E908D8784848991999B979186838187919EAAAEA99F91898588919CA1A39A85858A847E7984817E7B8B8C8F8E928A807C87827F819293918D90877E7B87848387918D868087837D7B8783817E88837E7B87827F838E8B858189858487908B837F888381828D8A857E888381838F8E8A858A84807B8785838189837F7D8C8F9293968D817E88858689928C847E888583848F89807D868481818D88837F89898A8C958D85808A8D939AA09B8F838A878992A6AEADA5A09285828E949CA2A59A868987837A7D7F7D777D8486888C8A867D7E7F7E7C838B9191908B84797D7F7F80898B8B8484817F797E7F7F7C80807F797D7E807C8285878182828280888A887F8081817F868889808381817F87898A858583837C818284838584817C81878E9498928B80808084868E908A8081828380878A877F7F8083808887857F838486868C8C887E82858C939C9E998D8785858998A5ADABA4978B81848A939AA4A298898B85827E7D7D7E7E80818386898584807E7C7D7F83878E938F88827F7F7E7F838788888582807F7E7D7D7D8080807F7E7F7C7E8081818282818082848888858281818285888A8784828183868B8E8C88848181828182858686848282838A92989A938A848282868C918D89848180838488888583818085878A878483828388898A87848382858C969E9E99918984868F9CA6AEACA2958A858587929DA4A2978889879F807E7E9D7F7F819E8584859F807D7D9D7E8288A68E8B869F7F7D7D9E828485A08480809E7D7B7F9D7F807F9E7E7D7D9E7D7D809F807E81A1858887A2817F80A0858688A3848082A1898E90A88783819E818185A18988849F82858DAD9B9792A5848183A38E908FA4848081A0848486A0818083A28A8B8AA3838386A28A8886A0828084A8979D9EAF8E8787A7949FA9BFAA9F92A4848389AB9DA3A3AD87898581837F7F7C8482848386868480837F7F7D8184888A8C8A8580807F7F7D8385858284817F7D818081808283837F8380807E8280817F83808282898A87838382818187888884858383888F93948F8A84827F828487878C8A8682868791979D9891868584868991948F888683818286878582848285868B8B8A8488878B8A8C8A86818384878D989F9E959089898E9CA6AEADAA9F938787878C95A0A6A498818481807E7F7D7F7F828386858583817E7F7D7E7E828389868580807D7D7D7E7F828282807E7D7E7C7F7E8181817F807F7F7D7E7E7F7E807F81808386888583807F7F8282858484828282898F95948F87827E807F8183888787838382898F9799968C86828381888C908C8783818083838582817F8182878787858584898B8D8B8983838183888E979B9A948B8789919DA8ADADA59A8D8783868E99A1A6A2977E83837F7E7E7E7F80828487898682807E7D7E7D7F81848484817F7D7D7E7E7E808183807E7E7D7D7E7E81808282817D7E7E807F80807F7E7F7F8284888A8683817F7E7F828585828081848A9196968E8782807D7E818585858482818388919899928A83808284878C8E8C878280818385848481808284868686838285888E8D8C87847F7F848A92999B9A908A868A94A0AAAEABA2978B848389929DA6A7A29580857B6D8182786D8488837F908D80718383786C82857B718484786B8083776E85887C718383776C82847C7487887A6F8183796F85857A6D83857C788E8F81738584786E86877D7285857F7C969B8F808A867A6D83857C7488867A70878E8C8B9893827184857E798E91837585867C73898B817486887F7789887D738B8F89828E8A7C6E868A8889A0A091808C8B8588A5AEA99FA2978374888E9095A9AA9C877581807E78807F7F79888E918C8F8782757D7D7E7782828278817F7D737F7E807B87848379807E7E7783848680848180778081827A83808077838689878C8782758081817B8583817883868C8E98968B7F82817F788382837B837F827C8C91958D8E867F78828386848B87847A828386848C8B88818788867E848284818D908E858583817C8A929B9C9E958B80878C969FABAAA4959188837E8D98A2A5A89F917C7E807E7E7E808085899194928B8781807C7E7D81818382837E7F7C7E7D7F7F84848581807F7F7F818187888884827F7F7E8081827E807D808085888C87847F817E8182818283818181878B9294938C867F808081818180827E8081878B939492898580817D828387868582807E84868B8D8F8D8D8A8986848084858A8E918C89838280858A969EA19B948986838A93A1A7A79E968B8582868D98A3A9A79E907D7E6979807E6C7B868B828E918B717B807D697B83857681857F6A797E7E6A7B8483737E827F6B7B8284768588836C7B807E6B7C817F6A7B807F708389856F7B7F7F6D7D85826F7B8180738591927F84847F6E7E8384717B817F6A7C868C828E9088707C7F7E6F7E8685717C807F70838D918690908D7781848172838E92828888816B7B868E8A9BA09980838483778E9FA495969088707D878E8BA1A9A7918C906B6E7A956C6F7F997D838E9F76737B956B6F7F9A7B7F8899706F7A946C707D9675757F976C6F7C96747A889A70707B946E717E956D6E79956E73829871727B946D72829974737E977076879C7F7C84976F72809976767D946D6F7D997B848C9E74717B936C6F809572727C956D72849B838A95A27E7A829671788AA2868387986E717F9C838F9DAA877E829872798FAB9897959E7373809B8091A4B49A918B76807F7C79828181838D8E8C8488817A7A807F848791918C8584807E7B827E807F8886827D837F7E7E87898882847F7E7B83817D7C827E7D7C8382837F84807E7B848485848783807E8787898A8F89837E848387878B86827D828081848E8F8D8686817E7A8282838286827E7B82818888949696919187827E858A90959A938A7F83818389989E9F98958A827E8789949CA5A1968887828184939DA5A5A79A8C777C7D837B7C828886898B8E83807F837C7C818B8B919291847F80847C7E8186838383867E7C7F858183888B817F7F847D7F80857C7D7F837E7F8288817F7F847E7F838C84818286818489908B8886897F8185908C8A88887E7F828A888B8F90868180847C7E838A868383857D7E828A8A9095978E88858780848C989896918D827F828D8E98A0A2978D868880838C9DA2A4A09787818088858E9DA8A7A1998B7B7A7B767F7D817B8987887D827C7D757E7C807E8E8E8E81847B7C75807C807B83818076817C7B778381827B817A7D75807E7E767E7B7A757F7E817A817C7D76807D807C857F7F79828389878D86847881818786908A867B817D807F8A8C8D8385807F76817E847F868281767F7B7E7E898D91898B84807782848D8F97928C7D827D8283949B9F979588827982859096A4A29D8A887F7E78878F9C9FA69F9380747D7C7E7A818288868B88857C7F7C7F7980828B8A908C887B7F7E7D7980828680837F81787F80817B8281817B7E7E817C827F7F777E7D7F7B8181827A7F7E817A8281827C807D827F898E91898884837C868C918C8D85827A818288878D8D887F827F817D84878982838080797E8187868F8F8C838480817D888F96918F88847B82858E959E9F9B8C8882837D8B94A1A2A49A918181808485939CA5A29E91867A7E7E7D828385898E8B87828181807F8183868A918F8C8382807E7C808385858784807D808080818384827F807F807F83837F7F7F7F7E7E8184838180807F7E8182818081818081878C91919089858084868B90908A8480808183858B8B8A858381818285898A898884817D818284898F908D878582807F848A9092928D86808183898F9A9E9C948D868280878E98A1A6A2998C87817F838D97A1A5A49B90827A7D7A7B808381878D89817F7F80787D8386878C91908680807E797B8183848386827C7C7F7F7E8085827D7C7F7F7B7C83807C7A7F7D7B7C81807E7D7F7F7A7D83827D7D807F7B80898E8F8D8D87817F83888A8B8D877E7C807F7E7F8687827F82807D80898D8A8785817B7B8081828991928B83837F7D80888C8E8E8F887E7C828487909A9B978C89837D7E868E959DA39E938984827D83909BA1A4A398897E81837B828A8B858D8F8D7F8387877E858D908D959996858488857982898A84888B887B8084867D878D8A7E8287847D8287877B8086857C8288877D8186867C828A8A7E8287867E8993989090908A80848C8F898D8F8A7D8187867D858C877F8389887E8791948D8E8D897C81898A86939B998B8A89877E8791948F93938D7F80878A8A979F9D8F8F8B877C848D92939EA39E8D8988867F8999A4A5A9A79B87837A7F8083868B8B8A89848280808182868C929697948D8782817E7F818484858583817E7E7E7F8183868481807F7F7F7D817E7E7D7F7E808280817F7E7F808281848481808082838A9194918D8983818387898A8984817F7E7E7F818283818080808181868C90918C8883808082868B9397948E87838183878F9393918A847F7F81878F9496938D8884807E81878B939898938B858180828A96A2A8A8A09588807B7F7E7E8A8D8A8586837E788082818492979894938B827A817F7E7D8485827C81807B777E7F7D7C83827D777E7F7C777E7F7A777D807E7B82817D7881817F7C85847F798082848692938D8484827E7C85898780837E7B767E7F7E7B81817B787F807D7E8A8E8B8686827C7883898D9197938A7F81827F838E9391898A837C7983898E919590867D82807C7C878B8F8E918D837A808280869AA5A8A59F93857985837F86989488858D8479798985828A9E9D9693998B7C7B8A837D808E897D7C8982797888827B7D8B847978878278798881787A89847C7E8C857A7B8C88818290857C7B89858087999387828B827B80908C807F8981787889857C7D8B82777888817C7F918D85848C837A7C8E8E8D949E94837E8A847E8698968D898E85797B8C8C8B929B907F7C89837B8095948E8F978B7E7B8A837E8CA6AAA8A6A79480787C83878F94948E87847F7E7F80848A93989897938D8581818081838887848182807F7D81807F8082817F7E7F7F7F7F827F7E7D838282818382817F8385898A8C898380828182858A8C8B87858381808485868383807E7E7F80818283817F7D807F7E7F858789868682817F83868D9298948E87828284868E9193908C857F7E82858B9296938B84838182858C949698968C88828181828995A3ACADAA9F9187807D838B9097928C84827D7D7C83848C919792908987817E7E8280828185807F7C807C7C7D83808180817D7D7D7F7E7E7E817D7F7F8682817E817E7F8187898C898781807D8281848488848180817D7F808581807D817D7D7C8281837F817D7B7C7F7E7F81878684807F7E7F80878B9193938884808383888D94908E85847D7D7E868B91929289837E8382878E999B9A948F85827F82838B97A7ADADA89D8F857D7C8A97819394936C7F858A67838B977F9191926E81878B697E848B6B808688637D858B6881898D6C7F8689647C848A657D878D6E84898C687C858B6B868F967284878B667E878D7081878A687E858A6B7F858B687E868A697F868B6B7F8489647D848C6F868A8E687D868A6A868E997F8D8E8F68808B95809395966E7F84876884909C82908D8E697F8A937F9B9FA5868E8C8D687E8C988BA5AFB4999B9390658A968A959A998084888D79838F978993989780848A8F7A838C8E7980888E7880878E7B858F9480868B8E777E888C7980898F7E878F917A80878E7C87919784888D8F7A838C917E868C8E7A80898E7A828A8E7980898E7B848D8F7D83898C7880888F7C8891937D83878D7B859298899194937D818D968A979E9C8486898C7A84929B8F9798967D828B918594A4AA9A9997947B828B948A9FB1B7AAA8A29A7E80838A90928F888483807F81868B8D91918F89828381818485848281807E7D7D7F818185898B8A8785827F7E7F7D7D7F80818386878682807F7F8183898B8B8885827F80818283858582807E818181838382807F808082858687848280807E80808184868887848182808081868A8C8F8E8A858285898E969998908881817D82888F9498958F87828081848C969FA3A1998F858280838892A1ABB0ADA5998C847F83898A878985817B808082848E90908B8C87827E8385848487827E7B7E7F7E7B838588898D8D867F827F7C797F7E7D7B8283848183807D7B828687898F8B857F8280807D8685837E81817E7C8385837F83807E7B828485868B87817D807F807E868786848781807C818182838D908C88878582838E969A989890847C8080838795999A938F86807C82878D94A0A39E948E84807C848A939FACAFA99F968A827B7A8186867E7C807F787D858A898E908C828083847F83898B827F807F77797F837F848E8E8886858077797E7E77797F81797E81807A7A7E807C848D90898686817A7C82837E8082827B7B81827E8287857B7B7F7F7A808B8E88848480787B828584888A867E7D80807A7D868A888B8D8A7E80898E9099A09E91878581797C878F93999C95868181827D84919A9DA09E95867F81817F8899A4A9ABA89C8A8283817F8385808080807F8082888C8F908E88858485888A8C8E8B8883837E7F808383898D908E8A8684817F7F7F7E80818381818081807E7F8181878B90908E8985818282868686838580817F838387898984817F808082878D8F8F8984828082878B8F918D868381818182868B8F908E8C8785878E959EA4A29D938A848081838B939CA19C928A858382878E979EA4A39C928A84828287919EA8AEACA4988E8683837C8081807F7E7E7F8082878A8B8B88868483878A8E8F8D8A8682817F7F8082868B8F908C888280807F7F7F8080818382817F7E7E7F7E8182878B8F8D8A85828181838689888583817F8182858789868380807E8184878D8F8E8884838483888D92908C8681828182858B9294938E8885868B939CA4A5A2999087828083868E969FA19A90878483868B939BA2A39E978E878282858B95A3ABAEA99F928A8484859B7D777F9D7B77809E7D7D87A4827C84A080808BA78A8487A07C757F9E7B7A87A78B8588A47C777F9D7C7882A2817D849E7C747F9E7A7783A388858BA27E7982A182838CA58279809F7E7E89A6867F839E7A7782A285848DA5807982A0818591AC8C82859F7B7C87A78E9097AD887F85A38A91A2BBA29894A6807983A2878D9EB79C908EA3807D8AAB969CA3B697898AA17E7B88AA98A2ADBFA2948FA3807C897482817E778482817B8885827D8784807C88898B878D89837A83827F79858687848F8B847B84827F798585857E8B85827A84817D77838283808D8B877D868482808F8E8B838984817B888989868E8783788583837F8E8E887F8885847F8E8E90898E88827B86898B8D9C9C988E8F888581919BA1A0A59A8F8188848584969DA19D9F968A7D8A8A8F93A2A6A298988F857C86858A8FA4ABACA3A4978D7F898A8D7A7E7E7F8081808384828181807F7F828385878A8A8782807F7D7E7F7F81828587858484807E7E7F8082858A89878481817E7E7F818281858786858483828185888C8D8A8684808283868B8F8C888482818183878A8C8988858281848A8B8E8F8B86828282858A929A9D9E989089838589909AA3A29A918A8582848B9299A0A3A0988D8883858C969EA5A5A1978D86838281838E99A4AAAAA59A908B86868B93797D7C8A8182828E85857F8A7F807D8B8388889086837E8A7E7E7C888183808B83827E8A7F817C8B848989948986808A7E7E7C8B8185828E85847E8C808282908A8D899284837D8A848A8C978C89808C818486948E8E878E8182818F8B8D8A9285847E8A81888FA09EA29D9F8E87828E89949BA79D95888F81818296979FA1A79991888E848990A3A4A8A4A39289818B7F8385979BA7A9AC9D93899083898E9F6C647F81786F86877A6D7F8071647F837C73898979697C7D6F617E81766A808271657E7F71697F8379768B8C7D6D807F716B7E847A728685776B7E82746D888B84798A8674667F8278728C8F7F6E828378728C9183778584756A84898076878676647D817976949F9A919D96816F828583809B9E8E7A86837469848F8E8CA09C89768484787795A19F98A098826E807F746C88949796A7A18D7885837875959D7C82828689888888878480807F8181868B8E8C8784827E7D808081838686838180807E7F80818287898D8C898784807F808283888B8B88848381808085888E90939089858382818387898B8B898784868A8F9194918C86838386878A8D8A858382817F8389909AA2A6A39C958E89858990989C9A938C83828183888F989D9A968D87828488929CA6ABA79F938B84818183888F99A4A8A69D938A838389919A9F7B84878E8B8C8A8A838380838083858C8C8B898A827F7F817F82848A878683857E7F7F818080838B898A898A828081838184888F8D8D86877F808083848B8F97928C8887828382888688888C8786868C8E9294978E88848584898B8F89878386808081898B979FA8A5A29B988D88888F909699998E8882828084889495979593878381888A959FACAAA49A9386838187868D95A3A4A8A29D8E87838889949CA5717A96858181947B75768C78767B94827F81937B73748D7675799180797C907871718B7573758F7E7A7E917A73758C79787F99878281927973758C7A79819B8B8480937B7679917D797F927D7A7C9486878D9E89807D907B7A8198837B7B8F77737690808695ADA19C99A48D83829788888D9E857D798D78747B9588868A9A8175778F7D8492ACA29E98A08478788F7F818DA59E9D9EA78B7F7B907D818DA89D83898A898E8A868185828080868889898B88837F83828082878988878A87828083827F7D8484838389868380848381838D919291918B857F848483838B8D8E8C8F89848389888786898685838888898F9798948D8C8783848D8F8E8A8A86827E8485888D9BA3A6A7A8A09993939193959A978F8988838080858A8C8F959289848584848897A1A6A7A59C8F888787878C99A0A5A7A9A2988E8C868487949CA4A480848786858481817F808081848686858682808080808283878887868583807E7F7E7E7F808181838582817F818083888D92928E8C8581818183838788888A8788858485868786868583838383868A909594908A868281848A8D8D8A84817F7F828387929CA3A8A7A29B94919293979A99938C8683808081868A8F92928C86828180858D98A1A6A49E938984838589929DA3A8A6A199908A8583858C95A2A8A77E818284817E7F7F7F7E7F8183838583817D7E7E7F7F85888A888784817D7E7F7D7D7D807F7E8081807F7E7F8180868B8F92908B8681817F81828788878584858481838687868483817F808183838A9192918B87838083858A8C8A88827F7F7F81828A959DA3A6A39D96919193989C9E998F8983817D8185898F9494908783807F8087919BA3A6A0988B858283848C98A2A8A8A39A908985838288909CA6ACAB798282827E8080817B838485818684837D80807F7B84868A8A8D88847D807F7F7C8281837E8381807B80807F7B83868C8E908D897F82808280888A89838583847F86878A868885847E81828280898C908D908A867F848489898E8B88808280807D878E979AA2A19F96949193949FA1A0959086827C84868B8F9899978C89827F7C878E999FA7A49D8F898382848A929EA3AAA79F918E878580898E98A1AEB2AF7C807F8180807F8283868687858381807F7E7E7F8082848A8A8985837E7F7D7F8183848583827F7F807F7F807F83868C8C8B858682818183868A8989858281828386898B88858281818281828587898D8C8B86858284868B8C8C888481807D8081868C94999B9B99949191959B9F9F9C928A838382848991989C9A968E8781828388929FA5A8A1988F858182858B95A2AAAAA4998E878485878E96A1ABB3B6B37C7F83888181868D86898D8E858284877E7D83878181878D86858589807F838983868C8E868285877F7F82878182888F8886878A8282878D8A8B8E8F8481858A84878E92898487898180858B85878D908886888B85878F938E8D8B8A817F828782858C9694959799908F979D9D9D9E9C8E86878A8488929C9E9F9D998B84868B878F9DA8A5A49F998B84868B87909EAAABA9A59D8D86888E8C95A3AEB3B8BAB97E8283858485888B8D8F8E8B8783828583828384838386868684848482828387898D8E8D898384858281838584838789878485858384878A8B8B8B8984848487888B8D8E8B8686858485878A8A8A8B8A878686888A8D9192928C89868281828485868B8E919092939395999D9E9C98928A8586868790979FA4A09992898484898D95A0A5A7A09891898585878F98A4ADAFAAA2968C898A8F96A0ACB4BCBDBEB9807F7F818684868A918E8B8686817F80827F808284808081847F7E80827F808389898C8687807F7F83807F818581818284808081848383878B858384858281848A8A8A8A8A8381828785858889868584868183888E8E90908F878383827F7E818381828789898B9095989A9B99928D89888181858C9299A0A29B938B8782828892989EA19F978E8886838289949EA8AEADA59A8F8C888A919EA8B3BABFBFBEBB7C80818184888A8C8D8C888382827F7F8082818182827F807F7F7F7E7F8181838487868482817E7E7E817F80828281807F808080818284858583818080828786898A8985838382838589888988868380818383898E9391908A86827F7F7F7F808082818283878990969B9B96918D8782818283888E979EA19E978C878483858A92979F9E989089838281848B98A4ACB0ABA2958C898A8E99A7B2BABFC1C2C0BD7F838A898A8D92908D8B8E898383888683858A87848289848180868482808A8885858B878181868582828A87848388848182878684868B888483888582848C8D8C8C8E8A85838C8A8C8E928F8885888683858E919396988F888687878282888583838986848790959A9D9F968E898C8684848E90949DA5A29B938F8885858F9498A0A49F948C8D8784859097A0ADB6B4ACA29A908C8F9CA7B0BBC4C6C5C7C6C27B838588888A8B89868584827F828384838586838080807F7D7E807F7F8183828181827F7E80818482808381808080807F828483828283828080817F8083888A89898683808387898C908F8A8583828A81858A8F91918F8884838280808284808181828180858B939799968D848483828083898F969C9E9A9289858381868D959BA09F988E88848080878F99A5AFB3B1AAA0958E8E95A0ABB6C0C4C6C6C6C7C38286898A8A8A888682848381848585878785868281807F7E7F81818183848280818180818181828181828180808080818385878786858281807F80818A8788898B8783838384888E9493908C8782818283888E91928E898583818181838585838281808282878A929795918B8483818183878E939A9D9B958E868583868B929AA0A19E968C858384868B95A1ACB4B6B2ABA29994979FAAB4BEC4C7C8C8CAC8C7868B80948888799081827790858A80968A86788F7E7F768C7F8378918686788E8181778F8283798F8382768D80817790868A82968886778E8081778F84887F948684788F84867F98939386958483778F858B879B908B7A918384799187877C908381778E8387839B939182928382778E868C8BA19A9A8D9888847991888F90A6A3A2939C8B867A938C9598B0B2B9B2B9AEA798A7A2AAACC0C3C7C5CCCBCCC8CA95818990957780869174808B99828D9397797E8590737D869278828C94797F868F737E88937C868D94747D859073808C99838D9296767F8691747F8A957F868D94768188927988949C83888A92757F89937F8B94997A81879278848F967D848991747D85917B88959B81858A9174808B988796A1A58B8D8E9578808C9B8B9BA8AD979595977A8492A094A6B6BFB5B7BABAA5A6ADB7ADB9C6CCC6C9D0D1CACACD898F8E8A838382817F8386898D94938D858582817D828285838A88888385827F7E828387888F8F8C858381807F83868A8E94938C848582807F858588878D8C8883838385858A8C8E898A87847F848387868C8D8B86878684828A8C8E8A8C89858083828383898C8C8B8C85837F85868B8F9A9F9D96918B878085868C929EA4A9A5A1988F87898D949CAAB3B9BDBEBCB8B6B4B3B4B7BEC4C9CBCECED0D0D1D0CD8A8E8C8A838281838184868E9193918E8583828280828487888B8889828180838183868D8D8F8E8D868181828183878F9293908C848381838183878B8A8A888884848688888B8B8D87858285828386898889888985858489878C8F938C8A86858082848786898B8E8A86858582858993989EA09E938A8686838689939BA4A9ACA69E96928C90949FA8B2BABFC0BFBEBBBABABABDBFC4C9CDCFD0D1D3D2D2D1CF8F8C88808881817A8A868988958F8C828A80807C88848786918A877F887F7E7B89858A8995918C838A807F7A8884898997908B818980807B8A8689858F88847D8B868884918A88818981807D8A8586838C84837D8A8485849391908B9287837C89828682908A8A838B84837E8A878D91A2A2A1969589847D8B898F95A6A9ACA7AA9D958C98979FA5B5BABEC0C5C0BFBBC0BDBFC0C7C9CDCDD3D1D2D1D5D2D2CE86888381807E7D808284868A8988847F7E7D7D7F838488898985807E7E7C7B7E81848A8D8D8A85827F7D7C7E7F81868B8A8883817D7D7D80848687888482807F8285878A888581807F7D7C7F80838383807F7C7E808083888D8E8D8A8681807F8083868A8A88858381817F81868B929BA0A29D958D858181848A919CA7ABABA9A39B9696999EA6AFB5BBBFC0C0BEBDBEBDBFC1C4C6CACCCECFCFD0D0D1D0CFCC787B77747373737679787C7A79767472716F7276797A7D7D7B767372706E7073787C80807D797574707071707476797979757272727275797B7D7D7B76717374787C7F7E7A7574727071717576777877736F717173757A7F8380807C76737474777D8082827D7A767474767B7E8791979A98928A807C787C8085909BA2A5A5A19B9593969A9FA7AEB4B6B8B9B8B7B7B8B8BABDBFC2C5C6C8C8C9C9C9C9C8C7C3
        3、编译&执行


        4、如下图所示,可以生成对应的bmp文件。


    展开全文
  • 读取一个txt文件,首先要使用文件打开函数fopen()。 fopen函数用来打开一个文件,其调用一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型指针...
  • C语言如何读取Excel或txt文件中有float型和字符串数据float型数据
  • #include<stdio.h> int main() { //定义文件指针 FILE *f = NULL;... //打开文件 ...f = fopen("1.txt","r");...printf("文件读取失败!\n"); return -1; } //读文件 const int SIZE = 100; c...
    1. #include<stdio.h>
    2. int main()
    3. {
    4.  //定义文件指针
    5. FILE *f = NULL;
    6.  //打开文件
    7. f = fopen("1.txt","r");
    8. if(f==NULL)
    9. {
    10. printf("文件读取失败!\n");
    11. return -1;
    12. }
    13.      //读文件
    14. const int SIZE = 100; 
    15. char buf[SIZE];//用字符数组做读文件的缓冲区
    16. while(!feof(f))
    17. {
    18.      //字符串方式读取文件,在读到换行、文件尾、出错的情况下停止否
    19.            //则会读到SIZE-1个字符
    20. if(fgets(buf,SIZE,f)!=NULL);
    21. {
    22. printf(buf);
    23. }
    24. }
    25. //关闭文件
    26. fclose(f);
    27. return 0;
    28. }
    29.  

    转载于:https://www.cnblogs.com/XYQ-208910/p/4708863.html

    展开全文
  • #include<stdio.h> #include<string.h> int main() { //定义文件指针 FILE *f = NULL;... //打开文件 ... f = fopen("1.txt","wt");... printf("文件读取失败!\n"); return -1; } cha...
    1. #include<stdio.h>
    2. #include<string.h>
    3. int main()
    4. {
    5. //定义文件指针
    6. FILE *f = NULL;
    7. //打开文件
    8. f = fopen("1.txt","wt");
    9. if(f==NULL)
    10. {
    11. printf("文件读取失败!\n");
    12. return -1;
    13. }
    14. char buf[1024];
    15. //写文件
    16. while(strcmp(gets(buf),"quit")!=0)
    17. {
    18.     fputs(buf,f);
    19. fputc('\n',f);
    20. }
    21. //关闭文件
    22. fclose(f);
    23. return 0;
    24. }

    转载于:https://www.cnblogs.com/XYQ-208910/p/4708868.html

    展开全文
  • printf("临时字符串的地址:%p\n",ch_1);//确保字符串分配到了地址 stop;//C语言宏 system("pause"); while(i) { do{ c=str[a]; sprintf(ch_1,"%c",c,'\0'); }while(a==1); std::cout;/...
  • C语言——文件操作(读取文件保存到结构体)

    万次阅读 多人点赞 2019-03-09 16:25:02
    之前写过一篇文章实现了文件操作任意读写,今天来实现文件操作,读取txt文件,将数据保存到结构体中。 C语言——文件操作(实现带空格字符串任意读写) 先介绍C语言中一个功能强大函数——sscanf(),它是C语言...

    之前写过一篇文章实现了文件操作的任意读写,今天来实现文件操作,读取txt文件,将数据保存到结构体中。

    先介绍C语言中一个功能强大的函数——sscanf(),它是C语言中从一个字符串中读进与指定格式相符的数据的函数。

    函数原型:

    int sscanf( string str, string fmt, mixed var1, mixed var2 ... );

    int scanf( const char *format [,argument]... );
      sscanf与scanf类似,都是用于输入的,只是后者以屏幕(stdin)为输入源,前者以固定字符串为输入源。
      其中的format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}
      注:
      1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
      2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
      3、width表示读取宽度。
      4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
      5、type :这就很多了,就是%s,%d之类。
      6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值
      支持集合操作:
      %[a-z] 表示匹配a到z中任意字符,贪婪性(尽可能多的匹配)
      %[aB'] 匹配a、B、'中一员,贪婪性
      %[^a] 匹配非a的任意字符,贪婪性

    //一、格式化输出字符串,相当于strcpy
    	sscanf("123456", "%s", str);
    	/*output 123456*/  
    //二、取指定长度的字符串 
    	sscanf("12345678", "%4s", str);   
        /*output 1234*/  
    //三、取到指定字符串为止。
    	sscanf("123456789 abcdfe", "%[^ ]", str);    
        /*output 123456789*/  
    //四、取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。
    	sscanf("89hkDFCCQQQQ", "%[1-9a-z]", str);   //123SFDAF89DFCC9QQQQsssssfdfa 
    	/*output 89hk*/     
    //五、取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。  
    	sscanf("123456789fdsafdsaDDDDDD", "%[^A-Z]", str);       
        /*output 123456789fdsafdsa*/          
    //六、取出下面字符串中数字2位为一组取出  
    	char a1[3], a2[3], a3[3]; int i1,i2;     
        sscanf("12:34:56-7890", "%2s:%2s:%2s-%2d%2d", a1, a2, a3, &i1, &i2);  
    	printf("--%s---%s----%s----%d----%d---\n", a1, a2, a3, i1, i2);  
    	/*output 12 34 56 78 90*/       
    //七、以','为分割取出下面字符串      
        char a4[10], a5[10], a6[10], a7[10];  
        sscanf("first,25.5,second,15", "%5s,%4s,%6s,%2s", a4, a5, a6, a7); 
    	/*method one*/ 
    	sscanf("first,25.5,second,15", "%[^,],%[^,],%[^,],%s", a4, a5, a6, a7);/*method two*/ 
    	printf("--%s---%lf----%s----%d--\n", a4, atof(a5), a6, atoi(a7));
    	/*output first 25.500000 seond 15*/      
    //八、给定一个字符串iios/12DDWDFF@122,获取 '/' 和 '@' 之间的字符串,  
    	//先将 "iios/"过滤掉,再将非'@'的一串内容送到buf中    
    	sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", str);     
    	/*ouput: 12DDWDFF*/           
    //九、给定一个字符串"hello, world",仅保留world。  
    	//(注意:","之后有一空格,%s遇空格停止,加*则是忽略第一个读到的字符串)   
    	sscanf("hello, world", "%*s%s", str);
    	/*output: wrold*/
    //十、处理时间分割函数  
        char a8[15], a9[15];   
    	//sscanf("2006:03:18 - 2006:04:18", "%s - %s", a8, a9); 
    	//sscanf("2006:03:18-2006:04:18", "%s-%s", a8, a9);
        //error  
        sscanf("2006:03:18-2006:04:18", "%[^-]-%s", a8, a9);
    	//method one  
    	sscanf("2006:03:18-2006:04:18", "%10s-%10s", a8, a9);
    	//method two 
    	printf("#######%s#########%s######\n", a8, a9); 
    	/*output: 2006:03:18 2006:04:18*/ 
    //十一、指定要跳过的字符串
        char a10[15], a11[15];     
    	sscanf("iosVSandroid", "%[a-z]VS%[a-z]", a10, a11);  
    	printf("###%s######%s###\n", a10, a11);   
        /*output: ios android*/     
    //十二、提取邮箱地址    
    	char a12[10], a13[10], a14[10], a15[10];  
    	sscanf("Email:beijing@sina.com.cn", "%[^:]:%[^@]@%[^.].%s", a12, a13, a14, a15);  
        printf("#####%s#######%s#######%s######%s####\n", a12, a13, a14, a15);    
    	/*output: Email  beijing  sina   com.cn*/     
    	return 0;
      } 
    

    有关结构体的相关知识在此不再介绍,大家可以参考以下链接。

    具体如何实现读取文件并保存到结构体呢,代码直接贴出:

    #include <stdio.h>
    #include <stdlib.h>
    //文件操作 格式化读取 保存到结构体数组 
    #define BUFSIZE 1000
    struct data
    {
    	char G[4];
    	float Xs;//起点坐标
    	float Ys;
    	float E;
    };
    
    int main()
    {
    	
    	FILE *fp;
    	int i,j,r_n = 0;
    	char buf[BUFSIZE],c;
    //打开文件
    	fp = fopen("E:\\line.txt", "r");
    	if (fp == NULL)
    	{
    		printf("Cannot open file!\n");
    		return 1;
    	}
    	//计算文件中数据的行数
    	while (!feof(fp))
    	{
    		c = fgetc(fp);
    		if (c == '\n') 
    			r_n++;
    	}
    	printf("r_n=%d\n", r_n);
    	rewind(fp);//将指针重置到第一行
    	struct data *line1 = NULL;
    	line1= (struct data*)malloc(sizeof(struct data)*(r_n+1)); //创建一个结构体含有(r_n+1)个数据
    	for (i = 1; i <= r_n; i++)
    	{
    		fgets(buf, BUFSIZE, fp);    //一次读取一行
    		sscanf(buf, "%s X%f Y%f E%f", &line1[i].G, &line1[i].Xs, &line1[i].Ys,&line1[i].E);//分别跳过XYE读取数据
    	}
    //关闭文件
    	fclose(fp);
    	
    	for (i = 1; i<= r_n-1; i++)
    	{
    		
    		printf("\n%s %.3f %.3f %.3f", line1[i].G, line1[i].Xs, line1[i].Ys,&line1[i].E);
    	}
    	free(line1); //释放
    	return 0;
    }
    
    
    
    

    效果图:

    展开全文
  • //->从输出结果看,未将readline中的字符串转换为整型数据,应该如何写才对? printf("list[s]=%s",list[k]); k++; } fclose(fp); //读取数据进行排序 for(i=0;i;i++) for(j=i;j;j++) if(list[i]...
  • 这个例子从文本文件ad9361.txt一行一行读取数据,通过spi设置寄存器值。支持命令读写:spidev_test -r F1 -w A0,-r参数表示寄存器地址,-w表示要写入值,均为16进制(不要加0x开头)
  • c) 设计一个或者三个带参数的宏,判断输入的字符串是否是指定的专业名称,并在函数Count中使用。 5. 编写main函数实现: a) 定义变量,其中保存学生信息的数据文件直接在源代码中初始化; b) 读取学生信息,如果...
  • 字符读写函数 读字符函数 写字符函数 C语言程序设计 fgetc)函数调用格式 字符变量=fgetc(文件指针) 函数功能 从指定的文件中读一个字符 读取文件c1.txt内容并在屏幕上输出 运行结果 语句编写
  • //读取字符串 fread(book_number, LENGTH_BOOK_NUM+1, 1,fp_books); fread(book_category, LENGTH_BOOK_CATE+1, 1,fp_books); fread(book_stock, LENGTH_BOOK_STO, 1,fp_books); num_book = atof(book_...
  • //strlen() 这个函数是返回一个字符串的字符个数,不包括结束符 '\0'; char * currenP = (char *)malloc(sizeof(char) * currentlen); strcpy(currenP, buf);//复制BUF ,buf包含整个数据库?? pArray...
  • 因还不会从Excel中直接读取数据,因此选择了从Excel导出到txt文件中,然后再读取到程序当中。 但是问题来了。经常遇到的情形是,记录都有一个或者多个字段是字符型(数据库中的描述,非C语言的字符),从Excel中导出的...
  • void token(char name[],char list[],char token[],FILE *table) //将两个文件的字符串分别切割转换为token串 {  FILE *in,*out; char ch,c,buffer[N],*link[M]; int i=0,j=0,k=0,LenLink=0; if((in=...
  • 13.第十三章 文件.txt

    2019-11-08 16:33:27
    ·“文件名”是被打开文件的文件名,是字符串常量或字符串数组。 ·“使用文件方式”是指文件的类型和操作要求。 如: FILE *fp; fp=fopen("file1.txt","r"); 其意义是在当前目录下打开文件file1.txt...
  • //fputs将该字符串写入文件stdout,但并不写入结尾'\0'。 //第三个参数指明buf参数 第四个参数一般置0。 //在datafile中遍历得出答案,并放入缓冲区。 //strcpy(buf,reply(buf)); fp = fopen("C...
  • else{ //若为空字符,则检索当前TempChar中保存的字符串是否为常用词 Ignore = FALSE; //若Ignore为TRUE,则为常用词;为FALSE则不是常用词 for(m = 0;m;m++){ //查找是否为常用词 if(strcmp(TempChar,oftenwords[m...
  • c语言3月23日学习总结

    2015-03-24 22:01:58
    1.数据块读写函数fread和write/* fwrite 和 fread 是数据的写入和读取的函数 每次读写一块数据,不是... fwrite 写入数据文件中 1) 字符串 FILE *fp = fopen("fwriteString.txt","w"); if(fp!=NULL){ // fwrite(bu
  • │ 题目63字符串移动.txt │ 题目79整除.txt │ 题目90序列重排.txt │ 题目19字符串查找.txt │ ├─f(p) │ 题目08.txt │ 题目18.txt │ 题目36.txt │ 题目37.txt │ 题目56.txt │ 题目62.txt ...
  • (5)编写一个程序实现如下功能:从键盘输入字符(最多为80个),遇到回车键输入结束,将输入的字符串按奇偶位置拆分,奇数位上的字符在前,偶数位上的字符在后,重新组成新的字符串输出,例如输入: ab12cd3456fg,...
  • /*将输入发字符串拷贝到字符串t中*/ } int Add(RECORD temp[],int n) /*增加通讯记录*/ { char ch,num[10]; int i,flag=0; system("cls"); Disp(temp,n); /*先打印出已有通讯录信息*/ while(1) /*一次可...
  • 背景:使用c语言实现,进行从.txt文件来进行增删改查排序读取存储功能。 1.当使用scanf读取字符时回车也是字符串,会被scanf读取 2.定义整型变量之后,使用scanf为这个变量赋值时候,不能使用键盘输入字符,...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    文件为doc版,可自行转成txt,在手机上看挺好。 本资源来自网络,如有纰漏还请告知,如觉得还不错,请留言告知后来人,谢谢!!!!! 入门学习Linux常用必会60个命令实例详解 Linux必学60个命令 Linux提供...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

c语言读取txt文件的字符串数据

c语言 订阅