文件处理方法、装置、设备和计算机可读存储介质与流程

文档序号:17549112发布日期:2019-04-30 18:07阅读:165来源:国知局
文件处理方法、装置、设备和计算机可读存储介质与流程
本申请涉及数据安全
技术领域
,尤其涉及一种文件处理方法、装置、设备和计算机可读存储介质。
背景技术
:随着互联网技术和资源共享技术的发展,客户端可以方便地访问服务器中的文件。在很多情况下,客户端会将服务器中的文件下载至本地。但是在客户端下载文件至本地的过程中,文件可能被篡改,这就导致客户端在访问下载至本地的文件时,容易使客户端数据遭到破坏、更改和泄露,安全性不高。为了提高客户端数据的安全性。通常的做法是服务器对文件进行加密处理。客户端在校验文件时,需要先对接收到的加密文件进行解密处理,再对解密后的文件进行校验。但是上述做法会影响客户端校验文件的速度。尤其在高频次读取文件和多文件同时处理时,上述问题尤为突出;原因在于在高频次读取文件和多文件同时处理时,频繁的对文件进行解密处理以及多文件同时解密,会占用较多客户端资源。技术实现要素:本申请实施例提供一种文件处理方法、装置、设备和计算机可读存储介质,能够提高文件校验速度。第一方面,本申请实施例提供了一种文件处理方法,方法包括:从文件容器中,选择一个或多个文件;获取所选择的每一文件相对于文件容器的位置信息;计算所选择的每一文件的校验值;将位置信息和校验值存储于用于文件校验的第一文件中;发送文件容器和第一文件。第二方面,本申请实施例提供了一种文件处理方法,方法包括:接收文件容器和第一文件,第一文件中存储有文件容器中的一个或多个文件相对于文件容器的位置信息以及文件的校验值;接收针对文件容器中的文件的校验指令;依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验。第三方面,本申请实施例提供了一种文件处理装置,装置包括:选择模块,用于从文件容器中,选择一个或多个文件;获取模块,用于获取所选择的每一文件相对于文件容器的位置信息;计算模块,用于计算所选择的每一文件的校验值;存储模块,用于将位置信息和校验值存储于用于文件校验的第一文件中;发送模块,用于发送文件容器和第一文件。第四方面,本申请实施例提供了一种文件处理装置,装置包括:第一接收单元,用于接收文件容器和第一文件,第一文件中存储有文件容器中的一个或多个文件相对于文件容器的位置信息以及文件的校验值;第二接收单元,用于接收针对文件容器中的文件的校验指令;检验单元,用于依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验。第五方面,本申请实施例提供了一种文件处理设备,设备包括:存储器和处理器;存储器用于存储可执行程序代码;处理器用于读取存储器中存储的可执行程序代码以执行本申请实施例第一方面或第二方面提供的文件处理方法。第六方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令;计算机程序指令被处理器执行时实现本申请实施例第一方面或第二方面提供的文件处理方法。本申请实施例的文件处理方法、装置、设备及计算机可读存储介质,能够提高文件校验速度。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了本申请实施例提供的文件处理方法的第一种流程示意图;图2示出了本申请实施例提供的文件处理方法的第二种流程示意图;图3示出了本申请实施例提供的文件处理装置的第一种结构示意图;图4示出了本申请实施例提供的文件处理装置的第二种结构示意图;图5示出了能够实现根据本申请实施例的文件处理方法的计算设备的第一种示例性硬件架构的结构图;图6示出了能够实现根据本申请实施例的文件处理方法的计算设备的第二种示例性硬件架构的结构图。具体实施方式下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本申请,并不被配置为限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。鉴于目前文件校验速度慢的问题,基于尽可能少的对文件加密和解密,来提高文件的校验速度的思想,本申请实施例提供了一种文件处理方法。发送端设备获取文件的相对位置信息并计算文件的校验值,将存储有相对位置信息和校验值的文件发送给接收端设备。接收端设备依据接收到的文件中的相对位置信息和校验值进行校验操作。无需再对文件进行加密,能够提高文件校验速度。需要说明的是,本申请实施例提供的文件处理方法,可以应用于客户端从服务器获得文件进行校验的场景,也可以应用于一个移动终端从另一个移动终端获得文件进行校验的场景,也可以应用于移动终端从pc端获得文件进行校验的场景,也可以应用于pc端从移动终端获得文件进行校验的场景,等等。图1示出了本申请实施例提供的文件处理方法的第一种流程示意图。其可以包括:s101:从文件容器中,选择一个或多个文件。s102:获取所选择的每一文件相对于文件容器的位置信息。s103:计算所选择的每一文件的校验值。s104:将位置信息和校验值存储于用于文件校验的第一文件中。s105:发送文件容器和第一文件。在本申请的一个实施例中,文件容器可以为文件夹,也可以压缩包,还可以为程序安装包。下面本申请实施例提供的文件处理方法应用于客户端从服务器获得文件进行校验的场景且文件容器为压缩包为例进行说明。假设,服务器中存储有压缩包a。压缩包a中存在文件夹a1、文件夹a2、文件夹a3以及文件x,文件夹a1中存在文件夹a11和文件夹a12,文件夹a3中存在文件y。从压缩包a中选择的文件为文件y。在本申请的一个实施例中,可以依据用户针对文件的选择操作来选择文件。获取文件y相对于压缩包a的位置信息。在本申请的一个实施例中,位置信息可以为路径信息。则获取的路径信息为:“../a3/y”。计算文件y的校验值。在本申请的一个实施例中,校验值可以为哈希值。本申请实施例并不对计算哈希值所采用的算法进行限定,可以采用md5算法或者sha-1算法等计算文件的哈希值。假设计算得到的文件y的哈希值为:47bce5c74f589f4867dbd57e9ca9f808。将获得的文件y相对于压缩包a的路径信息“../a3/y”和计算得到的文件y的哈希值“47bce5c74f589f4867dbd57e9ca9f808”存储在一特定文件中,比如index.list中。将压缩包a和文件index.list发送给客户端。客户端在接收到压缩包a和文件index.list后,依据文件index.list中存储的路径信息和哈希值对文件y进行校验。在本申请的一个实施例中,将位置信息和校验值存储于用于文件校验的第一文件中,可以包括:按照预设格式,将位置信息和校验值存储于用于文件校验的第一文件中。示例性的,假设预设格式为表格式。index.list中存储的路径信息和哈希值如表1所示。表1文件名称路径哈希值y../a3/y47bce5c74f589f4867dbd57e9ca9f808示例性的,假设预设格式为键值对格式。index.list中存储的路径信息和哈希值如下表示。文件y.路径=../a3/y;文件y.哈希值=47bce5c74f589f4867dbd57e9ca9f808。在本申请的一个实施例中,发送文件容器和第一文件,可以包括:发送第一文件和包含所选择的一个或多个文件的文件夹或压缩包或程序安装包;或,发送同时包含所选择的一个或多个文件和第一文件的文件夹或压缩包或程序安装包。示例性的,将压缩包a和文件index.list发送给客户端。再示例性的,将包含有文件index.list的压缩包a发送给客户端。需要说明的是,在将包含有文件index.list的压缩包a发送给客户端之前,需要先将文件index.list添加在压缩包a。基于此,在本申请的一个实施例中,在发送同时包含所选择的一个或多个文件和第一文件的文件夹或压缩包或程序安装包之前,本申请实施例提供的文件处理方法还可以包括:将第一文件添加在包含所选择的一个或多个文件的文件夹或压缩包或程序安装包中。在本申请的一个实施例中,还可以将文件index.list添加在压缩包a中预先设定的位置,比如:压缩包a的根目录。可以理解的是,当文件index.list添加在压缩包a的根目录后,压缩包a中存在文件夹a1、文件夹a2、文件夹a3、文件x以及文件index.list,文件夹a1中存在文件夹a11和文件夹a12,文件夹a3中存在文件y。基于此,在本申请的一个实施例中,将第一文件添加在包含所选择的一个或多个文件的文件夹或压缩包或程序安装包中,可以包括:将第一文件添加在包含所选择的一个或多个文件的文件夹或压缩包或程序安装包中预先设定的位置。在本申请的一个实施例中,还可以对文件index.list进行加密。相应的,客户端在依据文件index.list对文件进行校验之前,需要对文件index.list进行解密。基于此,在本申请的一个实施例中,在发送同时包含所选择的一个或多个文件和第一文件的文件夹或压缩包或程序安装包之前,本申请实施例提供的文件处理方法还可以包括:加密第一文件。需要说明的是,本申请实施例并不对加密第一文件所采用的算法进行限定,任何加密算法均可应用本申请实施例中。图2示出了本申请实施例提供的文件处理方法的第二种流程示意图。其可以包括:s201:接收文件容器和第一文件。其中,第一文件中存储有文件容器中的一个或多个文件相对于文件容器的位置信息以及文件的校验值。s202:接收针对文件容器中的文件的校验指令。s203:依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验。下面以相应于图1所示实施例中的示例为例进行说明。客户端在接收到压缩包a和文件index.list,并且接收到针对压缩包a中的文件y的校验指令后,依据文件index.list中存储的文件y相对于压缩包a的路径信息和文件y的哈希值对文件y进行校验。具体的,获取文件y相对于接收到的压缩包a的路径信息。匹配获取到的路径信息和文件index.list中存储的文件y相对于压缩包a的路径信息。若两个路径信息不匹配,则确认文件y校验失败。若两个路径信息匹配,则计算文件y的哈希值。匹配所计算的哈希值与和文件index.list中存储的文件y的哈希值。若两个哈希值不匹配,则确认文件y校验失败。若两个哈希值匹配,则确认文件y校验成功。基于上述描述,在本申请的一个实施例中,依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验,可以包括:获取第二文件相对于接收到的文件容器的位置信息;匹配所获取的位置信息与第一文件中存储的第二文件相对于文件容器的位置信息;若两个位置信息不匹配,确认第二文件检验失败;若两个位置信息匹配,计算第二文件的校验值;匹配所计算的校验值与第一文件中存储的第二文件的校验值;若两个校验值不匹配,确认第二文件检验失败;若两个校验值匹配,确认第二文件检验成功。其中,校验值可以为哈希值。在本申请的一个实施例中,在服务器对文件index.list进行加密的情况下,客户端在依据文件index.list对文件进行校验之前,需要对文件index.list进行解密。基于此,在本申请的一个实施例中,在依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验之前,本申请实施例提供的文件处理方法还可以包括:解密第一文件。在本申请的一个实施例中,在服务器按照预设格式,将文件y相对于压缩包a的路径信息和文件y的哈希值存储在文件index.list中的情况下,客户端在依据文件index.list对文件进行校验之前,需要先检测文件index.list包括的路径信息和哈希值是否按照预设格式存储,若检测到文件index.list中的路径信息和哈希值没有按照预设格式存储,表示文件index.list被篡改,进而可以确定出压缩包a中的其他文件也有可能被篡改,此时不再进行文件校验,直接提示校验失败。只有在检测到文件index.list中的路径信息和哈希值按照预设格式存储时,才依据文件index.list对文件进行校验。基于上述描述,在本申请的一个实施例中,在依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验之前,本申请实施例提供的文件处理方法还可以包括:检测第一文件包括的位置信息和校验值是否按照预设格式存储;若第一文件包括的位置信息和校验值按照预设格式存储,则执行依据第一文件包括的位置信息和校验值,对第二文件进行校验。在本申请的一个实施例中,在服务器将文件index.list添加在压缩包a中的情况下,客户端接收包含有文件index.list的压缩包a。基于此,在本申请的一个实施例中,接收文件容器和第一文件,可以包括:接收包含有第一文件的文件容器。在本申请的一个实施例中,客户端在接收到压缩包a后,可以先检测压缩包a中是否存在文件index.list,若检测到压缩包a中不存在文件index.list,表示压缩包a被篡改,进而可以确定出压缩包a中的其他文件也有可能被篡改,此时不再进行文件校验,直接提示校验失败。只有在检测到压缩包a中存在文件index.list时,才依据文件index.list对文件进行校验。基于此,在本申请的一个实施例中,在依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验之前,本申请实施例提供的文件处理方法还可以包括:检测接收到文件容器中是否存在第一文件;若接收到的文件容器中存在第一文件,则执行依据第一文件包括的位置信息和校验值,对第二文件进行校验。在本申请的一个实施例中,客户端在接收到压缩包a且检测到压缩包中存在文件index.list后,可以先检测文件index.list是否存储在压缩包a的根目录中,若检测到文件index.list没有存储在压缩包a的根目录中,表示文件index.list被移动,进而可以确定出压缩包a中的其他文件有可能被篡改,此时不再进行文件校验,直接提示校验失败。只有在检测到文件index.list存储在压缩包a的根目录中时,才依据文件index.list对文件进行校验。基于此,在本申请的一个实施例中,在依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验之前,本申请实施例提供的文件处理方法还可以包括:检测第一文件是否存储在文件容器中预先设定的位置;若第一文件存储在文件容器中预先设定的位置,则执行依据第一文件包括的位置信息和校验值,对第二文件进行校验。在本申请的一个实施例中,上述校验指令可以为文件读取指令。在本申请的一个实施例中,当上述校验指令为文件读取指令时,若文件y校验成功,则读取文件y。本申请实施例的提供的文件处理方法还可以包括:若第二文件校验成功,读取第二文件。在本申请的一个实施例中,若文件y校验成功,可以将文件y对应的路径信息和哈希值加载至内存缓存中。当再次接收到针对文件y的文件读取指令时,可以直接从内存缓存中获取文件y对应的路径信息和哈希值,进一步提高针对文件y的校验效率。基于此,本申请实施例提供的文件处理方法还可以包括:将第二文件对应的位置信息和校验值加载至内存缓存中。在本申请的一个实施例中,若文件y校验成功,还可以将文件y的内容加载至内存缓存中。当再次接收到针对文件y的读取指令时,可以直接从内存缓存中获取文件y的内容,提高针对文件y的读取效率。基于此,基于此,本申请实施例提供的文件处理方法还可以包括:将第二文件的内容加载至内存缓存中。需要说明的是,上述以文件y、文件index.list和压缩包a为例进行说明,仅为本申请的一具体实例并不构成对本申请的限定。需要说明的是,上述以服务器和客户端为例进行说明,仅为本申请的一具体实例并不构成对本申请的限定。通常上述过程可以看出,本申请实施例的文件处理方法可以应用于接收方从发送方获取文件,为了保证接收方中数据的安全性以及提高对从发送方接收到的文件的读取效率的场景。本申请实施例的文件处理方法还可以应用于本地设备。当应用于本地设备时,无需发送和接收文件容器和第一文件。本申请实施例提供的文件处理方法可以通过文件处理装置来实现。如图3所示,图3示出了本申请实施例提供的文件处理装置的第一种结构示意图。其可以包括:选择模块301,用于从文件容器中,选择一个或多个文件;获取模块302,用于获取所选择的每一文件相对于文件容器的位置信息;计算模块303,用于计算所选择的每一文件的校验值;存储模块304,用于将位置信息和校验值存储于用于文件校验的第一文件中;发送模块305,用于发送文件容器和第一文件。在本申请的一个实施例中,存储模块304,具体可以用于:按照预设格式,将位置信息和校验值存储于用于文件校验的第一文件中。在本申请的一个实施例中,文件处理装置还可以包括:加密模块,用于加密第一文件。在本申请的一个实施例中,文件容器包括以下所列项中的任意一种:文件夹、压缩包和程序安装包。在本申请的一个实施例中,发送模块305,具体可以用于:发送第一文件和包含所选择的一个或多个文件的文件夹或压缩包或程序安装包;或,发送同时包含所选择的一个或多个文件和第一文件的文件夹或压缩包或程序安装包。在本申请的一个实施例中,文件处理装置还可以包括:添加模块,用于将第一文件添加在包含所选择的一个或多个文件的文件夹或压缩包或程序安装包中。在本申请的一个实施例中,添加模块,具体可以用于:将第一文件添加在包含所选择的一个或多个文件的文件夹或压缩包或程序安装包中预先设定的位置。在本申请的一个实施例中,位置信息可以包括:路径数据。在本申请的一个实施例中,校验值可以包括:哈希值。本申请实施例提供的文件处理方法可以通过文件处理装置来实现。如图4所示,图4示出了本申请实施例提供的文件处理装置的第二种结构示意图。其可以包括:第一接收单元401,用于接收文件容器和第一文件,第一文件中存储有文件容器中的一个或多个文件相对于文件容器的位置信息以及文件的校验值;第二接收单元402,用于接收针对文件容器中的文件的校验指令;检验单元403,用于依据第一文件包括的位置信息和校验值,对校验指令对应的第二文件进行校验。在本申请的一个实施例中,检验单元403,具体可以用于:获取第二文件相对于接收到的文件容器的位置信息;匹配所获取的位置信息与第一文件中存储的第二文件相对于文件容器的位置信息;若两个位置信息不匹配,确认第二文件检验失败;若两个位置信息匹配,计算第二文件的校验值;匹配所计算的校验值与第一文件中存储的第二文件的校验值;若两个校验值不匹配,确认第二文件检验失败;若两个校验值匹配,确认第二文件检验成功。在本申请的一个实施例中,文件处理装置还可以包括:解密单元,用于解密第一文件。在本申请的一个实施例中,文件处理装置还可以包括:检测单元,用于检测第一文件包括的位置信息和校验值是否按照预设格式存储;若第一文件包括的位置信息和校验值按照预设格式存储,则执行依据第一文件包括的位置信息和校验值,对第二文件进行校验。在本申请的一个实施例中,校验指令为文件读取指令。在本申请的一个实施例中,文件处理装置还可以包括:读取单元,用于若第二文件校验成功,读取第二文件。在本申请的一个实施例中,文件处理装置还可以包括:加载单元,用于将第二文件对应的位置信息和校验值加载至内存缓存中。在本申请的一个实施例中,加载单元还可以用于:将第二文件的内容加载至内存缓存中。在本申请的一个实施例中,第一接收单元401,具体可以用于:接收包含有第一文件的文件容器。在本申请的一个实施例中,检测单元还可以用于:检测接收到文件容器中是否存在第一文件;若接收到的文件容器中存在第一文件,则执行依据第一文件包括的位置信息和校验值,对第二文件进行校验。在本申请的一个实施例中,文件容器包括以下所列项中的任意一种:文件夹、压缩包和程序安装包。在本申请的一个实施例中,位置信息包括:路径数据。在本申请的一个实施例中,校验值包括:哈希值。图5示出了能够实现根据本申请实施例的文件处理方法的计算设备的第一种示例性硬件架构的结构图。如图5所示,计算设备500包括输入设备501、输入接口502、中央处理器503、存储器504、输出接口505、以及输出设备506。其中,输入接口502、中央处理器503、存储器504、以及输出接口505通过总线510相互连接,输入设备501和输出设备506分别通过输入接口502和输出接口505与总线510连接,进而与计算设备500的其他组件连接。具体地,输入设备501接收来自外部的输入信息,并通过输入接口502将输入信息传送到中央处理器503;中央处理器503基于存储器504中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器504中,然后通过输出接口505将输出信息传送到输出设备506;输出设备506将输出信息输出到计算设备500的外部供用户使用。也就是说,图5所示的计算设备也可以被实现为一种文件处理设备,该文件处理设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现图1描述的文件处理方法。本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现图1描述的文件处理方法。图6示出了能够实现根据本申请实施例的文件处理方法的计算设备的第二种示例性硬件架构的结构图。如图6所示,计算设备600包括输入设备601、输入接口602、中央处理器603、存储器604、输出接口605、以及输出设备606。其中,输入接口602、中央处理器603、存储器604、以及输出接口605通过总线610相互连接,输入设备601和输出设备606分别通过输入接口602和输出接口605与总线610连接,进而与计算设备600的其他组件连接。具体地,输入设备601接收来自外部的输入信息,并通过输入接口602将输入信息传送到中央处理器603;中央处理器603基于存储器604中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器604中,然后通过输出接口605将输出信息传送到输出设备606;输出设备606将输出信息输出到计算设备600的外部供用户使用。也就是说,图6所示的计算设备也可以被实现为一种文件处理设备,该文件处理设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现图2描述的文件处理方法。本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现图2描述的文件处理方法。需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1