CN106354497A - 一种基于文件签名的版本管理方法和*** - Google Patents
一种基于文件签名的版本管理方法和*** Download PDFInfo
- Publication number
- CN106354497A CN106354497A CN201610721031.5A CN201610721031A CN106354497A CN 106354497 A CN106354497 A CN 106354497A CN 201610721031 A CN201610721031 A CN 201610721031A CN 106354497 A CN106354497 A CN 106354497A
- Authority
- CN
- China
- Prior art keywords
- version
- file
- ver
- current
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于文件签名的版本管理方法和***,所述的方法包括版本管理文件夹建立步骤S1和版本管理步骤S2;所述版本管理文件夹建立步骤S1包括:建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;所述版本管理步骤S2包括版本校验、版本更新和版本查看三种情况。本发明在版本管理过程中,能够对版本信息进行校验,进而保证版本信息的正确性,避免了版本信息与版本文件不对应的问题;在两个版本不一致时,通过能够比对两个版本对应的.ver文件中版本依赖文件的Hash值,精确查找出具体不一致的版本依赖文件,进而能够非常方便地通过替换不一致文件以完成版本更新。
Description
技术领域
本发明涉及一种基于文件签名的版本管理方法和***。
背景技术
在前期的软件开发过程中还是在后期的***维护过程中,版本管理都有着非常重要的作用。
传统的版本管理方法根据逻辑版本代号(写在程序代码里或者某个文件中的)获取版本信息,这种方法存在着两个主要的不足:一是版本不一致时不能精确到具体不一致的文件;二是获取的版本信息不一定是正确的。
因为传统版本管理方法获取版本信息是根据逻辑版本代号获取的,而同时版本不一致时不能精确到具体不一致的文件,因此版本更新过程中需要对软件或者程序的最新版本进行重新下载或者安装,为版本更新带来了很大不便;并且如果版本文件已经更新,而写有逻辑版本代号的源代码或文件没有更新的话,获取到的版本信息仍为旧版本信息,这正是因为忽略了文件的校验过程而造成的版本信息不正确。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于文件签名的版本管理方法和***,能够对版本信息进行校验,进而保证版本信息的正确性。
本发明的目的是通过以下技术方案来实现的:一种基于文件签名的版本管理方法,包括以下步骤:
S1.建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
S2.通过.ver文件对版本进行管理,分为以下三种情况:
(1)版本校验:通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
(2)版本更新,通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
(3)版本查看,通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
所述的版本校验包括以下子步骤:
S211.按照.ver文件的生成方法生成校验版本.ver文件;
S212.按照.ver文件的比较方法,比较所述校验版本.ver文件与当前版本.ver文件:
(1)如果校验版本.ver文件与当前版本.ver文件相同,校验版本与当前版本一致,删除校验版本.ver文件:
(2)如果校验版本.ver文件与当前版本.ver文件不相同,校验版本与当前版本不一致,进入步骤S213;
S213.将当前版本.ver文件移至历史版本信息的文件夹中,并将校验版本.ver文件存入当前版本信息的文件夹中。
所述的版本更新包括以下子步骤:
S221.按照.ver文件的生成方法生成更新版本.ver文件;
S222.按照.ver文件比较方法,比较所述更新版本.ver文件与当前版本.ver文件:
(1)如果更新版本.ver文件与当前版本.ver文件相同,当前版本与更新版本一致,不需要更新,删除更新版本.ver文件;
(2)如果更新版本.ver文件与当前版本.ver文件不相同,当前版本与更新版本不一致,进入步骤S223;
S223.对当前版本进行更新。
所述.ver文件的生成方法包括以下子步骤:
第一步,递归获取目标版本中的文件,并从中筛选出版本依赖文件:
找到目标版本的安装目录;采用递归的算法依次获取安装目录中的所有文件;依次检查获取的文件,根据文件的扩展名舍弃不影响版本变化的文件,筛选出与版本变化相关的文件,称为版本依赖文件;
第二步,生成.ver文件:
对每一个版本依赖文件分别做Hash运算;将版本依赖文件和版本依赖文件Hash值信息依次写入一个文件,记录这些信息的文件即为.ver文件。
所述.ver文件的比较方法包括以下子步骤:
第一步,比较两个.ver文件的基础属性:
(1)如果两个.ver文件的基础属性相同,进入第二步;
(2)如果两个.ver文件的基础属性不同,两个.ver文件不相同,两个.ver文件对应的版本不一致;
第二步,比较两个.ver文件中版本依赖文件的Hash值:
(1)如果两个.ver文件中对应版本依赖文件的哈希值相同,两个.ver文件相同;对应版本一致;
(2)如果两个.ver文件中对应版本依赖文件的哈希值不同,两个.ver文件不相同,对应版本不一致。
所述的基础属性包括文件大小、修改日期。
所述步骤S223包括:比对两个版本对应的版本依赖文件的Hash值,查找出不一致的版本依赖文件,替换当前版本中不一致的版本依赖文件完成版本更新,同时将当前版本.ver文件移至历史版本信息文件夹中,将更新版本.ver文件存入当前版本信息文件夹中。
一种基于文件签名的版本管理***,包括:
文件夹建立模块,用于建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
版本管理模块,用于通过.ver文件对版本进行管理。
所述的版本管理模块包括:
版本校验单元,用于通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
版本更新单元,用于通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
版本查看单元,用于通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
本发明的有益效果是:在版本管理过程中,能够对版本信息进行校验,进而保证版本信息的正确性,避免了版本信息与版本文件不对应的问题;在两个版本不一致时,通过能够比对两个版本对应的.ver文件中版本依赖文件的Hash值,精确查找出具体不一致的版本依赖文件,进而能够非常方便地通过替换不一致文件以完成版本更新。
附图说明
图1为本发明的流程图;
图2为版本校验的流程图;
图3为版本更新的流程图;
图4为.ver文件生成的流程图;
图5为.ver文件比较流程图;
图6为本发明的***原理框图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,一种基于文件签名的版本管理方法,包括以下步骤:
S1.建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
S2.通过.ver文件对版本进行管理,分为以下三种情况:
(1)版本校验:通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
(2)版本更新,通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
(3)版本查看,通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
具体地,如在当前版本信息文件夹中查看当前版本.ver文件,可打开查看版本详细信息;如在历史版本信息文件夹中查看历史版本.ver文件,可打开任意.ver文件查看历史版本的详细信息。
在本申请的实施例中,版本文件(软件或者程序)未安装时,当前版本信息和历史版本信息两个子文件夹均为空;
在版本文件初次安装时(即步骤S2之前),还包括一个初始.ver文件生成步骤,按照.ver文件的生成方法,为安装的版本生成.ver文件并存放到当前版本信息文件夹中。
在步骤S2的版本管理过程中(版本更新、校验过程中),再对当前版本信息文件夹中的.ver文件进行循环更新,对历史版本信息文件夹中的.ver文件进行逐步增加。
如图2所示,所述的版本校验包括以下子步骤:
S211.按照.ver文件的生成方法生成校验版本.ver文件;
S212.按照.ver文件的比较方法,比较所述校验版本.ver文件与当前版本.ver文件:
(1)如果校验版本.ver文件与当前版本.ver文件相同,校验版本与当前版本一致,删除校验版本.ver文件:
(2)如果校验版本.ver文件与当前版本.ver文件不相同,校验版本与当前版本不一致,进入步骤S213;
S213.将当前版本.ver文件移至历史版本信息的文件夹中,并将校验版本.ver文件存入当前版本信息的文件夹中。
如图3所示,所述的版本更新包括以下子步骤:
S221.按照.ver文件的生成方法生成更新版本.ver文件;
S222.按照.ver文件比较方法,比较所述更新版本.ver文件与当前版本.ver文件:
(1)如果更新版本.ver文件与当前版本.ver文件相同,当前版本与更新版本一致,不需要更新,删除更新版本.ver文件;
(2)如果更新版本.ver文件与当前版本.ver文件不相同,当前版本与更新版本不一致,进入步骤S223;
S223.对当前版本进行更新。
如图4所示,所述.ver文件的生成方法包括以下子步骤:
第一步,递归获取目标版本中的文件,并从中筛选出版本依赖文件:
找到目标版本的安装目录;采用递归的算法依次获取安装目录中的所有文件;依次检查获取的文件,根据文件的扩展名舍弃不影响版本变化的文件(如:日志文件),筛选出与版本变化相关的文件,称为版本依赖文件;
在本申请的实施例中,递归的算法是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。即:不断地做打开文件夹的操作,直到找完安装目录下的所有文件为止。
第二步,生成.ver文件:
对每一个版本依赖文件分别做Hash运算;将版本依赖文件和版本依赖文件Hash值信息依次写入一个文件,记录这些信息的文件即为.ver文件。
Hash算法(哈希算法)将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值;哈希值是一段数据唯一且极其紧凑的数值表示形式;如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。
在本申请中,所述.ver文件包含了软件(程序)的版本信息,也可以称之为版本标志文件或版本信息文件。
如图5所示,所述.ver文件的比较方法包括以下子步骤:
第一步,比较两个.ver文件的基础属性:
(1)如果两个.ver文件的基础属性相同,进入第二步;
(2)如果两个.ver文件的基础属性不同,两个.ver文件不相同,两个.ver文件对应的版本不一致;
第二步,比较两个.ver文件中版本依赖文件的Hash值:
(1)如果两个.ver文件中对应版本依赖文件的哈希值相同,两个.ver文件相同;对应版本一致;
(2)如果两个.ver文件中对应版本依赖文件的哈希值不同,两个.ver文件不相同,对应版本不一致。
所述的基础属性包括文件大小、修改日期。
所述步骤S223包括:比对两个版本对应的版本依赖文件的Hash值,查找出不一致的版本依赖文件,替换当前版本中不一致的版本依赖文件完成版本更新,同时将当前版本.ver文件移至历史版本信息文件夹中,将更新版本.ver文件存入当前版本信息文件夹中。
如图6所示,一种基于文件签名的版本管理***,包括:
文件夹建立模块,用于建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
版本管理模块,用于通过.ver文件对版本进行管理。
所述的版本管理模块包括:
版本校验单元,用于通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
版本更新单元,用于通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
版本查看单元,用于通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
基于本申请的技术方案,能够通过.ver文件的对比实现对版本信息进行校验,进而保证版本信息的正确性,避免了版本信息与版本文件不对应的问题;在两个版本不一致时,通过能够比对两个版本对应的.ver文件中版本依赖文件的Hash值,精确查找出具体不一致的版本依赖文件,进而能够非常方便地通过替换不一致文件以完成版本更新;并且还能够根据需要随时查看当前版本和历史版本的信息。
Claims (9)
1.一种基于文件签名的版本管理方法,其特征在于:包括以下步骤:
S1.建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
S2.通过.ver文件对版本进行管理,分为以下三种情况:
(1)版本校验:通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
(2)版本更新,通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
(3)版本查看,通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
2.根据权利要求1所述的一种基于文件签名的版本管理方法,其特征在于:所述的版本校验包括以下子步骤:
S211.按照.ver文件的生成方法生成校验版本.ver文件;
S212.按照.ver文件的比较方法,比较所述校验版本.ver文件与当前版本.ver文件:
(1)如果校验版本.ver文件与当前版本.ver文件相同,校验版本与当前版本一致,删除校验版本.ver文件:
(2)如果校验版本.ver文件与当前版本.ver文件不相同,校验版本与当前版本不一致,进入步骤S213;
S213.将当前版本.ver文件移至历史版本信息的文件夹中,并将校验版本.ver文件存入当前版本信息的文件夹中。
3.根据权利要求1所述的一种基于文件签名的版本管理方法,其特征在于:所述的版本更新包括以下子步骤:
S221.按照.ver文件的生成方法生成更新版本.ver文件;
S222.按照.ver文件比较方法,比较所述更新版本.ver文件与当前版本.ver文件:
(1)如果更新版本.ver文件与当前版本.ver文件相同,当前版本与更新版本一致,不需要更新,删除更新版本.ver文件;
(2)如果更新版本.ver文件与当前版本.ver文件不相同,当前版本与更新版本不一致,进入步骤S223;
S223.对当前版本进行更新。
4.根据权利要求2或3所述的一种基于文件签名的版本管理方法,其特征在于:所述.ver文件的生成方法包括以下子步骤:
第一步,递归获取目标版本中的文件,并从中筛选出版本依赖文件:
找到目标版本的安装目录;采用递归的算法依次获取安装目录中的所有文件;依次检查获取的文件,根据文件的扩展名舍弃不影响版本变化的文件,筛选出与版本变化相关的文件,称为版本依赖文件;
第二步,并生成.ver文件:
对每一个版本依赖文件分别做Hash运算;将版本依赖文件和版本依赖文件Hash值信息依次写入一个文件,记录这些信息的文件即为.ver文件。
5.根据权利要求1所述的一种基于文件签名的版本管理方法,其特征在于:所述.ver文件的比较方法包括以下子步骤:
第一步,比较两个.ver文件的基础属性:
(1)如果两个.ver文件的基础属性相同,进入第二步;
(2)如果两个.ver文件的基础属性不同,两个.ver文件不相同,两个.ver文件对应的版本不一致;
第二步,比较两个.ver文件中版本依赖文件的Hash值:
(1)如果两个.ver文件中对应版本依赖文件的哈希值相同,两个.ver文件相同;对应版本一致;
(2)如果两个.ver文件中对应版本依赖文件的哈希值不同,两个.ver文件不相同,对应版本不一致。
6.根据权利要求5所述的一种基于文件签名的版本管理方法,其特征在于:所述的基础属性包括文件大小、修改日期。
7.根据权利要求3所述的一种基于文件签名的版本管理方法,其特征在于:所述步骤S223包括:比对两个版本对应的版本依赖文件的Hash值,查找出不一致的版本依赖文件,替换当前版本中不一致的版本依赖文件完成版本更新,同时将当前版本.ver文件移至历史版本信息文件夹中,将更新版本.ver文件存入当前版本信息文件夹中。
8.一种基于文件签名的版本管理***,其特征在于:包括:
文件夹建立模块,用于建立版本管理文件夹,并将该文件夹划分为当前版本信息和历史版本信息两个子文件夹,分别存放当前版本.ver文件和历史版本.ver文件;
版本管理模块,用于通过.ver文件对版本进行管理。
9.根据权利要求8所述的一种基于文件签名的版本管理***,其特征在于:所述的版本管理模块包括:
版本校验单元,用于通过当前版本.ver文件与校验版本.ver文件的对比,实现对当前版本的校验,保证当前版本与校验版本一致;
版本更新单元,用于通过当前版本.ver文件与更新版本.ver文件的对比,实现对当前版本的更新;
版本查看单元,用于通过版本管理文件夹中的.ver文件查看当前版本或历史版本的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610721031.5A CN106354497A (zh) | 2016-08-25 | 2016-08-25 | 一种基于文件签名的版本管理方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610721031.5A CN106354497A (zh) | 2016-08-25 | 2016-08-25 | 一种基于文件签名的版本管理方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106354497A true CN106354497A (zh) | 2017-01-25 |
Family
ID=57854659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610721031.5A Pending CN106354497A (zh) | 2016-08-25 | 2016-08-25 | 一种基于文件签名的版本管理方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106354497A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107194255A (zh) * | 2017-06-08 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件安全管理方法及装置 |
CN107908975A (zh) * | 2017-11-30 | 2018-04-13 | 北京关键科技股份有限公司 | 基于数字签名的软件技术状态控制*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214114A1 (en) * | 2010-02-26 | 2011-09-01 | Seth Kelby Vidal | Systems and methods for determining compatibility of a software package update using a version identifier |
CN102193925A (zh) * | 2010-03-05 | 2011-09-21 | 新奥特(北京)视频技术有限公司 | 一种文稿***中文稿在线多版本管理的方法和装置 |
CN102385522A (zh) * | 2010-09-03 | 2012-03-21 | Ls产电株式会社 | 用于更新固件的***和方法 |
CN103136013A (zh) * | 2011-12-01 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 软件升级方法和*** |
CN104156198A (zh) * | 2013-05-14 | 2014-11-19 | 广东电网公司信息中心 | 一种自动生成软件集成版本更新说明方法及装置 |
CN104217167A (zh) * | 2014-09-11 | 2014-12-17 | 株洲南车时代电气股份有限公司 | 一种多软件***软件版本校验方法 |
-
2016
- 2016-08-25 CN CN201610721031.5A patent/CN106354497A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110214114A1 (en) * | 2010-02-26 | 2011-09-01 | Seth Kelby Vidal | Systems and methods for determining compatibility of a software package update using a version identifier |
CN102193925A (zh) * | 2010-03-05 | 2011-09-21 | 新奥特(北京)视频技术有限公司 | 一种文稿***中文稿在线多版本管理的方法和装置 |
CN102385522A (zh) * | 2010-09-03 | 2012-03-21 | Ls产电株式会社 | 用于更新固件的***和方法 |
CN103136013A (zh) * | 2011-12-01 | 2013-06-05 | 腾讯科技(深圳)有限公司 | 软件升级方法和*** |
CN104156198A (zh) * | 2013-05-14 | 2014-11-19 | 广东电网公司信息中心 | 一种自动生成软件集成版本更新说明方法及装置 |
CN104217167A (zh) * | 2014-09-11 | 2014-12-17 | 株洲南车时代电气股份有限公司 | 一种多软件***软件版本校验方法 |
Non-Patent Citations (1)
Title |
---|
国家工商总局网络商品交易监管司: "《电子数据取证分析技术》", 31 December 2014, 中国工商出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107194255A (zh) * | 2017-06-08 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种文件安全管理方法及装置 |
CN107908975A (zh) * | 2017-11-30 | 2018-04-13 | 北京关键科技股份有限公司 | 基于数字签名的软件技术状态控制*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8832028B2 (en) | Database cloning | |
US20220214995A1 (en) | Blockchain data archiving method, apparatus, and computer-readable storage medium | |
CN103677891B (zh) | 用于选择性软件回退的方法 | |
CN103955363B (zh) | 一种程序升级安装包的制作方法 | |
EP3542298B1 (en) | Verified boot and key rotation | |
US7805765B2 (en) | Execution validation using header containing validation data | |
US10602202B1 (en) | System and techniques for digital data lineage verification | |
US20130111203A1 (en) | Method to replace bootloader public key | |
CN104408370A (zh) | 安卓***安全性验证方法及其验证装置 | |
CN108733400A (zh) | 一种App增量热更新方法及服务*** | |
US20120296878A1 (en) | File set consistency verification system, file set consistency verification method, and file set consistency verification program | |
WO2016014097A1 (en) | Ensuring data integrity of a retained file upon replication | |
CN104573527A (zh) | 一种基于更新安全机制的uefi***更新方法 | |
CN102057616B (zh) | 用于数字文档的时间管理的计算机设备 | |
WO2021218142A1 (zh) | 数据迁移方法、装置、电子设备及计算机可读存储介质 | |
CN106354497A (zh) | 一种基于文件签名的版本管理方法和*** | |
CN102236698B (zh) | 可嵌入的项目数据 | |
CN106776125B (zh) | 一种实现pc客户端软件实时修复的方法及装置 | |
WO2022179122A1 (zh) | 基于大数据的数据存储方法、装置、电子设备及存储介质 | |
US20130041868A1 (en) | Data synchronization | |
CN104504308B (zh) | 一种禁止虚拟机使用软件的许可证验证方法 | |
CN114116684A (zh) | 基于Docker容器化的深度学习大模型与大数据集版本管理方法 | |
JP2023531701A (ja) | 効率的コントローラデータ生成および抽出 | |
CN110851821A (zh) | 一种Android智能设备APK安全管控方法 | |
CN104376098A (zh) | 一种基于python的文件批量校验方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170125 |